Updated PaintWeb to the latest snapshot.
[moodle/mihaisucan.git] / lib / paintweb / docs / api-ref / symbols / src / src_interfaces_default_script.js.html
blob8113e75ae0aeeac2cf06848a9db919347886a9de
1 <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
2 .KEYW {color: #933;}
3 .COMM {color: #bbb; font-style: italic;}
4 .NUMB {color: #393;}
5 .STRN {color: #393;}
6 .REGX {color: #339;}
7 .line {border-right: 1px dotted #666; color: #666; font-style: normal;}
8 </style></head><body><pre><span class='line'> 1</span> <span class="COMM">/*
9 <span class='line'> 2</span> * Copyright (C) 2008, 2009 Mihai Şucan
10 <span class='line'> 3</span> *
11 <span class='line'> 4</span> * This file is part of PaintWeb.
12 <span class='line'> 5</span> *
13 <span class='line'> 6</span> * PaintWeb is free software: you can redistribute it and/or modify
14 <span class='line'> 7</span> * it under the terms of the GNU General Public License as published by
15 <span class='line'> 8</span> * the Free Software Foundation, either version 3 of the License, or
16 <span class='line'> 9</span> * (at your option) any later version.
17 <span class='line'> 10</span> *
18 <span class='line'> 11</span> * PaintWeb is distributed in the hope that it will be useful,
19 <span class='line'> 12</span> * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 <span class='line'> 13</span> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 <span class='line'> 14</span> * GNU General Public License for more details.
22 <span class='line'> 15</span> *
23 <span class='line'> 16</span> * You should have received a copy of the GNU General Public License
24 <span class='line'> 17</span> * along with PaintWeb. If not, see &lt;http://www.gnu.org/licenses/>.
25 <span class='line'> 18</span> *
26 <span class='line'> 19</span> * $URL: http://code.google.com/p/paintweb $
27 <span class='line'> 20</span> * $Date: 2009-07-29 14:09:30 +0300 $
28 <span class='line'> 21</span> */</span><span class="WHIT">
29 <span class='line'> 22</span>
30 <span class='line'> 23</span> </span><span class="COMM">/**
31 <span class='line'> 24</span> * @author &lt;a lang="ro" href="http://www.robodesign.ro/mihai">Mihai Şucan&lt;/a>
32 <span class='line'> 25</span> * @fileOverview The default PaintWeb interface code.
33 <span class='line'> 26</span> */</span><span class="WHIT">
34 <span class='line'> 27</span>
35 <span class='line'> 28</span> </span><span class="COMM">/**
36 <span class='line'> 29</span> * @class The default PaintWeb interface.
37 <span class='line'> 30</span> *
38 <span class='line'> 31</span> * @param {PaintWeb} app Reference to the main paint application object.
39 <span class='line'> 32</span> */</span><span class="WHIT">
40 <span class='line'> 33</span> </span><span class="NAME">pwlib.gui</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">app</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
41 <span class='line'> 34</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">_self</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT">
42 <span class='line'> 35</span> </span><span class="WHIT"> </span><span class="NAME">config</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">app.config</span><span class="PUNC">,</span><span class="WHIT">
43 <span class='line'> 36</span> </span><span class="WHIT"> </span><span class="NAME">doc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">app.doc</span><span class="PUNC">,</span><span class="WHIT">
44 <span class='line'> 37</span> </span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">app.lang</span><span class="PUNC">,</span><span class="WHIT">
45 <span class='line'> 38</span> </span><span class="WHIT"> </span><span class="NAME">MathRound</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Math.round</span><span class="PUNC">,</span><span class="WHIT">
46 <span class='line'> 39</span> </span><span class="WHIT"> </span><span class="NAME">pwlib</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">window.pwlib</span><span class="PUNC">,</span><span class="WHIT">
47 <span class='line'> 40</span> </span><span class="WHIT"> </span><span class="NAME">appEvent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pwlib.appEvent</span><span class="PUNC">,</span><span class="WHIT">
48 <span class='line'> 41</span> </span><span class="WHIT"> </span><span class="NAME">win</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">app.win</span><span class="PUNC">;</span><span class="WHIT">
49 <span class='line'> 42</span>
50 <span class='line'> 43</span> </span><span class="WHIT"> </span><span class="NAME">this.app</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">app</span><span class="PUNC">;</span><span class="WHIT">
51 <span class='line'> 44</span> </span><span class="WHIT"> </span><span class="NAME">this.idPrefix</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'paintweb'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">app.UID</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'_'</span><span class="PUNC">,</span><span class="WHIT">
52 <span class='line'> 45</span> </span><span class="WHIT"> </span><span class="NAME">this.classPrefix</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'paintweb_'</span><span class="PUNC">;</span><span class="WHIT">
53 <span class='line'> 46</span>
54 <span class='line'> 47</span> </span><span class="WHIT"> </span><span class="COMM">/**
55 <span class='line'> 48</span> * Holds references to DOM elements.
56 <span class='line'> 49</span> * @type Object
57 <span class='line'> 50</span> */</span><span class="WHIT">
58 <span class='line'> 51</span> </span><span class="WHIT"> </span><span class="NAME">this.elems</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
59 <span class='line'> 52</span>
60 <span class='line'> 53</span> </span><span class="WHIT"> </span><span class="COMM">/**
61 <span class='line'> 54</span> * Holds references to input elements associated to the PaintWeb configuration
62 <span class='line'> 55</span> * properties.
63 <span class='line'> 56</span> * @type Object
64 <span class='line'> 57</span> */</span><span class="WHIT">
65 <span class='line'> 58</span> </span><span class="WHIT"> </span><span class="NAME">this.inputs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
66 <span class='line'> 59</span>
67 <span class='line'> 60</span> </span><span class="WHIT"> </span><span class="COMM">/**
68 <span class='line'> 61</span> * Holds references to DOM elements associated to configuration values.
69 <span class='line'> 62</span> * @type Object
70 <span class='line'> 63</span> */</span><span class="WHIT">
71 <span class='line'> 64</span> </span><span class="WHIT"> </span><span class="NAME">this.inputValues</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
72 <span class='line'> 65</span>
73 <span class='line'> 66</span> </span><span class="WHIT"> </span><span class="COMM">/**
74 <span class='line'> 67</span> * Holds references to DOM elements associated to color configuration
75 <span class='line'> 68</span> * properties.
76 <span class='line'> 69</span> *
77 <span class='line'> 70</span> * @type Object
78 <span class='line'> 71</span> * @see pwlib.guiColorInput
79 <span class='line'> 72</span> */</span><span class="WHIT">
80 <span class='line'> 73</span> </span><span class="WHIT"> </span><span class="NAME">this.colorInputs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
81 <span class='line'> 74</span>
82 <span class='line'> 75</span> </span><span class="WHIT"> </span><span class="COMM">/**
83 <span class='line'> 76</span> * Holds references to DOM elements associated to each tool registered in the
84 <span class='line'> 77</span> * current PaintWeb application instance.
85 <span class='line'> 78</span> *
86 <span class='line'> 79</span> * @private
87 <span class='line'> 80</span> * @type Object
88 <span class='line'> 81</span> */</span><span class="WHIT">
89 <span class='line'> 82</span> </span><span class="WHIT"> </span><span class="NAME">this.tools</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
90 <span class='line'> 83</span>
91 <span class='line'> 84</span> </span><span class="WHIT"> </span><span class="COMM">/**
92 <span class='line'> 85</span> * Holds references to DOM elements associated to PaintWeb commands.
93 <span class='line'> 86</span> *
94 <span class='line'> 87</span> * @private
95 <span class='line'> 88</span> * @type Object
96 <span class='line'> 89</span> */</span><span class="WHIT">
97 <span class='line'> 90</span> </span><span class="WHIT"> </span><span class="NAME">this.commands</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
98 <span class='line'> 91</span>
99 <span class='line'> 92</span> </span><span class="WHIT"> </span><span class="COMM">/**
100 <span class='line'> 93</span> * Holds references to floating panels GUI components.
101 <span class='line'> 94</span> *
102 <span class='line'> 95</span> * @type Object
103 <span class='line'> 96</span> * @see pwlib.guiFloatingPanel
104 <span class='line'> 97</span> */</span><span class="WHIT">
105 <span class='line'> 98</span> </span><span class="WHIT"> </span><span class="NAME">this.floatingPanels</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="NAME">zIndex_</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
106 <span class='line'> 99</span>
107 <span class='line'>100</span> </span><span class="WHIT"> </span><span class="COMM">/**
108 <span class='line'>101</span> * Holds references to tab panel GUI components.
109 <span class='line'>102</span> *
110 <span class='line'>103</span> * @type Object
111 <span class='line'>104</span> * @see pwlib.guiTabPanel
112 <span class='line'>105</span> */</span><span class="WHIT">
113 <span class='line'>106</span> </span><span class="WHIT"> </span><span class="NAME">this.tabPanels</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
114 <span class='line'>107</span>
115 <span class='line'>108</span> </span><span class="WHIT"> </span><span class="COMM">/**
116 <span class='line'>109</span> * Holds an instance of the guiResizer object attached to the Canvas.
117 <span class='line'>110</span> *
118 <span class='line'>111</span> * @private
119 <span class='line'>112</span> * @type pwlib.guiResizer
120 <span class='line'>113</span> */</span><span class="WHIT">
121 <span class='line'>114</span> </span><span class="WHIT"> </span><span class="NAME">this.canvasResizer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
122 <span class='line'>115</span>
123 <span class='line'>116</span> </span><span class="WHIT"> </span><span class="COMM">/**
124 <span class='line'>117</span> * Holds tab configuration information for most drawing tools.
125 <span class='line'>118</span> *
126 <span class='line'>119</span> * @private
127 <span class='line'>120</span> * @type Object
128 <span class='line'>121</span> */</span><span class="WHIT">
129 <span class='line'>122</span> </span><span class="WHIT"> </span><span class="NAME">this.toolTabConfig</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
130 <span class='line'>123</span> </span><span class="WHIT"> </span><span class="NAME">bcurve</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
131 <span class='line'>124</span> </span><span class="WHIT"> </span><span class="NAME">lineTab</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
132 <span class='line'>125</span> </span><span class="WHIT"> </span><span class="NAME">shapeType</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
133 <span class='line'>126</span> </span><span class="WHIT"> </span><span class="NAME">lineWidth</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
134 <span class='line'>127</span> </span><span class="WHIT"> </span><span class="NAME">lineWidthLabel</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">lang.inputs.borderWidth</span><span class="PUNC">,</span><span class="WHIT">
135 <span class='line'>128</span> </span><span class="WHIT"> </span><span class="NAME">lineCap</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="WHIT">
136 <span class='line'>129</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
137 <span class='line'>130</span> </span><span class="WHIT"> </span><span class="NAME">ellipse</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
138 <span class='line'>131</span> </span><span class="WHIT"> </span><span class="NAME">lineTab</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
139 <span class='line'>132</span> </span><span class="WHIT"> </span><span class="NAME">shapeType</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
140 <span class='line'>133</span> </span><span class="WHIT"> </span><span class="NAME">lineWidth</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
141 <span class='line'>134</span> </span><span class="WHIT"> </span><span class="NAME">lineWidthLabel</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">lang.inputs.borderWidth</span><span class="WHIT">
142 <span class='line'>135</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
143 <span class='line'>136</span> </span><span class="WHIT"> </span><span class="NAME">rectangle</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
144 <span class='line'>137</span> </span><span class="WHIT"> </span><span class="NAME">lineTab</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
145 <span class='line'>138</span> </span><span class="WHIT"> </span><span class="NAME">shapeType</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
146 <span class='line'>139</span> </span><span class="WHIT"> </span><span class="NAME">lineWidth</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
147 <span class='line'>140</span> </span><span class="WHIT"> </span><span class="NAME">lineWidthLabel</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">lang.inputs.borderWidth</span><span class="PUNC">,</span><span class="WHIT">
148 <span class='line'>141</span> </span><span class="WHIT"> </span><span class="NAME">lineJoin</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="WHIT">
149 <span class='line'>142</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
150 <span class='line'>143</span> </span><span class="WHIT"> </span><span class="NAME">polygon</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
151 <span class='line'>144</span> </span><span class="WHIT"> </span><span class="NAME">lineTab</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
152 <span class='line'>145</span> </span><span class="WHIT"> </span><span class="NAME">shapeType</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
153 <span class='line'>146</span> </span><span class="WHIT"> </span><span class="NAME">lineWidth</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
154 <span class='line'>147</span> </span><span class="WHIT"> </span><span class="NAME">lineWidthLabel</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">lang.inputs.borderWidth</span><span class="PUNC">,</span><span class="WHIT">
155 <span class='line'>148</span> </span><span class="WHIT"> </span><span class="NAME">lineJoin</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
156 <span class='line'>149</span> </span><span class="WHIT"> </span><span class="NAME">lineCap</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
157 <span class='line'>150</span> </span><span class="WHIT"> </span><span class="NAME">miterLimit</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="WHIT">
158 <span class='line'>151</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
159 <span class='line'>152</span> </span><span class="WHIT"> </span><span class="NAME">eraser</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
160 <span class='line'>153</span> </span><span class="WHIT"> </span><span class="NAME">lineTab</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
161 <span class='line'>154</span> </span><span class="WHIT"> </span><span class="NAME">lineWidth</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
162 <span class='line'>155</span> </span><span class="WHIT"> </span><span class="NAME">lineWidthLabel</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">lang.inputs.eraserSize</span><span class="PUNC">,</span><span class="WHIT">
163 <span class='line'>156</span> </span><span class="WHIT"> </span><span class="NAME">lineJoin</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
164 <span class='line'>157</span> </span><span class="WHIT"> </span><span class="NAME">lineCap</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
165 <span class='line'>158</span> </span><span class="WHIT"> </span><span class="NAME">miterLimit</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="WHIT">
166 <span class='line'>159</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
167 <span class='line'>160</span> </span><span class="WHIT"> </span><span class="NAME">pencil</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
168 <span class='line'>161</span> </span><span class="WHIT"> </span><span class="NAME">lineTab</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
169 <span class='line'>162</span> </span><span class="WHIT"> </span><span class="NAME">lineWidth</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
170 <span class='line'>163</span> </span><span class="WHIT"> </span><span class="NAME">lineWidthLabel</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">lang.inputs.pencilSize</span><span class="PUNC">,</span><span class="WHIT">
171 <span class='line'>164</span> </span><span class="WHIT"> </span><span class="NAME">lineJoin</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
172 <span class='line'>165</span> </span><span class="WHIT"> </span><span class="NAME">lineCap</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
173 <span class='line'>166</span> </span><span class="WHIT"> </span><span class="NAME">miterLimit</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="WHIT">
174 <span class='line'>167</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
175 <span class='line'>168</span> </span><span class="WHIT"> </span><span class="NAME">line</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
176 <span class='line'>169</span> </span><span class="WHIT"> </span><span class="NAME">lineTab</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
177 <span class='line'>170</span> </span><span class="WHIT"> </span><span class="NAME">lineWidth</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
178 <span class='line'>171</span> </span><span class="WHIT"> </span><span class="NAME">lineWidthLabel</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">lang.inputs.line.lineWidth</span><span class="PUNC">,</span><span class="WHIT">
179 <span class='line'>172</span> </span><span class="WHIT"> </span><span class="NAME">lineJoin</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
180 <span class='line'>173</span> </span><span class="WHIT"> </span><span class="NAME">lineCap</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
181 <span class='line'>174</span> </span><span class="WHIT"> </span><span class="NAME">miterLimit</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="WHIT">
182 <span class='line'>175</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
183 <span class='line'>176</span> </span><span class="WHIT"> </span><span class="NAME">text</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
184 <span class='line'>177</span> </span><span class="WHIT"> </span><span class="NAME">lineTab</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
185 <span class='line'>178</span> </span><span class="WHIT"> </span><span class="NAME">lineTabLabel</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">lang.tabs.main.textBorder</span><span class="PUNC">,</span><span class="WHIT">
186 <span class='line'>179</span> </span><span class="WHIT"> </span><span class="NAME">shapeType</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
187 <span class='line'>180</span> </span><span class="WHIT"> </span><span class="NAME">lineWidth</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
188 <span class='line'>181</span> </span><span class="WHIT"> </span><span class="NAME">lineWidthLabel</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">lang.inputs.borderWidth</span><span class="WHIT">
189 <span class='line'>182</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
190 <span class='line'>183</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
191 <span class='line'>184</span>
192 <span class='line'>185</span> </span><span class="WHIT"> </span><span class="COMM">/**
193 <span class='line'>186</span> * Initialize the PaintWeb interface.
194 <span class='line'>187</span> *
195 <span class='line'>188</span> * @param {Document|String} markup The interface markup loaded and parsed as
196 <span class='line'>189</span> * DOM Document object. Optionally, the value can be a string holding the
197 <span class='line'>190</span> * interface markup (this is used when PaintWeb is packaged).
198 <span class='line'>191</span> *
199 <span class='line'>192</span> * @returns {Boolean} True if the initialization was successful, or false if
200 <span class='line'>193</span> * not.
201 <span class='line'>194</span> */</span><span class="WHIT">
202 <span class='line'>195</span> </span><span class="WHIT"> </span><span class="NAME">this.init</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">markup</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
203 <span class='line'>196</span> </span><span class="WHIT"> </span><span class="COMM">// Make sure the user nicely waits for PaintWeb to load, without seeing </span><span class="WHIT">
204 <span class='line'>197</span> </span><span class="WHIT"> </span><span class="COMM">// much.</span><span class="WHIT">
205 <span class='line'>198</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">placeholder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">config.guiPlaceholder</span><span class="PUNC">,</span><span class="WHIT">
206 <span class='line'>199</span> </span><span class="WHIT"> </span><span class="NAME">placeholderStyle</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">placeholder.style</span><span class="PUNC">;</span><span class="WHIT">
207 <span class='line'>200</span>
208 <span class='line'>201</span> </span><span class="WHIT"> </span><span class="NAME">placeholderStyle.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'none'</span><span class="PUNC">;</span><span class="WHIT">
209 <span class='line'>202</span> </span><span class="WHIT"> </span><span class="NAME">placeholderStyle.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'1px'</span><span class="PUNC">;</span><span class="WHIT">
210 <span class='line'>203</span> </span><span class="WHIT"> </span><span class="NAME">placeholderStyle.overflow</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'hidden'</span><span class="PUNC">;</span><span class="WHIT">
211 <span class='line'>204</span> </span><span class="WHIT"> </span><span class="NAME">placeholderStyle.position</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'absolute'</span><span class="PUNC">;</span><span class="WHIT">
212 <span class='line'>205</span> </span><span class="WHIT"> </span><span class="NAME">placeholderStyle.visibility</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'hidden'</span><span class="PUNC">;</span><span class="WHIT">
213 <span class='line'>206</span>
214 <span class='line'>207</span> </span><span class="WHIT"> </span><span class="NAME">placeholder.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'placeholder'</span><span class="PUNC">;</span><span class="WHIT">
215 <span class='line'>208</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">placeholder.tabIndex</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">placeholder.tabIndex</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
216 <span class='line'>209</span> </span><span class="WHIT"> </span><span class="NAME">placeholder.tabIndex</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
217 <span class='line'>210</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
218 <span class='line'>211</span>
219 <span class='line'>212</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.initImportDoc</span><span class="PUNC">(</span><span class="NAME">markup</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
220 <span class='line'>213</span> </span><span class="WHIT"> </span><span class="NAME">app.initError</span><span class="PUNC">(</span><span class="NAME">lang.guiMarkupImportFailed</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
221 <span class='line'>214</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
222 <span class='line'>215</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
223 <span class='line'>216</span> </span><span class="WHIT"> </span><span class="NAME">markup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
224 <span class='line'>217</span>
225 <span class='line'>218</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.initParseMarkup</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
226 <span class='line'>219</span> </span><span class="WHIT"> </span><span class="NAME">app.initError</span><span class="PUNC">(</span><span class="NAME">lang.guiMarkupParseFailed</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
227 <span class='line'>220</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
228 <span class='line'>221</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
229 <span class='line'>222</span>
230 <span class='line'>223</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.initCanvas</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
231 <span class='line'>224</span> </span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.initImageZoom</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
232 <span class='line'>225</span> </span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.initSelectionTool</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
233 <span class='line'>226</span> </span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.initTextTool</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
234 <span class='line'>227</span> </span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.initKeyboardShortcuts</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
235 <span class='line'>228</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
236 <span class='line'>229</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
237 <span class='line'>230</span>
238 <span class='line'>231</span> </span><span class="WHIT"> </span><span class="COMM">// Setup the main tabbed panel.</span><span class="WHIT">
239 <span class='line'>232</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">panel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.tabPanels.main</span><span class="PUNC">;</span><span class="WHIT">
240 <span class='line'>233</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">panel</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
241 <span class='line'>234</span> </span><span class="WHIT"> </span><span class="NAME">app.initError</span><span class="PUNC">(</span><span class="NAME">lang.noMainTabPanel</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
242 <span class='line'>235</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
243 <span class='line'>236</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
244 <span class='line'>237</span>
245 <span class='line'>238</span> </span><span class="WHIT"> </span><span class="COMM">// Hide the "Shadow" tab if the drawing of shadows is not supported.</span><span class="WHIT">
246 <span class='line'>239</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">app.shadowSupported</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="STRN">'shadow'</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">panel.tabs</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
247 <span class='line'>240</span> </span><span class="WHIT"> </span><span class="NAME">panel.tabHide</span><span class="PUNC">(</span><span class="STRN">'shadow'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
248 <span class='line'>241</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
249 <span class='line'>242</span>
250 <span class='line'>243</span> </span><span class="WHIT"> </span><span class="COMM">// Setup the viewport height.</span><span class="WHIT">
251 <span class='line'>244</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">'viewport'</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.elems</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
252 <span class='line'>245</span> </span><span class="WHIT"> </span><span class="NAME">this.elems.viewport.style.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">config.viewportHeight</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'px'</span><span class="PUNC">;</span><span class="WHIT">
253 <span class='line'>246</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
254 <span class='line'>247</span>
255 <span class='line'>248</span> </span><span class="WHIT"> </span><span class="COMM">// Setup the Canvas resizer.</span><span class="WHIT">
256 <span class='line'>249</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">resizeHandle</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.elems.canvasResizer</span><span class="PUNC">;</span><span class="WHIT">
257 <span class='line'>250</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">resizeHandle</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
258 <span class='line'>251</span> </span><span class="WHIT"> </span><span class="NAME">app.initError</span><span class="PUNC">(</span><span class="NAME">lang.missingCanvasResizer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
259 <span class='line'>252</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
260 <span class='line'>253</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
261 <span class='line'>254</span> </span><span class="WHIT"> </span><span class="NAME">resizeHandle.title</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.guiCanvasResizer</span><span class="PUNC">;</span><span class="WHIT">
262 <span class='line'>255</span> </span><span class="WHIT"> </span><span class="NAME">resizeHandle.replaceChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">lang.guiCanvasResizer</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
263 <span class='line'>256</span> </span><span class="NAME">resizeHandle.firstChild</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
264 <span class='line'>257</span> </span><span class="WHIT"> </span><span class="NAME">resizeHandle.addEventListener</span><span class="PUNC">(</span><span class="STRN">'mouseover'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.item_mouseover</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
265 <span class='line'>258</span> </span><span class="WHIT"> </span><span class="NAME">resizeHandle.addEventListener</span><span class="PUNC">(</span><span class="STRN">'mouseout'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.item_mouseout</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
266 <span class='line'>259</span>
267 <span class='line'>260</span> </span><span class="WHIT"> </span><span class="NAME">this.canvasResizer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">pwlib.guiResizer</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">resizeHandle</span><span class="PUNC">,</span><span class="WHIT">
268 <span class='line'>261</span> </span><span class="NAME">this.elems.canvasContainer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
269 <span class='line'>262</span>
270 <span class='line'>263</span> </span><span class="WHIT"> </span><span class="NAME">this.canvasResizer.events.add</span><span class="PUNC">(</span><span class="STRN">'guiResizeStart'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.canvasResizeStart</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
271 <span class='line'>264</span> </span><span class="WHIT"> </span><span class="NAME">this.canvasResizer.events.add</span><span class="PUNC">(</span><span class="STRN">'guiResizeEnd'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.canvasResizeEnd</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
272 <span class='line'>265</span>
273 <span class='line'>266</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">'statusMessage'</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.elems</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
274 <span class='line'>267</span> </span><span class="WHIT"> </span><span class="NAME">this.elems.statusMessage._prevText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
275 <span class='line'>268</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
276 <span class='line'>269</span>
277 <span class='line'>270</span> </span><span class="WHIT"> </span><span class="COMM">// Update the version string in Help.</span><span class="WHIT">
278 <span class='line'>271</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">'version'</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.elems</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
279 <span class='line'>272</span> </span><span class="WHIT"> </span><span class="NAME">this.elems.version.appendChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">app.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
280 <span class='line'>273</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
281 <span class='line'>274</span>
282 <span class='line'>275</span> </span><span class="WHIT"> </span><span class="COMM">// Update the image dimensions in the GUI.</span><span class="WHIT">
283 <span class='line'>276</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">imageSize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.elems.imageSize</span><span class="PUNC">;</span><span class="WHIT">
284 <span class='line'>277</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">imageSize</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
285 <span class='line'>278</span> </span><span class="WHIT"> </span><span class="NAME">imageSize.replaceChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">app.image.width</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'x'</span><span class="WHIT">
286 <span class='line'>279</span> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">app.image.height</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">imageSize.firstChild</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
287 <span class='line'>280</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
288 <span class='line'>281</span>
289 <span class='line'>282</span> </span><span class="WHIT"> </span><span class="COMM">// Add application-wide event listeners.</span><span class="WHIT">
290 <span class='line'>283</span> </span><span class="WHIT"> </span><span class="NAME">app.events.add</span><span class="PUNC">(</span><span class="STRN">'canvasSizeChange'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.canvasSizeChange</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
291 <span class='line'>284</span> </span><span class="WHIT"> </span><span class="NAME">app.events.add</span><span class="PUNC">(</span><span class="STRN">'commandRegister'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.commandRegister</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
292 <span class='line'>285</span> </span><span class="WHIT"> </span><span class="NAME">app.events.add</span><span class="PUNC">(</span><span class="STRN">'commandUnregister'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.commandUnregister</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
293 <span class='line'>286</span> </span><span class="WHIT"> </span><span class="NAME">app.events.add</span><span class="PUNC">(</span><span class="STRN">'configChange'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.configChangeHandler</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
294 <span class='line'>287</span> </span><span class="WHIT"> </span><span class="NAME">app.events.add</span><span class="PUNC">(</span><span class="STRN">'imageSizeChange'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.imageSizeChange</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
295 <span class='line'>288</span> </span><span class="WHIT"> </span><span class="NAME">app.events.add</span><span class="PUNC">(</span><span class="STRN">'imageZoom'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.imageZoom</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
296 <span class='line'>289</span> </span><span class="WHIT"> </span><span class="NAME">app.events.add</span><span class="PUNC">(</span><span class="STRN">'appInit'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.appInit</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
297 <span class='line'>290</span> </span><span class="WHIT"> </span><span class="NAME">app.events.add</span><span class="PUNC">(</span><span class="STRN">'shadowAllow'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.shadowAllow</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
298 <span class='line'>291</span> </span><span class="WHIT"> </span><span class="NAME">app.events.add</span><span class="PUNC">(</span><span class="STRN">'toolActivate'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.toolActivate</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
299 <span class='line'>292</span> </span><span class="WHIT"> </span><span class="NAME">app.events.add</span><span class="PUNC">(</span><span class="STRN">'toolRegister'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.toolRegister</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
300 <span class='line'>293</span> </span><span class="WHIT"> </span><span class="NAME">app.events.add</span><span class="PUNC">(</span><span class="STRN">'toolUnregister'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.toolUnregister</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
301 <span class='line'>294</span>
302 <span class='line'>295</span> </span><span class="WHIT"> </span><span class="COMM">// Make sure the historyUndo and historyRedo command elements are </span><span class="WHIT">
303 <span class='line'>296</span> </span><span class="WHIT"> </span><span class="COMM">// synchronized with the application history state.</span><span class="WHIT">
304 <span class='line'>297</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">'historyUndo'</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.commands</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="STRN">'historyRedo'</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.commands</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
305 <span class='line'>298</span> </span><span class="WHIT"> </span><span class="NAME">app.events.add</span><span class="PUNC">(</span><span class="STRN">'historyUpdate'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.historyUpdate</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
306 <span class='line'>299</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
307 <span class='line'>300</span>
308 <span class='line'>301</span> </span><span class="WHIT"> </span><span class="NAME">app.commandRegister</span><span class="PUNC">(</span><span class="STRN">'about'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.commandAbout</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
309 <span class='line'>302</span>
310 <span class='line'>303</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
311 <span class='line'>304</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
312 <span class='line'>305</span>
313 <span class='line'>306</span> </span><span class="WHIT"> </span><span class="COMM">/**
314 <span class='line'>307</span> * Initialize the Canvas elements.
315 <span class='line'>308</span> *
316 <span class='line'>309</span> * @private
317 <span class='line'>310</span> * @returns {Boolean} True if the initialization was successful, or false if
318 <span class='line'>311</span> * not.
319 <span class='line'>312</span> */</span><span class="WHIT">
320 <span class='line'>313</span> </span><span class="WHIT"> </span><span class="NAME">this.initCanvas</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
321 <span class='line'>314</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">canvasContainer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.elems.canvasContainer</span><span class="PUNC">,</span><span class="WHIT">
322 <span class='line'>315</span> </span><span class="WHIT"> </span><span class="NAME">layerCanvas</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">app.layer.canvas</span><span class="PUNC">,</span><span class="WHIT">
323 <span class='line'>316</span> </span><span class="WHIT"> </span><span class="NAME">layerContext</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">app.layer.context</span><span class="PUNC">,</span><span class="WHIT">
324 <span class='line'>317</span> </span><span class="WHIT"> </span><span class="NAME">layerStyle</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">layerCanvas.style</span><span class="PUNC">,</span><span class="WHIT">
325 <span class='line'>318</span> </span><span class="WHIT"> </span><span class="NAME">bufferCanvas</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">app.buffer.canvas</span><span class="PUNC">;</span><span class="WHIT">
326 <span class='line'>319</span>
327 <span class='line'>320</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">canvasContainer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
328 <span class='line'>321</span> </span><span class="WHIT"> </span><span class="NAME">app.initError</span><span class="PUNC">(</span><span class="NAME">lang.missingCanvasContainer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
329 <span class='line'>322</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
330 <span class='line'>323</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
331 <span class='line'>324</span>
332 <span class='line'>325</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">containerStyle</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">canvasContainer.style</span><span class="PUNC">;</span><span class="WHIT">
333 <span class='line'>326</span>
334 <span class='line'>327</span> </span><span class="WHIT"> </span><span class="NAME">canvasContainer.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'canvasContainer'</span><span class="PUNC">;</span><span class="WHIT">
335 <span class='line'>328</span> </span><span class="WHIT"> </span><span class="NAME">layerCanvas.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'layerCanvas'</span><span class="PUNC">;</span><span class="WHIT">
336 <span class='line'>329</span> </span><span class="WHIT"> </span><span class="NAME">bufferCanvas.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'bufferCanvas'</span><span class="PUNC">;</span><span class="WHIT">
337 <span class='line'>330</span>
338 <span class='line'>331</span> </span><span class="WHIT"> </span><span class="NAME">containerStyle.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">layerStyle.width</span><span class="PUNC">;</span><span class="WHIT">
339 <span class='line'>332</span> </span><span class="WHIT"> </span><span class="NAME">containerStyle.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">layerStyle.height</span><span class="PUNC">;</span><span class="WHIT">
340 <span class='line'>333</span>
341 <span class='line'>334</span> </span><span class="WHIT"> </span><span class="NAME">canvasContainer.appendChild</span><span class="PUNC">(</span><span class="NAME">layerCanvas</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
342 <span class='line'>335</span> </span><span class="WHIT"> </span><span class="NAME">canvasContainer.appendChild</span><span class="PUNC">(</span><span class="NAME">bufferCanvas</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
343 <span class='line'>336</span>
344 <span class='line'>337</span> </span><span class="WHIT"> </span><span class="COMM">// Make sure the selection transparency input checkbox is disabled if the </span><span class="WHIT">
345 <span class='line'>338</span> </span><span class="WHIT"> </span><span class="COMM">// putImageData and getImageData methods are unsupported.</span><span class="WHIT">
346 <span class='line'>339</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">'selection_transparent'</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.inputs</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">layerContext.putImageData</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
347 <span class='line'>340</span> </span><span class="PUNC">!</span><span class="NAME">layerContext.getImageData</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
348 <span class='line'>341</span> </span><span class="WHIT"> </span><span class="NAME">this.inputs.selection_transparent.disabled</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
349 <span class='line'>342</span> </span><span class="WHIT"> </span><span class="NAME">this.inputs.selection_transparent.checked</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
350 <span class='line'>343</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
351 <span class='line'>344</span>
352 <span class='line'>345</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
353 <span class='line'>346</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
354 <span class='line'>347</span>
355 <span class='line'>348</span> </span><span class="WHIT"> </span><span class="COMM">/**
356 <span class='line'>349</span> * Import the DOM nodes from the interface DOM document. All the nodes are
357 <span class='line'>350</span> * inserted into the {@link PaintWeb.config.guiPlaceholder} element.
358 <span class='line'>351</span> *
359 <span class='line'>352</span> * &lt;p>Elements which have the ID attribute will have the attribute renamed to
360 <span class='line'>353</span> * &lt;code>data-pwId&lt;/code>.
361 <span class='line'>354</span> *
362 <span class='line'>355</span> * &lt;p>Input elements which have the ID attribute will have their attribute
363 <span class='line'>356</span> * updated to be unique for the current PaintWeb instance.
364 <span class='line'>357</span> *
365 <span class='line'>358</span> * @private
366 <span class='line'>359</span> *
367 <span class='line'>360</span> * @param {Document|String} markup The source DOM document to import the nodes
368 <span class='line'>361</span> * from. Optionally, this parameter can be a string which holds the interface
369 <span class='line'>362</span> * markup.
370 <span class='line'>363</span> *
371 <span class='line'>364</span> * @returns {Boolean} True if the initialization was successful, or false if
372 <span class='line'>365</span> * not.
373 <span class='line'>366</span> */</span><span class="WHIT">
374 <span class='line'>367</span> </span><span class="WHIT"> </span><span class="NAME">this.initImportDoc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">markup</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
375 <span class='line'>368</span> </span><span class="WHIT"> </span><span class="COMM">// I could use some XPath here, but for the sake of compatibility I don't.</span><span class="WHIT">
376 <span class='line'>369</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">destElem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">config.guiPlaceholder</span><span class="PUNC">,</span><span class="WHIT">
377 <span class='line'>370</span> </span><span class="WHIT"> </span><span class="NAME">elType</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Node.ELEMENT_NODE</span><span class="PUNC">,</span><span class="WHIT">
378 <span class='line'>371</span> </span><span class="WHIT"> </span><span class="NAME">elem</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">root</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">nodes</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">isInput</span><span class="PUNC">;</span><span class="WHIT">
379 <span class='line'>372</span>
380 <span class='line'>373</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">markup</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'string'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
381 <span class='line'>374</span> </span><span class="WHIT"> </span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.createElement</span><span class="PUNC">(</span><span class="STRN">'div'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
382 <span class='line'>375</span> </span><span class="WHIT"> </span><span class="NAME">elem.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">markup</span><span class="PUNC">;</span><span class="WHIT">
383 <span class='line'>376</span> </span><span class="WHIT"> </span><span class="NAME">root</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem.firstChild</span><span class="PUNC">;</span><span class="WHIT">
384 <span class='line'>377</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
385 <span class='line'>378</span> </span><span class="WHIT"> </span><span class="NAME">root</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">markup.documentElement</span><span class="PUNC">;</span><span class="WHIT">
386 <span class='line'>379</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
387 <span class='line'>380</span> </span><span class="WHIT"> </span><span class="NAME">markup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
388 <span class='line'>381</span>
389 <span class='line'>382</span> </span><span class="WHIT"> </span><span class="NAME">nodes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">root.getElementsByTagName</span><span class="PUNC">(</span><span class="STRN">'*'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
390 <span class='line'>383</span> </span><span class="WHIT"> </span><span class="NAME">n</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">nodes.length</span><span class="PUNC">;</span><span class="WHIT">
391 <span class='line'>384</span>
392 <span class='line'>385</span> </span><span class="WHIT"> </span><span class="COMM">// Change all the id attributes to be data-pwId attributes.</span><span class="WHIT">
393 <span class='line'>386</span> </span><span class="WHIT"> </span><span class="COMM">// Input elements have their ID updated to be unique for the current </span><span class="WHIT">
394 <span class='line'>387</span> </span><span class="WHIT"> </span><span class="COMM">// PaintWeb instance.</span><span class="WHIT">
395 <span class='line'>388</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
396 <span class='line'>389</span> </span><span class="WHIT"> </span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">nodes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
397 <span class='line'>390</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">elem.nodeType</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">elType</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
398 <span class='line'>391</span> </span><span class="WHIT"> </span><span class="KEYW">continue</span><span class="PUNC">;</span><span class="WHIT">
399 <span class='line'>392</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
400 <span class='line'>393</span> </span><span class="WHIT"> </span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem.tagName.toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
401 <span class='line'>394</span> </span><span class="WHIT"> </span><span class="NAME">isInput</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'input'</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'select'</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'textarea'</span><span class="PUNC">;</span><span class="WHIT">
402 <span class='line'>395</span>
403 <span class='line'>396</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">elem.id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
404 <span class='line'>397</span> </span><span class="WHIT"> </span><span class="NAME">elem.setAttribute</span><span class="PUNC">(</span><span class="STRN">'data-pwId'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">elem.id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
405 <span class='line'>398</span>
406 <span class='line'>399</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">isInput</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
407 <span class='line'>400</span> </span><span class="WHIT"> </span><span class="NAME">elem.id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.idPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">elem.id</span><span class="PUNC">;</span><span class="WHIT">
408 <span class='line'>401</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
409 <span class='line'>402</span> </span><span class="WHIT"> </span><span class="NAME">elem.removeAttribute</span><span class="PUNC">(</span><span class="STRN">'id'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
410 <span class='line'>403</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
411 <span class='line'>404</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
412 <span class='line'>405</span>
413 <span class='line'>406</span> </span><span class="WHIT"> </span><span class="COMM">// label elements have their "for" attribute updated as well.</span><span class="WHIT">
414 <span class='line'>407</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'label'</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">elem.htmlFor</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
415 <span class='line'>408</span> </span><span class="WHIT"> </span><span class="NAME">elem.htmlFor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.idPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">elem.htmlFor</span><span class="PUNC">;</span><span class="WHIT">
416 <span class='line'>409</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
417 <span class='line'>410</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
418 <span class='line'>411</span>
419 <span class='line'>412</span> </span><span class="WHIT"> </span><span class="COMM">// Import all the nodes.</span><span class="WHIT">
420 <span class='line'>413</span> </span><span class="WHIT"> </span><span class="NAME">n</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">root.childNodes.length</span><span class="PUNC">;</span><span class="WHIT">
421 <span class='line'>414</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
422 <span class='line'>415</span> </span><span class="WHIT"> </span><span class="NAME">destElem.appendChild</span><span class="PUNC">(</span><span class="NAME">doc.importNode</span><span class="PUNC">(</span><span class="NAME">root.childNodes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
423 <span class='line'>416</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
424 <span class='line'>417</span>
425 <span class='line'>418</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
426 <span class='line'>419</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
427 <span class='line'>420</span>
428 <span class='line'>421</span> </span><span class="WHIT"> </span><span class="COMM">/**
429 <span class='line'>422</span> * Parse the interface markup. The layout file can have custom
430 <span class='line'>423</span> * PaintWeb-specific attributes.
431 <span class='line'>424</span> *
432 <span class='line'>425</span> * &lt;p>Elements with the &lt;code>data-pwId&lt;/code> attribute are added to the
433 <span class='line'>426</span> * {@link pwlib.gui#elems} object.
434 <span class='line'>427</span> *
435 <span class='line'>428</span> * &lt;p>Elements having the &lt;code>data-pwCommand&lt;/code> attribute are added to
436 <span class='line'>429</span> * the {@link pwlib.gui#commands} object.
437 <span class='line'>430</span> *
438 <span class='line'>431</span> * &lt;p>Elements having the &lt;code>data-pwTool&lt;/code> attribute are added to the
439 <span class='line'>432</span> * {@link pwlib.gui#tools} object.
440 <span class='line'>433</span> *
441 <span class='line'>434</span> * &lt;p>Elements having the &lt;code>data-pwTabPanel&lt;/code> attribute are added to
442 <span class='line'>435</span> * the {@link pwlib.gui#tabPanels} object. These become interactive GUI
443 <span class='line'>436</span> * components (see {@link pwlib.guiTabPanel}).
444 <span class='line'>437</span> *
445 <span class='line'>438</span> * &lt;p>Elements having the &lt;code>data-pwFloatingPanel&lt;/code> attribute are
446 <span class='line'>439</span> * added to the {@link pwlib.gui#floatingPanels} object. These become
447 <span class='line'>440</span> * interactive GUI components (see {@link pwlib.guiFloatingPanel}).
448 <span class='line'>441</span> *
449 <span class='line'>442</span> * &lt;p>Elements having the &lt;code>data-pwConfig&lt;/code> attribute are added to
450 <span class='line'>443</span> * the {@link pwlib.gui#inputs} object. These become interactive GUI
451 <span class='line'>444</span> * components which allow users to change configuration options.
452 <span class='line'>445</span> *
453 <span class='line'>446</span> * &lt;p>Elements having the &lt;code>data-pwConfigValue&lt;/code> attribute are added
454 <span class='line'>447</span> * to the {@link pwlib.gui#inputValues} object. These can only be child nodes
455 <span class='line'>448</span> * of elements which have the &lt;code>data-pwConfig&lt;/code> attribute. Each such
456 <span class='line'>449</span> * element is considered an icon. Anchor elements are appended to ensure
457 <span class='line'>450</span> * keyboard accessibility.
458 <span class='line'>451</span> *
459 <span class='line'>452</span> * &lt;p>Elements having the &lt;code>data-pwConfigToggle&lt;/code> attribute are added
460 <span class='line'>453</span> * to the {@link pwlib.gui#inputs} object. These become interactive GUI
461 <span class='line'>454</span> * components which toggle the boolean value of the configuration property
462 <span class='line'>455</span> * they are associated to.
463 <span class='line'>456</span> *
464 <span class='line'>457</span> * &lt;p>Elements having the &lt;code>data-pwColorInput&lt;/code> attribute are added
465 <span class='line'>458</span> * to the {@link pwlib.gui#colorInputs} object. These become color picker
466 <span class='line'>459</span> * inputs which are associated to the configuration property given as the
467 <span class='line'>460</span> * attribute value. (see {@link pwlib.guiColorInput})
468 <span class='line'>461</span> *
469 <span class='line'>462</span> * @returns {Boolean} True if the parsing was successful, or false if not.
470 <span class='line'>463</span> */</span><span class="WHIT">
471 <span class='line'>464</span> </span><span class="WHIT"> </span><span class="NAME">this.initParseMarkup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
472 <span class='line'>465</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nodes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">config.guiPlaceholder.getElementsByTagName</span><span class="PUNC">(</span><span class="STRN">'*'</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
473 <span class='line'>466</span> </span><span class="WHIT"> </span><span class="NAME">elType</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Node.ELEMENT_NODE</span><span class="PUNC">,</span><span class="WHIT">
474 <span class='line'>467</span> </span><span class="WHIT"> </span><span class="NAME">elem</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">isInput</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">tool</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">tabPanel</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">floatingPanel</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cmd</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cfgAttr</span><span class="PUNC">,</span><span class="WHIT">
475 <span class='line'>468</span> </span><span class="NAME">colorInput</span><span class="PUNC">;</span><span class="WHIT">
476 <span class='line'>469</span>
477 <span class='line'>470</span> </span><span class="WHIT"> </span><span class="COMM">// Store references to important elements and parse PaintWeb-specific </span><span class="WHIT">
478 <span class='line'>471</span> </span><span class="WHIT"> </span><span class="COMM">// attributes.</span><span class="WHIT">
479 <span class='line'>472</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">nodes.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
480 <span class='line'>473</span> </span><span class="WHIT"> </span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">nodes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
481 <span class='line'>474</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">elem.nodeType</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">elType</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
482 <span class='line'>475</span> </span><span class="WHIT"> </span><span class="KEYW">continue</span><span class="PUNC">;</span><span class="WHIT">
483 <span class='line'>476</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
484 <span class='line'>477</span> </span><span class="WHIT"> </span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem.tagName.toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
485 <span class='line'>478</span> </span><span class="WHIT"> </span><span class="NAME">isInput</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'input'</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'select'</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'textarea'</span><span class="PUNC">;</span><span class="WHIT">
486 <span class='line'>479</span>
487 <span class='line'>480</span> </span><span class="WHIT"> </span><span class="COMM">// Store references to commands.</span><span class="WHIT">
488 <span class='line'>481</span> </span><span class="WHIT"> </span><span class="NAME">cmd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem.getAttribute</span><span class="PUNC">(</span><span class="STRN">'data-pwCommand'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
489 <span class='line'>482</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cmd</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">cmd</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.commands</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
490 <span class='line'>483</span> </span><span class="WHIT"> </span><span class="NAME">elem.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'command'</span><span class="PUNC">;</span><span class="WHIT">
491 <span class='line'>484</span> </span><span class="WHIT"> </span><span class="NAME">this.commands</span><span class="PUNC">[</span><span class="NAME">cmd</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem</span><span class="PUNC">;</span><span class="WHIT">
492 <span class='line'>485</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
493 <span class='line'>486</span>
494 <span class='line'>487</span> </span><span class="WHIT"> </span><span class="COMM">// Store references to tools.</span><span class="WHIT">
495 <span class='line'>488</span> </span><span class="WHIT"> </span><span class="NAME">tool</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem.getAttribute</span><span class="PUNC">(</span><span class="STRN">'data-pwTool'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
496 <span class='line'>489</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tool</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">tool</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.tools</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
497 <span class='line'>490</span> </span><span class="WHIT"> </span><span class="NAME">elem.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'tool'</span><span class="PUNC">;</span><span class="WHIT">
498 <span class='line'>491</span> </span><span class="WHIT"> </span><span class="NAME">this.tools</span><span class="PUNC">[</span><span class="NAME">tool</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem</span><span class="PUNC">;</span><span class="WHIT">
499 <span class='line'>492</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
500 <span class='line'>493</span>
501 <span class='line'>494</span> </span><span class="WHIT"> </span><span class="COMM">// Create tab panels.</span><span class="WHIT">
502 <span class='line'>495</span> </span><span class="WHIT"> </span><span class="NAME">tabPanel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem.getAttribute</span><span class="PUNC">(</span><span class="STRN">'data-pwTabPanel'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
503 <span class='line'>496</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tabPanel</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
504 <span class='line'>497</span> </span><span class="WHIT"> </span><span class="NAME">this.tabPanels</span><span class="PUNC">[</span><span class="NAME">tabPanel</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">pwlib.guiTabPanel</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">elem</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
505 <span class='line'>498</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
506 <span class='line'>499</span>
507 <span class='line'>500</span> </span><span class="WHIT"> </span><span class="COMM">// Create floating panels.</span><span class="WHIT">
508 <span class='line'>501</span> </span><span class="WHIT"> </span><span class="NAME">floatingPanel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem.getAttribute</span><span class="PUNC">(</span><span class="STRN">'data-pwFloatingPanel'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
509 <span class='line'>502</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">floatingPanel</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
510 <span class='line'>503</span> </span><span class="WHIT"> </span><span class="NAME">this.floatingPanels</span><span class="PUNC">[</span><span class="NAME">floatingPanel</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">pwlib.guiFloatingPanel</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT">
511 <span class='line'>504</span> </span><span class="NAME">elem</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
512 <span class='line'>505</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
513 <span class='line'>506</span>
514 <span class='line'>507</span> </span><span class="WHIT"> </span><span class="NAME">cfgAttr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem.getAttribute</span><span class="PUNC">(</span><span class="STRN">'data-pwConfig'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
515 <span class='line'>508</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cfgAttr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
516 <span class='line'>509</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">isInput</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
517 <span class='line'>510</span> </span><span class="WHIT"> </span><span class="NAME">this.initConfigInput</span><span class="PUNC">(</span><span class="NAME">elem</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cfgAttr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
518 <span class='line'>511</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
519 <span class='line'>512</span> </span><span class="WHIT"> </span><span class="NAME">this.initConfigIcons</span><span class="PUNC">(</span><span class="NAME">elem</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cfgAttr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
520 <span class='line'>513</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
521 <span class='line'>514</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
522 <span class='line'>515</span>
523 <span class='line'>516</span> </span><span class="WHIT"> </span><span class="NAME">cfgAttr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem.getAttribute</span><span class="PUNC">(</span><span class="STRN">'data-pwConfigToggle'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
524 <span class='line'>517</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cfgAttr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
525 <span class='line'>518</span> </span><span class="WHIT"> </span><span class="NAME">this.initConfigToggle</span><span class="PUNC">(</span><span class="NAME">elem</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cfgAttr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
526 <span class='line'>519</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
527 <span class='line'>520</span>
528 <span class='line'>521</span> </span><span class="WHIT"> </span><span class="COMM">// elem.hasAttribute() fails in webkit (tested with chrome and safari 4)</span><span class="WHIT">
529 <span class='line'>522</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">elem.getAttribute</span><span class="PUNC">(</span><span class="STRN">'data-pwColorInput'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
530 <span class='line'>523</span> </span><span class="WHIT"> </span><span class="NAME">colorInput</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">pwlib.guiColorInput</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">elem</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
531 <span class='line'>524</span> </span><span class="WHIT"> </span><span class="NAME">this.colorInputs</span><span class="PUNC">[</span><span class="NAME">colorInput.id</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">colorInput</span><span class="PUNC">;</span><span class="WHIT">
532 <span class='line'>525</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
533 <span class='line'>526</span>
534 <span class='line'>527</span> </span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem.getAttribute</span><span class="PUNC">(</span><span class="STRN">'data-pwId'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
535 <span class='line'>528</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
536 <span class='line'>529</span> </span><span class="WHIT"> </span><span class="NAME">elem.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">;</span><span class="WHIT">
537 <span class='line'>530</span>
538 <span class='line'>531</span> </span><span class="WHIT"> </span><span class="COMM">// Store a reference to the element.</span><span class="WHIT">
539 <span class='line'>532</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">isInput</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">cfgAttr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
540 <span class='line'>533</span> </span><span class="WHIT"> </span><span class="NAME">this.inputs</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem</span><span class="PUNC">;</span><span class="WHIT">
541 <span class='line'>534</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">isInput</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
542 <span class='line'>535</span> </span><span class="WHIT"> </span><span class="NAME">this.elems</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem</span><span class="PUNC">;</span><span class="WHIT">
543 <span class='line'>536</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
544 <span class='line'>537</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
545 <span class='line'>538</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
546 <span class='line'>539</span>
547 <span class='line'>540</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
548 <span class='line'>541</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
549 <span class='line'>542</span>
550 <span class='line'>543</span> </span><span class="WHIT"> </span><span class="COMM">/**
551 <span class='line'>544</span> * Initialize an input element associated to a configuration property.
552 <span class='line'>545</span> *
553 <span class='line'>546</span> * @private
554 <span class='line'>547</span> *
555 <span class='line'>548</span> * @param {Element} elem The DOM element which is associated to the
556 <span class='line'>549</span> * configuration property.
557 <span class='line'>550</span> *
558 <span class='line'>551</span> * @param {String} cfgAttr The configuration attribute. This tells the
559 <span class='line'>552</span> * configuration group and property to which the DOM element is attached to.
560 <span class='line'>553</span> */</span><span class="WHIT">
561 <span class='line'>554</span> </span><span class="WHIT"> </span><span class="NAME">this.initConfigInput</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">input</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cfgAttr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
562 <span class='line'>555</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cfgNoDots</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgAttr.replace</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'_'</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
563 <span class='line'>556</span> </span><span class="WHIT"> </span><span class="NAME">cfgArray</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgAttr.split</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
564 <span class='line'>557</span> </span><span class="WHIT"> </span><span class="NAME">cfgProp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgArray.pop</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
565 <span class='line'>558</span> </span><span class="WHIT"> </span><span class="NAME">cfgGroup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgArray.join</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
566 <span class='line'>559</span> </span><span class="WHIT"> </span><span class="NAME">cfgGroupRef</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">config</span><span class="PUNC">,</span><span class="WHIT">
567 <span class='line'>560</span> </span><span class="WHIT"> </span><span class="NAME">langGroup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.inputs</span><span class="PUNC">,</span><span class="WHIT">
568 <span class='line'>561</span> </span><span class="WHIT"> </span><span class="NAME">labelElem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">input.parentNode</span><span class="PUNC">;</span><span class="WHIT">
569 <span class='line'>562</span>
570 <span class='line'>563</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">n</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgArray.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
571 <span class='line'>564</span> </span><span class="WHIT"> </span><span class="NAME">cfgGroupRef</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgGroupRef</span><span class="PUNC">[</span><span class="NAME">cfgArray</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
572 <span class='line'>565</span> </span><span class="WHIT"> </span><span class="NAME">langGroup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">langGroup</span><span class="PUNC">[</span><span class="NAME">cfgArray</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
573 <span class='line'>566</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
574 <span class='line'>567</span>
575 <span class='line'>568</span> </span><span class="WHIT"> </span><span class="NAME">input._pwConfigProperty</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgProp</span><span class="PUNC">;</span><span class="WHIT">
576 <span class='line'>569</span> </span><span class="WHIT"> </span><span class="NAME">input._pwConfigGroup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgGroup</span><span class="PUNC">;</span><span class="WHIT">
577 <span class='line'>570</span> </span><span class="WHIT"> </span><span class="NAME">input._pwConfigGroupRef</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgGroupRef</span><span class="PUNC">;</span><span class="WHIT">
578 <span class='line'>571</span> </span><span class="WHIT"> </span><span class="NAME">input.title</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">langGroup</span><span class="PUNC">[</span><span class="NAME">cfgProp</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'Title'</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">langGroup</span><span class="PUNC">[</span><span class="NAME">cfgProp</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
579 <span class='line'>572</span> </span><span class="WHIT"> </span><span class="NAME">input.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'cfg_'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cfgNoDots</span><span class="PUNC">;</span><span class="WHIT">
580 <span class='line'>573</span>
581 <span class='line'>574</span> </span><span class="WHIT"> </span><span class="NAME">this.inputs</span><span class="PUNC">[</span><span class="NAME">cfgNoDots</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">input</span><span class="PUNC">;</span><span class="WHIT">
582 <span class='line'>575</span>
583 <span class='line'>576</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">labelElem.tagName.toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">'label'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
584 <span class='line'>577</span> </span><span class="WHIT"> </span><span class="NAME">labelElem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">labelElem.getElementsByTagName</span><span class="PUNC">(</span><span class="STRN">'label'</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
585 <span class='line'>578</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
586 <span class='line'>579</span>
587 <span class='line'>580</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">input.type</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'checkbox'</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">labelElem.htmlFor</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
588 <span class='line'>581</span> </span><span class="WHIT"> </span><span class="NAME">labelElem.replaceChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">langGroup</span><span class="PUNC">[</span><span class="NAME">cfgProp</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
589 <span class='line'>582</span> </span><span class="NAME">labelElem.lastChild</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
590 <span class='line'>583</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
591 <span class='line'>584</span> </span><span class="WHIT"> </span><span class="NAME">labelElem.replaceChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">langGroup</span><span class="PUNC">[</span><span class="NAME">cfgProp</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
592 <span class='line'>585</span> </span><span class="NAME">labelElem.firstChild</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
593 <span class='line'>586</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
594 <span class='line'>587</span>
595 <span class='line'>588</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">input.type</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'checkbox'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
596 <span class='line'>589</span> </span><span class="WHIT"> </span><span class="NAME">input.checked</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgGroupRef</span><span class="PUNC">[</span><span class="NAME">cfgProp</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
597 <span class='line'>590</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
598 <span class='line'>591</span> </span><span class="WHIT"> </span><span class="NAME">input.value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgGroupRef</span><span class="PUNC">[</span><span class="NAME">cfgProp</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
599 <span class='line'>592</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
600 <span class='line'>593</span>
601 <span class='line'>594</span> </span><span class="WHIT"> </span><span class="NAME">input.addEventListener</span><span class="PUNC">(</span><span class="STRN">'input'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.configInputChange</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
602 <span class='line'>595</span> </span><span class="WHIT"> </span><span class="NAME">input.addEventListener</span><span class="PUNC">(</span><span class="STRN">'change'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.configInputChange</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
603 <span class='line'>596</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
604 <span class='line'>597</span>
605 <span class='line'>598</span> </span><span class="WHIT"> </span><span class="COMM">/**
606 <span class='line'>599</span> * Initialize an HTML element associated to a configuration property, and all
607 <span class='line'>600</span> * of its own sub-elements associated to configuration values. Each element
608 <span class='line'>601</span> * that has the &lt;var>data-pwConfigValue&lt;/var> attribute is considered an icon.
609 <span class='line'>602</span> *
610 <span class='line'>603</span> * @private
611 <span class='line'>604</span> *
612 <span class='line'>605</span> * @param {Element} elem The DOM element which is associated to the
613 <span class='line'>606</span> * configuration property.
614 <span class='line'>607</span> *
615 <span class='line'>608</span> * @param {String} cfgAttr The configuration attribute. This tells the
616 <span class='line'>609</span> * configuration group and property to which the DOM element is attached to.
617 <span class='line'>610</span> */</span><span class="WHIT">
618 <span class='line'>611</span> </span><span class="WHIT"> </span><span class="NAME">this.initConfigIcons</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">input</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cfgAttr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
619 <span class='line'>612</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cfgNoDots</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgAttr.replace</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'_'</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
620 <span class='line'>613</span> </span><span class="WHIT"> </span><span class="NAME">cfgArray</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgAttr.split</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
621 <span class='line'>614</span> </span><span class="WHIT"> </span><span class="NAME">cfgProp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgArray.pop</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
622 <span class='line'>615</span> </span><span class="WHIT"> </span><span class="NAME">cfgGroup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgArray.join</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
623 <span class='line'>616</span> </span><span class="WHIT"> </span><span class="NAME">cfgGroupRef</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">config</span><span class="PUNC">,</span><span class="WHIT">
624 <span class='line'>617</span> </span><span class="WHIT"> </span><span class="NAME">langGroup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.inputs</span><span class="PUNC">;</span><span class="WHIT">
625 <span class='line'>618</span>
626 <span class='line'>619</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">n</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgArray.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
627 <span class='line'>620</span> </span><span class="WHIT"> </span><span class="NAME">cfgGroupRef</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgGroupRef</span><span class="PUNC">[</span><span class="NAME">cfgArray</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
628 <span class='line'>621</span> </span><span class="WHIT"> </span><span class="NAME">langGroup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">langGroup</span><span class="PUNC">[</span><span class="NAME">cfgArray</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
629 <span class='line'>622</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
630 <span class='line'>623</span>
631 <span class='line'>624</span> </span><span class="WHIT"> </span><span class="NAME">input._pwConfigProperty</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgProp</span><span class="PUNC">;</span><span class="WHIT">
632 <span class='line'>625</span> </span><span class="WHIT"> </span><span class="NAME">input._pwConfigGroup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgGroup</span><span class="PUNC">;</span><span class="WHIT">
633 <span class='line'>626</span> </span><span class="WHIT"> </span><span class="NAME">input._pwConfigGroupRef</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgGroupRef</span><span class="PUNC">;</span><span class="WHIT">
634 <span class='line'>627</span> </span><span class="WHIT"> </span><span class="NAME">input.title</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">langGroup</span><span class="PUNC">[</span><span class="NAME">cfgProp</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'Title'</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">langGroup</span><span class="PUNC">[</span><span class="NAME">cfgProp</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
635 <span class='line'>628</span> </span><span class="WHIT"> </span><span class="NAME">input.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'cfg_'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cfgNoDots</span><span class="PUNC">;</span><span class="WHIT">
636 <span class='line'>629</span>
637 <span class='line'>630</span> </span><span class="WHIT"> </span><span class="NAME">this.inputs</span><span class="PUNC">[</span><span class="NAME">cfgNoDots</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">input</span><span class="PUNC">;</span><span class="WHIT">
638 <span class='line'>631</span>
639 <span class='line'>632</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">labelElem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">input.getElementsByTagName</span><span class="PUNC">(</span><span class="STRN">'p'</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
640 <span class='line'>633</span> </span><span class="WHIT"> </span><span class="NAME">labelElem.replaceChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">langGroup</span><span class="PUNC">[</span><span class="NAME">cfgProp</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
641 <span class='line'>634</span> </span><span class="NAME">labelElem.firstChild</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
642 <span class='line'>635</span>
643 <span class='line'>636</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">elem</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">anchor</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">val</span><span class="PUNC">,</span><span class="WHIT">
644 <span class='line'>637</span> </span><span class="WHIT"> </span><span class="NAME">className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'configActive'</span><span class="PUNC">;</span><span class="WHIT">
645 <span class='line'>638</span> </span><span class="WHIT"> </span><span class="NAME">nodes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">input.getElementsByTagName</span><span class="PUNC">(</span><span class="STRN">'*'</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
646 <span class='line'>639</span> </span><span class="WHIT"> </span><span class="NAME">elType</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Node.ELEMENT_NODE</span><span class="PUNC">;</span><span class="WHIT">
647 <span class='line'>640</span>
648 <span class='line'>641</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">nodes.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
649 <span class='line'>642</span> </span><span class="WHIT"> </span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">nodes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
650 <span class='line'>643</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">elem.nodeType</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">elType</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
651 <span class='line'>644</span> </span><span class="WHIT"> </span><span class="KEYW">continue</span><span class="PUNC">;</span><span class="WHIT">
652 <span class='line'>645</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
653 <span class='line'>646</span>
654 <span class='line'>647</span> </span><span class="WHIT"> </span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem.getAttribute</span><span class="PUNC">(</span><span class="STRN">'data-pwConfigValue'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
655 <span class='line'>648</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">val</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
656 <span class='line'>649</span> </span><span class="WHIT"> </span><span class="KEYW">continue</span><span class="PUNC">;</span><span class="WHIT">
657 <span class='line'>650</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
658 <span class='line'>651</span>
659 <span class='line'>652</span> </span><span class="WHIT"> </span><span class="NAME">anchor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.createElement</span><span class="PUNC">(</span><span class="STRN">'a'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
660 <span class='line'>653</span> </span><span class="WHIT"> </span><span class="NAME">anchor.href</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'#'</span><span class="PUNC">;</span><span class="WHIT">
661 <span class='line'>654</span> </span><span class="WHIT"> </span><span class="NAME">anchor.title</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">langGroup</span><span class="PUNC">[</span><span class="NAME">cfgProp</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'_'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">val</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
662 <span class='line'>655</span> </span><span class="WHIT"> </span><span class="NAME">anchor.appendChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">anchor.title</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
663 <span class='line'>656</span>
664 <span class='line'>657</span> </span><span class="WHIT"> </span><span class="NAME">elem.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cfgProp</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'_'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">val</span><span class="WHIT">
665 <span class='line'>658</span> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'icon'</span><span class="PUNC">;</span><span class="WHIT">
666 <span class='line'>659</span> </span><span class="WHIT"> </span><span class="NAME">elem._pwConfigParent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">input</span><span class="PUNC">;</span><span class="WHIT">
667 <span class='line'>660</span>
668 <span class='line'>661</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cfgGroupRef</span><span class="PUNC">[</span><span class="NAME">cfgProp</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">val</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
669 <span class='line'>662</span> </span><span class="WHIT"> </span><span class="NAME">elem.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">className</span><span class="PUNC">;</span><span class="WHIT">
670 <span class='line'>663</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
671 <span class='line'>664</span>
672 <span class='line'>665</span> </span><span class="WHIT"> </span><span class="NAME">anchor.addEventListener</span><span class="PUNC">(</span><span class="STRN">'click'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.configValueClick</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
673 <span class='line'>666</span> </span><span class="WHIT"> </span><span class="NAME">anchor.addEventListener</span><span class="PUNC">(</span><span class="STRN">'mouseover'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.item_mouseover</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
674 <span class='line'>667</span> </span><span class="WHIT"> </span><span class="NAME">anchor.addEventListener</span><span class="PUNC">(</span><span class="STRN">'mouseout'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.item_mouseout</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
675 <span class='line'>668</span>
676 <span class='line'>669</span> </span><span class="WHIT"> </span><span class="NAME">elem.replaceChild</span><span class="PUNC">(</span><span class="NAME">anchor</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">elem.firstChild</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
677 <span class='line'>670</span>
678 <span class='line'>671</span> </span><span class="WHIT"> </span><span class="NAME">this.inputValues</span><span class="PUNC">[</span><span class="NAME">cfgGroup</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'_'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cfgProp</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'_'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">val</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem</span><span class="PUNC">;</span><span class="WHIT">
679 <span class='line'>672</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
680 <span class='line'>673</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
681 <span class='line'>674</span>
682 <span class='line'>675</span> </span><span class="WHIT"> </span><span class="COMM">/**
683 <span class='line'>676</span> * Initialize an HTML element associated to a boolean configuration property.
684 <span class='line'>677</span> *
685 <span class='line'>678</span> * @private
686 <span class='line'>679</span> *
687 <span class='line'>680</span> * @param {Element} elem The DOM element which is associated to the
688 <span class='line'>681</span> * configuration property.
689 <span class='line'>682</span> *
690 <span class='line'>683</span> * @param {String} cfgAttr The configuration attribute. This tells the
691 <span class='line'>684</span> * configuration group and property to which the DOM element is attached to.
692 <span class='line'>685</span> */</span><span class="WHIT">
693 <span class='line'>686</span> </span><span class="WHIT"> </span><span class="NAME">this.initConfigToggle</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">input</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cfgAttr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
694 <span class='line'>687</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cfgNoDots</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgAttr.replace</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'_'</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
695 <span class='line'>688</span> </span><span class="WHIT"> </span><span class="NAME">cfgArray</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgAttr.split</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
696 <span class='line'>689</span> </span><span class="WHIT"> </span><span class="NAME">cfgProp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgArray.pop</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
697 <span class='line'>690</span> </span><span class="WHIT"> </span><span class="NAME">cfgGroup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgArray.join</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
698 <span class='line'>691</span> </span><span class="WHIT"> </span><span class="NAME">cfgGroupRef</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">config</span><span class="PUNC">,</span><span class="WHIT">
699 <span class='line'>692</span> </span><span class="WHIT"> </span><span class="NAME">langGroup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.inputs</span><span class="PUNC">;</span><span class="WHIT">
700 <span class='line'>693</span>
701 <span class='line'>694</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">n</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgArray.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
702 <span class='line'>695</span> </span><span class="WHIT"> </span><span class="NAME">cfgGroupRef</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgGroupRef</span><span class="PUNC">[</span><span class="NAME">cfgArray</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
703 <span class='line'>696</span> </span><span class="WHIT"> </span><span class="NAME">langGroup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">langGroup</span><span class="PUNC">[</span><span class="NAME">cfgArray</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
704 <span class='line'>697</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
705 <span class='line'>698</span>
706 <span class='line'>699</span> </span><span class="WHIT"> </span><span class="NAME">input._pwConfigProperty</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgProp</span><span class="PUNC">;</span><span class="WHIT">
707 <span class='line'>700</span> </span><span class="WHIT"> </span><span class="NAME">input._pwConfigGroup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgGroup</span><span class="PUNC">;</span><span class="WHIT">
708 <span class='line'>701</span> </span><span class="WHIT"> </span><span class="NAME">input._pwConfigGroupRef</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgGroupRef</span><span class="PUNC">;</span><span class="WHIT">
709 <span class='line'>702</span> </span><span class="WHIT"> </span><span class="NAME">input.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'cfg_'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cfgNoDots</span><span class="WHIT">
710 <span class='line'>703</span> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'icon'</span><span class="PUNC">;</span><span class="WHIT">
711 <span class='line'>704</span>
712 <span class='line'>705</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cfgGroupRef</span><span class="PUNC">[</span><span class="NAME">cfgProp</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
713 <span class='line'>706</span> </span><span class="WHIT"> </span><span class="NAME">input.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'configActive'</span><span class="PUNC">;</span><span class="WHIT">
714 <span class='line'>707</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
715 <span class='line'>708</span>
716 <span class='line'>709</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">anchor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.createElement</span><span class="PUNC">(</span><span class="STRN">'a'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
717 <span class='line'>710</span> </span><span class="WHIT"> </span><span class="NAME">anchor.href</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'#'</span><span class="PUNC">;</span><span class="WHIT">
718 <span class='line'>711</span> </span><span class="WHIT"> </span><span class="NAME">anchor.title</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">langGroup</span><span class="PUNC">[</span><span class="NAME">cfgProp</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'Title'</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">langGroup</span><span class="PUNC">[</span><span class="NAME">cfgProp</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
719 <span class='line'>712</span> </span><span class="WHIT"> </span><span class="NAME">anchor.appendChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">langGroup</span><span class="PUNC">[</span><span class="NAME">cfgProp</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
720 <span class='line'>713</span>
721 <span class='line'>714</span> </span><span class="WHIT"> </span><span class="NAME">anchor.addEventListener</span><span class="PUNC">(</span><span class="STRN">'click'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.configToggleClick</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
722 <span class='line'>715</span> </span><span class="WHIT"> </span><span class="NAME">anchor.addEventListener</span><span class="PUNC">(</span><span class="STRN">'mouseover'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.item_mouseover</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
723 <span class='line'>716</span> </span><span class="WHIT"> </span><span class="NAME">anchor.addEventListener</span><span class="PUNC">(</span><span class="STRN">'mouseout'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.item_mouseout</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
724 <span class='line'>717</span>
725 <span class='line'>718</span> </span><span class="WHIT"> </span><span class="NAME">input.replaceChild</span><span class="PUNC">(</span><span class="NAME">anchor</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">input.firstChild</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
726 <span class='line'>719</span>
727 <span class='line'>720</span> </span><span class="WHIT"> </span><span class="NAME">this.inputs</span><span class="PUNC">[</span><span class="NAME">cfgNoDots</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">input</span><span class="PUNC">;</span><span class="WHIT">
728 <span class='line'>721</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
729 <span class='line'>722</span>
730 <span class='line'>723</span> </span><span class="WHIT"> </span><span class="COMM">/**
731 <span class='line'>724</span> * Initialize the image zoom input.
732 <span class='line'>725</span> *
733 <span class='line'>726</span> * @private
734 <span class='line'>727</span> * @returns {Boolean} True if the initialization was successful, or false if
735 <span class='line'>728</span> * not.
736 <span class='line'>729</span> */</span><span class="WHIT">
737 <span class='line'>730</span> </span><span class="WHIT"> </span><span class="NAME">this.initImageZoom</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
738 <span class='line'>731</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">input</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.inputs.imageZoom</span><span class="PUNC">;</span><span class="WHIT">
739 <span class='line'>732</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">input</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
740 <span class='line'>733</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// allow layouts without the zoom input</span><span class="WHIT">
741 <span class='line'>734</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
742 <span class='line'>735</span>
743 <span class='line'>736</span> </span><span class="WHIT"> </span><span class="NAME">input.value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">;</span><span class="WHIT">
744 <span class='line'>737</span> </span><span class="WHIT"> </span><span class="NAME">input._old_value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">;</span><span class="WHIT">
745 <span class='line'>738</span>
746 <span class='line'>739</span> </span><span class="WHIT"> </span><span class="COMM">// Override the attributes, based on the settings.</span><span class="WHIT">
747 <span class='line'>740</span> </span><span class="WHIT"> </span><span class="NAME">input.setAttribute</span><span class="PUNC">(</span><span class="STRN">'step'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">config.imageZoomStep</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
748 <span class='line'>741</span> </span><span class="WHIT"> </span><span class="NAME">input.setAttribute</span><span class="PUNC">(</span><span class="STRN">'max'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">config.imageZoomMax</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
749 <span class='line'>742</span> </span><span class="WHIT"> </span><span class="NAME">input.setAttribute</span><span class="PUNC">(</span><span class="STRN">'min'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">config.imageZoomMin</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
750 <span class='line'>743</span>
751 <span class='line'>744</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">changeFn</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
752 <span class='line'>745</span> </span><span class="WHIT"> </span><span class="NAME">app.imageZoomTo</span><span class="PUNC">(</span><span class="NAME">parseInt</span><span class="PUNC">(</span><span class="NAME">this.value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
753 <span class='line'>746</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
754 <span class='line'>747</span>
755 <span class='line'>748</span> </span><span class="WHIT"> </span><span class="NAME">input.addEventListener</span><span class="PUNC">(</span><span class="STRN">'change'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">changeFn</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
756 <span class='line'>749</span> </span><span class="WHIT"> </span><span class="NAME">input.addEventListener</span><span class="PUNC">(</span><span class="STRN">'input'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">changeFn</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
757 <span class='line'>750</span>
758 <span class='line'>751</span> </span><span class="WHIT"> </span><span class="COMM">// Update some language strings</span><span class="WHIT">
759 <span class='line'>752</span>
760 <span class='line'>753</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">input.parentNode</span><span class="PUNC">;</span><span class="WHIT">
761 <span class='line'>754</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">label.tagName.toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'label'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
762 <span class='line'>755</span> </span><span class="WHIT"> </span><span class="NAME">label.replaceChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">lang.imageZoomLabel</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
763 <span class='line'>756</span> </span><span class="NAME">label.firstChild</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
764 <span class='line'>757</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
765 <span class='line'>758</span>
766 <span class='line'>759</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.elems.statusZoom</span><span class="PUNC">;</span><span class="WHIT">
767 <span class='line'>760</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">elem</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
768 <span class='line'>761</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
769 <span class='line'>762</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
770 <span class='line'>763</span>
771 <span class='line'>764</span> </span><span class="WHIT"> </span><span class="NAME">elem.title</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.imageZoomTitle</span><span class="PUNC">;</span><span class="WHIT">
772 <span class='line'>765</span>
773 <span class='line'>766</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
774 <span class='line'>767</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
775 <span class='line'>768</span>
776 <span class='line'>769</span> </span><span class="WHIT"> </span><span class="COMM">/**
777 <span class='line'>770</span> * Initialize GUI elements associated to selection tool options and commands.
778 <span class='line'>771</span> *
779 <span class='line'>772</span> * @private
780 <span class='line'>773</span> * @returns {Boolean} True if the initialization was successful, or false if
781 <span class='line'>774</span> * not.
782 <span class='line'>775</span> */</span><span class="WHIT">
783 <span class='line'>776</span> </span><span class="WHIT"> </span><span class="NAME">this.initSelectionTool</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
784 <span class='line'>777</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">classDisabled</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'disabled'</span><span class="PUNC">,</span><span class="WHIT">
785 <span class='line'>778</span> </span><span class="WHIT"> </span><span class="NAME">cut</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.commands.selectionCut</span><span class="PUNC">,</span><span class="WHIT">
786 <span class='line'>779</span> </span><span class="WHIT"> </span><span class="NAME">copy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.commands.selectionCopy</span><span class="PUNC">,</span><span class="WHIT">
787 <span class='line'>780</span> </span><span class="WHIT"> </span><span class="NAME">paste</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.commands.clipboardPaste</span><span class="PUNC">;</span><span class="WHIT">
788 <span class='line'>781</span>
789 <span class='line'>782</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">paste</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
790 <span class='line'>783</span> </span><span class="WHIT"> </span><span class="NAME">app.events.add</span><span class="PUNC">(</span><span class="STRN">'clipboardUpdate'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.clipboardUpdate</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
791 <span class='line'>784</span> </span><span class="WHIT"> </span><span class="NAME">paste.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">classDisabled</span><span class="PUNC">;</span><span class="WHIT">
792 <span class='line'>785</span>
793 <span class='line'>786</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
794 <span class='line'>787</span>
795 <span class='line'>788</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cut</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">copy</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
796 <span class='line'>789</span> </span><span class="WHIT"> </span><span class="NAME">app.events.add</span><span class="PUNC">(</span><span class="STRN">'selectionChange'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.selectionChange</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
797 <span class='line'>790</span> </span><span class="WHIT"> </span><span class="NAME">cut.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">classDisabled</span><span class="PUNC">;</span><span class="WHIT">
798 <span class='line'>791</span> </span><span class="WHIT"> </span><span class="NAME">copy.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">classDisabled</span><span class="PUNC">;</span><span class="WHIT">
799 <span class='line'>792</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
800 <span class='line'>793</span>
801 <span class='line'>794</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">selTab_cmds</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">'selectionCut'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'selectionCopy'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'clipboardPaste'</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
802 <span class='line'>795</span> </span><span class="WHIT"> </span><span class="NAME">anchor</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">elem</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cmd</span><span class="PUNC">;</span><span class="WHIT">
803 <span class='line'>796</span>
804 <span class='line'>797</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">n</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">selTab_cmds.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
805 <span class='line'>798</span> </span><span class="WHIT"> </span><span class="NAME">cmd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">selTab_cmds</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
806 <span class='line'>799</span> </span><span class="WHIT"> </span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.elems</span><span class="PUNC">[</span><span class="STRN">'selTab_'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cmd</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
807 <span class='line'>800</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">elem</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
808 <span class='line'>801</span> </span><span class="WHIT"> </span><span class="KEYW">continue</span><span class="PUNC">;</span><span class="WHIT">
809 <span class='line'>802</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
810 <span class='line'>803</span>
811 <span class='line'>804</span> </span><span class="WHIT"> </span><span class="NAME">anchor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.createElement</span><span class="PUNC">(</span><span class="STRN">'a'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
812 <span class='line'>805</span> </span><span class="WHIT"> </span><span class="NAME">anchor.title</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.commands</span><span class="PUNC">[</span><span class="NAME">cmd</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
813 <span class='line'>806</span> </span><span class="WHIT"> </span><span class="NAME">anchor.href</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'#'</span><span class="PUNC">;</span><span class="WHIT">
814 <span class='line'>807</span> </span><span class="WHIT"> </span><span class="NAME">anchor.appendChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">anchor.title</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
815 <span class='line'>808</span> </span><span class="WHIT"> </span><span class="NAME">anchor.addEventListener</span><span class="PUNC">(</span><span class="STRN">'click'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.commandClick</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
816 <span class='line'>809</span>
817 <span class='line'>810</span> </span><span class="WHIT"> </span><span class="NAME">elem.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">classDisabled</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'command'</span><span class="WHIT">
818 <span class='line'>811</span> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'cmd_'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cmd</span><span class="PUNC">;</span><span class="WHIT">
819 <span class='line'>812</span> </span><span class="WHIT"> </span><span class="NAME">elem.setAttribute</span><span class="PUNC">(</span><span class="STRN">'data-pwCommand'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cmd</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
820 <span class='line'>813</span> </span><span class="WHIT"> </span><span class="NAME">elem.replaceChild</span><span class="PUNC">(</span><span class="NAME">anchor</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">elem.firstChild</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
821 <span class='line'>814</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
822 <span class='line'>815</span>
823 <span class='line'>816</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">selCrop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.commands.selectionCrop</span><span class="PUNC">,</span><span class="WHIT">
824 <span class='line'>817</span> </span><span class="WHIT"> </span><span class="NAME">selFill</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.commands.selectionFill</span><span class="PUNC">,</span><span class="WHIT">
825 <span class='line'>818</span> </span><span class="WHIT"> </span><span class="NAME">selDelete</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.commands.selectionDelete</span><span class="PUNC">;</span><span class="WHIT">
826 <span class='line'>819</span>
827 <span class='line'>820</span> </span><span class="WHIT"> </span><span class="NAME">selCrop.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">classDisabled</span><span class="PUNC">;</span><span class="WHIT">
828 <span class='line'>821</span> </span><span class="WHIT"> </span><span class="NAME">selFill.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">classDisabled</span><span class="PUNC">;</span><span class="WHIT">
829 <span class='line'>822</span> </span><span class="WHIT"> </span><span class="NAME">selDelete.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">classDisabled</span><span class="PUNC">;</span><span class="WHIT">
830 <span class='line'>823</span>
831 <span class='line'>824</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
832 <span class='line'>825</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
833 <span class='line'>826</span>
834 <span class='line'>827</span> </span><span class="WHIT"> </span><span class="COMM">/**
835 <span class='line'>828</span> * Initialize GUI elements associated to text tool options.
836 <span class='line'>829</span> *
837 <span class='line'>830</span> * @private
838 <span class='line'>831</span> * @returns {Boolean} True if the initialization was successful, or false if
839 <span class='line'>832</span> * not.
840 <span class='line'>833</span> */</span><span class="WHIT">
841 <span class='line'>834</span> </span><span class="WHIT"> </span><span class="NAME">this.initTextTool</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
842 <span class='line'>835</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">'textString'</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.inputs</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
843 <span class='line'>836</span> </span><span class="WHIT"> </span><span class="NAME">this.inputs.textString.value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.inputs.text.textString_value</span><span class="PUNC">;</span><span class="WHIT">
844 <span class='line'>837</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
845 <span class='line'>838</span>
846 <span class='line'>839</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="STRN">'text_fontFamily'</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.inputs</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">(</span><span class="STRN">'text'</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">config</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
847 <span class='line'>840</span> </span><span class="PUNC">!</span><span class="PUNC">(</span><span class="STRN">'fontFamilies'</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">config.text</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
848 <span class='line'>841</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
849 <span class='line'>842</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
850 <span class='line'>843</span>
851 <span class='line'>844</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">option</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">input</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.inputs.text_fontFamily</span><span class="PUNC">;</span><span class="WHIT">
852 <span class='line'>845</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">n</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">config.text.fontFamilies.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
853 <span class='line'>846</span> </span><span class="WHIT"> </span><span class="NAME">option</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.createElement</span><span class="PUNC">(</span><span class="STRN">'option'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
854 <span class='line'>847</span> </span><span class="WHIT"> </span><span class="NAME">option.value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">config.text.fontFamilies</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
855 <span class='line'>848</span> </span><span class="WHIT"> </span><span class="NAME">option.appendChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">option.value</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
856 <span class='line'>849</span> </span><span class="WHIT"> </span><span class="NAME">input.appendChild</span><span class="PUNC">(</span><span class="NAME">option</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
857 <span class='line'>850</span>
858 <span class='line'>851</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">option.value</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">config.text.fontFamily</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
859 <span class='line'>852</span> </span><span class="WHIT"> </span><span class="NAME">input.selectedIndex</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">;</span><span class="WHIT">
860 <span class='line'>853</span> </span><span class="WHIT"> </span><span class="NAME">input.value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">option.value</span><span class="PUNC">;</span><span class="WHIT">
861 <span class='line'>854</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
862 <span class='line'>855</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
863 <span class='line'>856</span>
864 <span class='line'>857</span> </span><span class="WHIT"> </span><span class="NAME">option</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.createElement</span><span class="PUNC">(</span><span class="STRN">'option'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
865 <span class='line'>858</span> </span><span class="WHIT"> </span><span class="NAME">option.value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'+'</span><span class="PUNC">;</span><span class="WHIT">
866 <span class='line'>859</span> </span><span class="WHIT"> </span><span class="NAME">option.appendChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">lang.inputs.text.fontFamily_add</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
867 <span class='line'>860</span> </span><span class="WHIT"> </span><span class="NAME">input.appendChild</span><span class="PUNC">(</span><span class="NAME">option</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
868 <span class='line'>861</span>
869 <span class='line'>862</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
870 <span class='line'>863</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
871 <span class='line'>864</span>
872 <span class='line'>865</span> </span><span class="WHIT"> </span><span class="COMM">/**
873 <span class='line'>866</span> * Initialize the keyboard shortcuts. Basically, this updates various strings
874 <span class='line'>867</span> * to ensure the user interface is informational.
875 <span class='line'>868</span> *
876 <span class='line'>869</span> * @private
877 <span class='line'>870</span> * @returns {Boolean} True if the initialization was successful, or false if
878 <span class='line'>871</span> * not.
879 <span class='line'>872</span> */</span><span class="WHIT">
880 <span class='line'>873</span> </span><span class="WHIT"> </span><span class="NAME">this.initKeyboardShortcuts</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
881 <span class='line'>874</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">kobj</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
882 <span class='line'>875</span>
883 <span class='line'>876</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">kid</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">config.keys</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
884 <span class='line'>877</span> </span><span class="WHIT"> </span><span class="NAME">kobj</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">config.keys</span><span class="PUNC">[</span><span class="NAME">kid</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
885 <span class='line'>878</span>
886 <span class='line'>879</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">'toolActivate'</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">kobj</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">kobj.toolActivate</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">lang.tools</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
887 <span class='line'>880</span> </span><span class="WHIT"> </span><span class="NAME">lang.tools</span><span class="PUNC">[</span><span class="NAME">kobj.toolActivate</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' [ '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">kid</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">' ]'</span><span class="PUNC">;</span><span class="WHIT">
888 <span class='line'>881</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
889 <span class='line'>882</span>
890 <span class='line'>883</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">'command'</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">kobj</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">kobj.command</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">lang.commands</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
891 <span class='line'>884</span> </span><span class="WHIT"> </span><span class="NAME">lang.commands</span><span class="PUNC">[</span><span class="NAME">kobj.command</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' [ '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">kid</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">' ]'</span><span class="PUNC">;</span><span class="WHIT">
892 <span class='line'>885</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
893 <span class='line'>886</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
894 <span class='line'>887</span>
895 <span class='line'>888</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
896 <span class='line'>889</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
897 <span class='line'>890</span>
898 <span class='line'>891</span> </span><span class="WHIT"> </span><span class="COMM">/**
899 <span class='line'>892</span> * The &lt;code>appInit&lt;/code> event handler. This method is invoked once
900 <span class='line'>893</span> * PaintWeb completes all the loading.
901 <span class='line'>894</span> *
902 <span class='line'>895</span> * &lt;p>This method dispatches the {@link pwlib.appEvent.guiShow} application
903 <span class='line'>896</span> * event.
904 <span class='line'>897</span> *
905 <span class='line'>898</span> * @private
906 <span class='line'>899</span> * @param {pwlib.appEvent.appInit} ev The application event object.
907 <span class='line'>900</span> */</span><span class="WHIT">
908 <span class='line'>901</span> </span><span class="WHIT"> </span><span class="NAME">this.appInit</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
909 <span class='line'>902</span> </span><span class="WHIT"> </span><span class="COMM">// Initialization was not successful ...</span><span class="WHIT">
910 <span class='line'>903</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev.state</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">PaintWeb.INIT_DONE</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
911 <span class='line'>904</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
912 <span class='line'>905</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
913 <span class='line'>906</span>
914 <span class='line'>907</span> </span><span class="WHIT"> </span><span class="COMM">// Make PaintWeb visible.</span><span class="WHIT">
915 <span class='line'>908</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">placeholder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">config.guiPlaceholder</span><span class="PUNC">,</span><span class="WHIT">
916 <span class='line'>909</span> </span><span class="WHIT"> </span><span class="NAME">placeholderStyle</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">placeholder.style</span><span class="PUNC">,</span><span class="WHIT">
917 <span class='line'>910</span> </span><span class="WHIT"> </span><span class="NAME">cs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">win.getComputedStyle</span><span class="PUNC">(</span><span class="NAME">placeholder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
918 <span class='line'>911</span>
919 <span class='line'>912</span> </span><span class="WHIT"> </span><span class="COMM">// We do not reset the display property. We leave this for the stylesheet.</span><span class="WHIT">
920 <span class='line'>913</span> </span><span class="WHIT"> </span><span class="NAME">placeholderStyle.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
921 <span class='line'>914</span> </span><span class="WHIT"> </span><span class="NAME">placeholderStyle.overflow</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
922 <span class='line'>915</span> </span><span class="WHIT"> </span><span class="NAME">placeholderStyle.position</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
923 <span class='line'>916</span> </span><span class="WHIT"> </span><span class="NAME">placeholderStyle.visibility</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
924 <span class='line'>917</span>
925 <span class='line'>918</span> </span><span class="WHIT"> </span><span class="COMM">// Do not allow the static positioning for the PaintWeb placeholder. </span><span class="WHIT">
926 <span class='line'>919</span> </span><span class="WHIT"> </span><span class="COMM">// Usually, the GUI requires absolute/relative positioning.</span><span class="WHIT">
927 <span class='line'>920</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cs.position</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'static'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
928 <span class='line'>921</span> </span><span class="WHIT"> </span><span class="NAME">placeholderStyle.position</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'relative'</span><span class="PUNC">;</span><span class="WHIT">
929 <span class='line'>922</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
930 <span class='line'>923</span>
931 <span class='line'>924</span> </span><span class="WHIT"> </span><span class="NAME">placeholder.focus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
932 <span class='line'>925</span>
933 <span class='line'>926</span> </span><span class="WHIT"> </span><span class="NAME">app.events.dispatch</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">appEvent.guiShow</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
934 <span class='line'>927</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
935 <span class='line'>928</span>
936 <span class='line'>929</span> </span><span class="WHIT"> </span><span class="COMM">/**
937 <span class='line'>930</span> * The &lt;code>guiResizeStart&lt;/code> event handler for the Canvas resize
938 <span class='line'>931</span> * operation.
939 <span class='line'>932</span> * @private
940 <span class='line'>933</span> */</span><span class="WHIT">
941 <span class='line'>934</span> </span><span class="WHIT"> </span><span class="NAME">this.canvasResizeStart</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
942 <span class='line'>935</span> </span><span class="WHIT"> </span><span class="NAME">this.resizeHandle.style.visibility</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'hidden'</span><span class="PUNC">;</span><span class="WHIT">
943 <span class='line'>936</span>
944 <span class='line'>937</span> </span><span class="WHIT"> </span><span class="COMM">// ugly...</span><span class="WHIT">
945 <span class='line'>938</span> </span><span class="WHIT"> </span><span class="NAME">this.timeout_</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">setTimeout</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
946 <span class='line'>939</span> </span><span class="WHIT"> </span><span class="NAME">_self.statusShow</span><span class="PUNC">(</span><span class="STRN">'guiCanvasResizerActive'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
947 <span class='line'>940</span> </span><span class="WHIT"> </span><span class="NAME">clearTimeout</span><span class="PUNC">(</span><span class="NAME">_self.canvasResizer.timeout_</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
948 <span class='line'>941</span> </span><span class="WHIT"> </span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">_self.canvasResizer.timeout_</span><span class="PUNC">;</span><span class="WHIT">
949 <span class='line'>942</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">400</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
950 <span class='line'>943</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
951 <span class='line'>944</span>
952 <span class='line'>945</span> </span><span class="WHIT"> </span><span class="COMM">/**
953 <span class='line'>946</span> * The &lt;code>guiResizeEnd&lt;/code> event handler for the Canvas resize
954 <span class='line'>947</span> * operation.
955 <span class='line'>948</span> *
956 <span class='line'>949</span> * @private
957 <span class='line'>950</span> * @param {pwlib.appEvent.guiResizeEnd} ev The application event object.
958 <span class='line'>951</span> */</span><span class="WHIT">
959 <span class='line'>952</span> </span><span class="WHIT"> </span><span class="NAME">this.canvasResizeEnd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
960 <span class='line'>953</span> </span><span class="WHIT"> </span><span class="NAME">this.resizeHandle.style.visibility</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
961 <span class='line'>954</span>
962 <span class='line'>955</span> </span><span class="WHIT"> </span><span class="NAME">app.imageCrop</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">MathRound</span><span class="PUNC">(</span><span class="NAME">ev.width</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NAME">app.image.canvasScale</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
963 <span class='line'>956</span> </span><span class="WHIT"> </span><span class="NAME">MathRound</span><span class="PUNC">(</span><span class="NAME">ev.height</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NAME">app.image.canvasScale</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
964 <span class='line'>957</span>
965 <span class='line'>958</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.timeout_</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
966 <span class='line'>959</span> </span><span class="WHIT"> </span><span class="NAME">clearTimeout</span><span class="PUNC">(</span><span class="NAME">this.timeout_</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
967 <span class='line'>960</span> </span><span class="WHIT"> </span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">this.timeout_</span><span class="PUNC">;</span><span class="WHIT">
968 <span class='line'>961</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
969 <span class='line'>962</span> </span><span class="WHIT"> </span><span class="NAME">_self.statusShow</span><span class="PUNC">(</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
970 <span class='line'>963</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
971 <span class='line'>964</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
972 <span class='line'>965</span>
973 <span class='line'>966</span> </span><span class="WHIT"> </span><span class="COMM">/**
974 <span class='line'>967</span> * The &lt;code>mouseover&lt;/code> event handler for all tools, commands and icons.
975 <span class='line'>968</span> * This simply shows the title / text content of the element in the GUI status
976 <span class='line'>969</span> * bar.
977 <span class='line'>970</span> *
978 <span class='line'>971</span> * @see pwlib.gui#statusShow The method used for displaying the message in the
979 <span class='line'>972</span> * GUI status bar.
980 <span class='line'>973</span> */</span><span class="WHIT">
981 <span class='line'>974</span> </span><span class="WHIT"> </span><span class="NAME">this.item_mouseover</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
982 <span class='line'>975</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.title</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.textConent</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
983 <span class='line'>976</span> </span><span class="WHIT"> </span><span class="NAME">_self.statusShow</span><span class="PUNC">(</span><span class="NAME">this.title</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.textContent</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
984 <span class='line'>977</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
985 <span class='line'>978</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
986 <span class='line'>979</span>
987 <span class='line'>980</span> </span><span class="WHIT"> </span><span class="COMM">/**
988 <span class='line'>981</span> * The &lt;code>mouseout&lt;/code> event handler for all tools, commands and icons.
989 <span class='line'>982</span> * This method simply resets the GUI status bar to the previous message it was
990 <span class='line'>983</span> * displaying before the user hovered the current element.
991 <span class='line'>984</span> *
992 <span class='line'>985</span> * @see pwlib.gui#statusShow The method used for displaying the message in the
993 <span class='line'>986</span> * GUI status bar.
994 <span class='line'>987</span> */</span><span class="WHIT">
995 <span class='line'>988</span> </span><span class="WHIT"> </span><span class="NAME">this.item_mouseout</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
996 <span class='line'>989</span> </span><span class="WHIT"> </span><span class="NAME">_self.statusShow</span><span class="PUNC">(</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
997 <span class='line'>990</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
998 <span class='line'>991</span>
999 <span class='line'>992</span> </span><span class="WHIT"> </span><span class="COMM">/**
1000 <span class='line'>993</span> * Show a message in the status bar.
1001 <span class='line'>994</span> *
1002 <span class='line'>995</span> * @param {String|Number} msg The message ID you want to display. The ID
1003 <span class='line'>996</span> * should be available in the {@link PaintWeb.lang.status} object. If the
1004 <span class='line'>997</span> * value is -1 then the previous non-temporary message will be displayed. If
1005 <span class='line'>998</span> * the ID is not available in the language file, then the string is shown
1006 <span class='line'>999</span> * as-is.
1007 <span class='line'>1000</span> *
1008 <span class='line'>1001</span> * @param {Boolean} [temporary=false] Tells if the message is temporary or
1009 <span class='line'>1002</span> * not.
1010 <span class='line'>1003</span> */</span><span class="WHIT">
1011 <span class='line'>1004</span> </span><span class="WHIT"> </span><span class="NAME">this.statusShow</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">msg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">temporary</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1012 <span class='line'>1005</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.elems.statusMessage</span><span class="PUNC">;</span><span class="WHIT">
1013 <span class='line'>1006</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">msg</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">elem._prevText</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1014 <span class='line'>1007</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
1015 <span class='line'>1008</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1016 <span class='line'>1009</span>
1017 <span class='line'>1010</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">msg</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1018 <span class='line'>1011</span> </span><span class="WHIT"> </span><span class="NAME">msg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem._prevText</span><span class="PUNC">;</span><span class="WHIT">
1019 <span class='line'>1012</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1020 <span class='line'>1013</span>
1021 <span class='line'>1014</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">msg</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">lang.status</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1022 <span class='line'>1015</span> </span><span class="WHIT"> </span><span class="NAME">msg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.status</span><span class="PUNC">[</span><span class="NAME">msg</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
1023 <span class='line'>1016</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1024 <span class='line'>1017</span>
1025 <span class='line'>1018</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">temporary</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1026 <span class='line'>1019</span> </span><span class="WHIT"> </span><span class="NAME">elem._prevText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">msg</span><span class="PUNC">;</span><span class="WHIT">
1027 <span class='line'>1020</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1028 <span class='line'>1021</span>
1029 <span class='line'>1022</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">elem.firstChild</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1030 <span class='line'>1023</span> </span><span class="WHIT"> </span><span class="NAME">elem.removeChild</span><span class="PUNC">(</span><span class="NAME">elem.firstChild</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1031 <span class='line'>1024</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1032 <span class='line'>1025</span>
1033 <span class='line'>1026</span> </span><span class="WHIT"> </span><span class="NAME">win.status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">msg</span><span class="PUNC">;</span><span class="WHIT">
1034 <span class='line'>1027</span>
1035 <span class='line'>1028</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">msg</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1036 <span class='line'>1029</span> </span><span class="WHIT"> </span><span class="NAME">elem.appendChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">msg</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1037 <span class='line'>1030</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1038 <span class='line'>1031</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1039 <span class='line'>1032</span>
1040 <span class='line'>1033</span> </span><span class="WHIT"> </span><span class="COMM">/**
1041 <span class='line'>1034</span> * The "About" command. This method displays the "About" panel.
1042 <span class='line'>1035</span> */</span><span class="WHIT">
1043 <span class='line'>1036</span> </span><span class="WHIT"> </span><span class="NAME">this.commandAbout</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1044 <span class='line'>1037</span> </span><span class="WHIT"> </span><span class="NAME">_self.floatingPanels.about.toggle</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1045 <span class='line'>1038</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1046 <span class='line'>1039</span>
1047 <span class='line'>1040</span> </span><span class="WHIT"> </span><span class="COMM">/**
1048 <span class='line'>1041</span> * The &lt;code>click&lt;/code> event handler for the tool DOM elements.
1049 <span class='line'>1042</span> *
1050 <span class='line'>1043</span> * @private
1051 <span class='line'>1044</span> *
1052 <span class='line'>1045</span> * @param {Event} ev The DOM Event object.
1053 <span class='line'>1046</span> *
1054 <span class='line'>1047</span> * @see PaintWeb#toolActivate to activate a drawing tool.
1055 <span class='line'>1048</span> */</span><span class="WHIT">
1056 <span class='line'>1049</span> </span><span class="WHIT"> </span><span class="NAME">this.toolClick</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1057 <span class='line'>1050</span> </span><span class="WHIT"> </span><span class="NAME">app.toolActivate</span><span class="PUNC">(</span><span class="NAME">this.parentNode.getAttribute</span><span class="PUNC">(</span><span class="STRN">'data-pwTool'</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ev</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1058 <span class='line'>1051</span> </span><span class="WHIT"> </span><span class="NAME">ev.preventDefault</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1059 <span class='line'>1052</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1060 <span class='line'>1053</span>
1061 <span class='line'>1054</span> </span><span class="WHIT"> </span><span class="COMM">/**
1062 <span class='line'>1055</span> * The &lt;code>toolActivate&lt;/code> application event handler. This method
1063 <span class='line'>1056</span> * provides visual feedback for the activation of a new drawing tool.
1064 <span class='line'>1057</span> *
1065 <span class='line'>1058</span> * @private
1066 <span class='line'>1059</span> *
1067 <span class='line'>1060</span> * @param {pwlib.appEvent.toolActivate} ev The application event object.
1068 <span class='line'>1061</span> *
1069 <span class='line'>1062</span> * @see PaintWeb#toolActivate the method which allows you to activate
1070 <span class='line'>1063</span> * a drawing tool.
1071 <span class='line'>1064</span> */</span><span class="WHIT">
1072 <span class='line'>1065</span> </span><span class="WHIT"> </span><span class="NAME">this.toolActivate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1073 <span class='line'>1066</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tabAnchor</span><span class="PUNC">,</span><span class="WHIT">
1074 <span class='line'>1067</span> </span><span class="WHIT"> </span><span class="NAME">tabActive</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.tools</span><span class="PUNC">[</span><span class="NAME">ev.id</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
1075 <span class='line'>1068</span> </span><span class="WHIT"> </span><span class="NAME">tabConfig</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.toolTabConfig</span><span class="PUNC">[</span><span class="NAME">ev.id</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
1076 <span class='line'>1069</span> </span><span class="WHIT"> </span><span class="NAME">tabPanel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.tabPanels.main</span><span class="PUNC">,</span><span class="WHIT">
1077 <span class='line'>1070</span> </span><span class="WHIT"> </span><span class="NAME">lineTab</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tabPanel.tabs.line</span><span class="PUNC">,</span><span class="WHIT">
1078 <span class='line'>1071</span> </span><span class="WHIT"> </span><span class="NAME">shapeType</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.inputs.shapeType</span><span class="PUNC">,</span><span class="WHIT">
1079 <span class='line'>1072</span> </span><span class="WHIT"> </span><span class="NAME">lineWidth</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.inputs.line_lineWidth</span><span class="PUNC">,</span><span class="WHIT">
1080 <span class='line'>1073</span> </span><span class="WHIT"> </span><span class="NAME">lineCap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.inputs.line_lineCap</span><span class="PUNC">,</span><span class="WHIT">
1081 <span class='line'>1074</span> </span><span class="WHIT"> </span><span class="NAME">lineJoin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.inputs.line_lineJoin</span><span class="PUNC">,</span><span class="WHIT">
1082 <span class='line'>1075</span> </span><span class="WHIT"> </span><span class="NAME">miterLimit</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.inputs.line_miterLimit</span><span class="PUNC">,</span><span class="WHIT">
1083 <span class='line'>1076</span> </span><span class="WHIT"> </span><span class="NAME">lineWidthLabel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
1084 <span class='line'>1077</span>
1085 <span class='line'>1078</span> </span><span class="WHIT"> </span><span class="NAME">tabActive.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_self.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'toolActive'</span><span class="PUNC">;</span><span class="WHIT">
1086 <span class='line'>1079</span> </span><span class="WHIT"> </span><span class="NAME">tabActive.firstChild.focus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1087 <span class='line'>1080</span>
1088 <span class='line'>1081</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">ev.id</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'Active'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">lang.status</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1089 <span class='line'>1082</span> </span><span class="WHIT"> </span><span class="NAME">_self.statusShow</span><span class="PUNC">(</span><span class="NAME">ev.id</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'Active'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1090 <span class='line'>1083</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1091 <span class='line'>1084</span>
1092 <span class='line'>1085</span> </span><span class="WHIT"> </span><span class="COMM">// show/hide the shapeType input config.</span><span class="WHIT">
1093 <span class='line'>1086</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">shapeType</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1094 <span class='line'>1087</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tabConfig.shapeType</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1095 <span class='line'>1088</span> </span><span class="WHIT"> </span><span class="NAME">shapeType.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
1096 <span class='line'>1089</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1097 <span class='line'>1090</span> </span><span class="WHIT"> </span><span class="NAME">shapeType.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'none'</span><span class="PUNC">;</span><span class="WHIT">
1098 <span class='line'>1091</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1099 <span class='line'>1092</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1100 <span class='line'>1093</span>
1101 <span class='line'>1094</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev.prevId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1102 <span class='line'>1095</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">prevTab</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.tools</span><span class="PUNC">[</span><span class="NAME">ev.prevId</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
1103 <span class='line'>1096</span> </span><span class="WHIT"> </span><span class="NAME">prevTabConfig</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.toolTabConfig</span><span class="PUNC">[</span><span class="NAME">ev.prevId</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1104 <span class='line'>1097</span>
1105 <span class='line'>1098</span> </span><span class="WHIT"> </span><span class="NAME">prevTab.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">prevTab.className.</span><span class="WHIT">
1106 <span class='line'>1099</span> </span><span class="WHIT"> </span><span class="NAME">replace</span><span class="PUNC">(</span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_self.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'toolActive'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1107 <span class='line'>1100</span>
1108 <span class='line'>1101</span> </span><span class="WHIT"> </span><span class="COMM">// hide the line tab</span><span class="WHIT">
1109 <span class='line'>1102</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">prevTabConfig.lineTab</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">lineTab</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1110 <span class='line'>1103</span> </span><span class="WHIT"> </span><span class="NAME">tabPanel.tabHide</span><span class="PUNC">(</span><span class="STRN">'line'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1111 <span class='line'>1104</span> </span><span class="WHIT"> </span><span class="NAME">lineTab.container.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lineTab.container.className.</span><span class="WHIT">
1112 <span class='line'>1105</span> </span><span class="WHIT"> </span><span class="NAME">replace</span><span class="PUNC">(</span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_self.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'main_line_'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">ev.prevId</span><span class="PUNC">,</span><span class="WHIT">
1113 <span class='line'>1106</span> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_self.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'main_line'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1114 <span class='line'>1107</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1115 <span class='line'>1108</span>
1116 <span class='line'>1109</span> </span><span class="WHIT"> </span><span class="COMM">// hide the tab for the current tool.</span><span class="WHIT">
1117 <span class='line'>1110</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev.prevId</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">tabPanel.tabs</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1118 <span class='line'>1111</span> </span><span class="WHIT"> </span><span class="NAME">tabPanel.tabHide</span><span class="PUNC">(</span><span class="NAME">ev.prevId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1119 <span class='line'>1112</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1120 <span class='line'>1113</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1121 <span class='line'>1114</span>
1122 <span class='line'>1115</span> </span><span class="WHIT"> </span><span class="COMM">// Change the label of the lineWidth input element.</span><span class="WHIT">
1123 <span class='line'>1116</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tabConfig.lineWidthLabel</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1124 <span class='line'>1117</span> </span><span class="WHIT"> </span><span class="NAME">lineWidthLabel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lineWidth.parentNode</span><span class="PUNC">;</span><span class="WHIT">
1125 <span class='line'>1118</span> </span><span class="WHIT"> </span><span class="NAME">lineWidthLabel.replaceChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">tabConfig.lineWidthLabel</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
1126 <span class='line'>1119</span> </span><span class="NAME">lineWidthLabel.firstChild</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1127 <span class='line'>1120</span>
1128 <span class='line'>1121</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1129 <span class='line'>1122</span>
1130 <span class='line'>1123</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">lineJoin</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1131 <span class='line'>1124</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tabConfig.lineJoin</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1132 <span class='line'>1125</span> </span><span class="WHIT"> </span><span class="NAME">lineJoin.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
1133 <span class='line'>1126</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1134 <span class='line'>1127</span> </span><span class="WHIT"> </span><span class="NAME">lineJoin.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'none'</span><span class="PUNC">;</span><span class="WHIT">
1135 <span class='line'>1128</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1136 <span class='line'>1129</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1137 <span class='line'>1130</span>
1138 <span class='line'>1131</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">lineCap</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1139 <span class='line'>1132</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tabConfig.lineCap</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1140 <span class='line'>1133</span> </span><span class="WHIT"> </span><span class="NAME">lineCap.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
1141 <span class='line'>1134</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1142 <span class='line'>1135</span> </span><span class="WHIT"> </span><span class="NAME">lineCap.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'none'</span><span class="PUNC">;</span><span class="WHIT">
1143 <span class='line'>1136</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1144 <span class='line'>1137</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1145 <span class='line'>1138</span>
1146 <span class='line'>1139</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">miterLimit</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1147 <span class='line'>1140</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tabConfig.miterLimit</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1148 <span class='line'>1141</span> </span><span class="WHIT"> </span><span class="NAME">miterLimit.parentNode.parentNode.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
1149 <span class='line'>1142</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1150 <span class='line'>1143</span> </span><span class="WHIT"> </span><span class="NAME">miterLimit.parentNode.parentNode.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'none'</span><span class="PUNC">;</span><span class="WHIT">
1151 <span class='line'>1144</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1152 <span class='line'>1145</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1153 <span class='line'>1146</span>
1154 <span class='line'>1147</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">lineWidth</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1155 <span class='line'>1148</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tabConfig.lineWidth</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1156 <span class='line'>1149</span> </span><span class="WHIT"> </span><span class="NAME">lineWidth.parentNode.parentNode.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
1157 <span class='line'>1150</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1158 <span class='line'>1151</span> </span><span class="WHIT"> </span><span class="NAME">lineWidth.parentNode.parentNode.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'none'</span><span class="PUNC">;</span><span class="WHIT">
1159 <span class='line'>1152</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1160 <span class='line'>1153</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1161 <span class='line'>1154</span>
1162 <span class='line'>1155</span> </span><span class="WHIT"> </span><span class="COMM">// show the line tab, if configured</span><span class="WHIT">
1163 <span class='line'>1156</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tabConfig.lineTab</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="STRN">'line'</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">tabPanel.tabs</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1164 <span class='line'>1157</span> </span><span class="WHIT"> </span><span class="NAME">tabAnchor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lineTab.button.firstChild</span><span class="PUNC">;</span><span class="WHIT">
1165 <span class='line'>1158</span> </span><span class="WHIT"> </span><span class="NAME">tabAnchor.title</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tabConfig.lineTabLabel</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">lang.tabs.main</span><span class="PUNC">[</span><span class="NAME">ev.id</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
1166 <span class='line'>1159</span> </span><span class="WHIT"> </span><span class="NAME">tabAnchor.replaceChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">tabAnchor.title</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
1167 <span class='line'>1160</span> </span><span class="NAME">tabAnchor.firstChild</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1168 <span class='line'>1161</span>
1169 <span class='line'>1162</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev.id</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">'line'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1170 <span class='line'>1163</span> </span><span class="WHIT"> </span><span class="NAME">lineTab.container.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lineTab.container.className.</span><span class="WHIT">
1171 <span class='line'>1164</span> </span><span class="WHIT"> </span><span class="NAME">replace</span><span class="PUNC">(</span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_self.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'main_line'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_self.classPrefix</span><span class="WHIT">
1172 <span class='line'>1165</span> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'main_line_'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">ev.id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1173 <span class='line'>1166</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1174 <span class='line'>1167</span>
1175 <span class='line'>1168</span> </span><span class="WHIT"> </span><span class="NAME">tabPanel.tabShow</span><span class="PUNC">(</span><span class="STRN">'line'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1176 <span class='line'>1169</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1177 <span class='line'>1170</span>
1178 <span class='line'>1171</span> </span><span class="WHIT"> </span><span class="COMM">// show the tab for the current tool, if there's one.</span><span class="WHIT">
1179 <span class='line'>1172</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev.id</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">tabPanel.tabs</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1180 <span class='line'>1173</span> </span><span class="WHIT"> </span><span class="NAME">tabPanel.tabShow</span><span class="PUNC">(</span><span class="NAME">ev.id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1181 <span class='line'>1174</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1182 <span class='line'>1175</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1183 <span class='line'>1176</span>
1184 <span class='line'>1177</span> </span><span class="WHIT"> </span><span class="COMM">/**
1185 <span class='line'>1178</span> * The &lt;code>toolRegister&lt;/code> application event handler. This method adds
1186 <span class='line'>1179</span> * the new tool into the GUI.
1187 <span class='line'>1180</span> *
1188 <span class='line'>1181</span> * @private
1189 <span class='line'>1182</span> *
1190 <span class='line'>1183</span> * @param {pwlib.appEvent.toolRegister} ev The application event object.
1191 <span class='line'>1184</span> *
1192 <span class='line'>1185</span> * @see PaintWeb#toolRegister the method which allows you to register new
1193 <span class='line'>1186</span> * tools.
1194 <span class='line'>1187</span> */</span><span class="WHIT">
1195 <span class='line'>1188</span> </span><span class="WHIT"> </span><span class="NAME">this.toolRegister</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1196 <span class='line'>1189</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">attr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">anchor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
1197 <span class='line'>1190</span>
1198 <span class='line'>1191</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev.id</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">_self.tools</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1199 <span class='line'>1192</span> </span><span class="WHIT"> </span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.tools</span><span class="PUNC">[</span><span class="NAME">ev.id</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
1200 <span class='line'>1193</span> </span><span class="WHIT"> </span><span class="NAME">attr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem.getAttribute</span><span class="PUNC">(</span><span class="STRN">'data-pwTool'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1201 <span class='line'>1194</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">attr</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">attr</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">ev.id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1202 <span class='line'>1195</span> </span><span class="WHIT"> </span><span class="NAME">attr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
1203 <span class='line'>1196</span> </span><span class="WHIT"> </span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
1204 <span class='line'>1197</span> </span><span class="WHIT"> </span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">_self.tools</span><span class="PUNC">[</span><span class="NAME">ev.id</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
1205 <span class='line'>1198</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1206 <span class='line'>1199</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1207 <span class='line'>1200</span>
1208 <span class='line'>1201</span> </span><span class="WHIT"> </span><span class="COMM">// Create a new element if there's none already associated to the tool ID.</span><span class="WHIT">
1209 <span class='line'>1202</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">elem</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1210 <span class='line'>1203</span> </span><span class="WHIT"> </span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.createElement</span><span class="PUNC">(</span><span class="STRN">'li'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1211 <span class='line'>1204</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1212 <span class='line'>1205</span>
1213 <span class='line'>1206</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">attr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1214 <span class='line'>1207</span> </span><span class="WHIT"> </span><span class="NAME">elem.setAttribute</span><span class="PUNC">(</span><span class="STRN">'data-pwTool'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ev.id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1215 <span class='line'>1208</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1216 <span class='line'>1209</span>
1217 <span class='line'>1210</span> </span><span class="WHIT"> </span><span class="NAME">elem.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_self.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'tool_'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">ev.id</span><span class="PUNC">;</span><span class="WHIT">
1218 <span class='line'>1211</span>
1219 <span class='line'>1212</span> </span><span class="WHIT"> </span><span class="COMM">// Append an anchor element which holds the locale string.</span><span class="WHIT">
1220 <span class='line'>1213</span> </span><span class="WHIT"> </span><span class="NAME">anchor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.createElement</span><span class="PUNC">(</span><span class="STRN">'a'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1221 <span class='line'>1214</span> </span><span class="WHIT"> </span><span class="NAME">anchor.title</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.tools</span><span class="PUNC">[</span><span class="NAME">ev.id</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
1222 <span class='line'>1215</span> </span><span class="WHIT"> </span><span class="NAME">anchor.href</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'#'</span><span class="PUNC">;</span><span class="WHIT">
1223 <span class='line'>1216</span> </span><span class="WHIT"> </span><span class="NAME">anchor.appendChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">anchor.title</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1224 <span class='line'>1217</span>
1225 <span class='line'>1218</span> </span><span class="WHIT"> </span><span class="NAME">elem.replaceChild</span><span class="PUNC">(</span><span class="NAME">anchor</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">elem.firstChild</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1226 <span class='line'>1219</span>
1227 <span class='line'>1220</span> </span><span class="WHIT"> </span><span class="NAME">anchor.addEventListener</span><span class="PUNC">(</span><span class="STRN">'click'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_self.toolClick</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1228 <span class='line'>1221</span> </span><span class="WHIT"> </span><span class="NAME">anchor.addEventListener</span><span class="PUNC">(</span><span class="STRN">'mouseover'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_self.item_mouseover</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1229 <span class='line'>1222</span> </span><span class="WHIT"> </span><span class="NAME">anchor.addEventListener</span><span class="PUNC">(</span><span class="STRN">'mouseout'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_self.item_mouseout</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1230 <span class='line'>1223</span>
1231 <span class='line'>1224</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">ev.id</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">_self.tools</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1232 <span class='line'>1225</span> </span><span class="WHIT"> </span><span class="NAME">_self.tools</span><span class="PUNC">[</span><span class="NAME">ev.id</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem</span><span class="PUNC">;</span><span class="WHIT">
1233 <span class='line'>1226</span> </span><span class="WHIT"> </span><span class="NAME">_self.elems.tools.appendChild</span><span class="PUNC">(</span><span class="NAME">elem</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1234 <span class='line'>1227</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1235 <span class='line'>1228</span>
1236 <span class='line'>1229</span> </span><span class="WHIT"> </span><span class="COMM">// Disable the text tool icon if the Canvas Text API is not supported.</span><span class="WHIT">
1237 <span class='line'>1230</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev.id</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'text'</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">app.layer.context.fillText</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
1238 <span class='line'>1231</span> </span><span class="PUNC">!</span><span class="NAME">app.layer.context.mozPathText</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">elem</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1239 <span class='line'>1232</span> </span><span class="WHIT"> </span><span class="NAME">elem.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_self.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'disabled'</span><span class="PUNC">;</span><span class="WHIT">
1240 <span class='line'>1233</span> </span><span class="WHIT"> </span><span class="NAME">anchor.title</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.tools.textUnsupported</span><span class="PUNC">;</span><span class="WHIT">
1241 <span class='line'>1234</span>
1242 <span class='line'>1235</span> </span><span class="WHIT"> </span><span class="NAME">anchor.removeEventListener</span><span class="PUNC">(</span><span class="STRN">'click'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_self.toolClick</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1243 <span class='line'>1236</span> </span><span class="WHIT"> </span><span class="NAME">anchor.addEventListener</span><span class="PUNC">(</span><span class="STRN">'click'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1244 <span class='line'>1237</span> </span><span class="WHIT"> </span><span class="NAME">ev.preventDefault</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1245 <span class='line'>1238</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1246 <span class='line'>1239</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1247 <span class='line'>1240</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1248 <span class='line'>1241</span>
1249 <span class='line'>1242</span> </span><span class="WHIT"> </span><span class="COMM">/**
1250 <span class='line'>1243</span> * The &lt;code>toolUnregister&lt;/code> application event handler. This method the
1251 <span class='line'>1244</span> * tool element from the GUI.
1252 <span class='line'>1245</span> *
1253 <span class='line'>1246</span> * @param {pwlib.appEvent.toolUnregister} ev The application event object.
1254 <span class='line'>1247</span> *
1255 <span class='line'>1248</span> * @see PaintWeb#toolUnregister the method which allows you to unregister
1256 <span class='line'>1249</span> * tools.
1257 <span class='line'>1250</span> */</span><span class="WHIT">
1258 <span class='line'>1251</span> </span><span class="WHIT"> </span><span class="NAME">this.toolUnregister</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1259 <span class='line'>1252</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev.id</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">_self.tools</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1260 <span class='line'>1253</span> </span><span class="WHIT"> </span><span class="NAME">_self.elems.tools.removeChild</span><span class="PUNC">(</span><span class="NAME">_self.tools</span><span class="PUNC">[</span><span class="NAME">ev.id</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1261 <span class='line'>1254</span> </span><span class="WHIT"> </span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">_self.tools</span><span class="PUNC">[</span><span class="NAME">ev.id</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
1262 <span class='line'>1255</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1263 <span class='line'>1256</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
1264 <span class='line'>1257</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1265 <span class='line'>1258</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1266 <span class='line'>1259</span>
1267 <span class='line'>1260</span> </span><span class="WHIT"> </span><span class="COMM">/**
1268 <span class='line'>1261</span> * The &lt;code>click&lt;/code> event handler for the command DOM elements.
1269 <span class='line'>1262</span> *
1270 <span class='line'>1263</span> * @private
1271 <span class='line'>1264</span> *
1272 <span class='line'>1265</span> * @param {Event} ev The DOM Event object.
1273 <span class='line'>1266</span> *
1274 <span class='line'>1267</span> * @see PaintWeb#commandRegister to register a new command.
1275 <span class='line'>1268</span> */</span><span class="WHIT">
1276 <span class='line'>1269</span> </span><span class="WHIT"> </span><span class="NAME">this.commandClick</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1277 <span class='line'>1270</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cmd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.parentNode.getAttribute</span><span class="PUNC">(</span><span class="STRN">'data-pwCommand'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1278 <span class='line'>1271</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cmd</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">cmd</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">app.commands</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1279 <span class='line'>1272</span> </span><span class="WHIT"> </span><span class="NAME">app.commands</span><span class="PUNC">[</span><span class="NAME">cmd</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ev</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1280 <span class='line'>1273</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1281 <span class='line'>1274</span> </span><span class="WHIT"> </span><span class="NAME">ev.preventDefault</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1282 <span class='line'>1275</span> </span><span class="WHIT"> </span><span class="NAME">this.focus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1283 <span class='line'>1276</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1284 <span class='line'>1277</span>
1285 <span class='line'>1278</span> </span><span class="WHIT"> </span><span class="COMM">/**
1286 <span class='line'>1279</span> * The &lt;code>commandRegister&lt;/code> application event handler. GUI elements
1287 <span class='line'>1280</span> * associated to commands are updated to ensure proper user interaction.
1288 <span class='line'>1281</span> *
1289 <span class='line'>1282</span> * @private
1290 <span class='line'>1283</span> *
1291 <span class='line'>1284</span> * @param {pwlib.appEvent.commandRegister} ev The application event object.
1292 <span class='line'>1285</span> *
1293 <span class='line'>1286</span> * @see PaintWeb#commandRegister the method which allows you to register new
1294 <span class='line'>1287</span> * commands.
1295 <span class='line'>1288</span> */</span><span class="WHIT">
1296 <span class='line'>1289</span> </span><span class="WHIT"> </span><span class="NAME">this.commandRegister</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1297 <span class='line'>1290</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.commands</span><span class="PUNC">[</span><span class="NAME">ev.id</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
1298 <span class='line'>1291</span> </span><span class="WHIT"> </span><span class="NAME">anchor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
1299 <span class='line'>1292</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">elem</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1300 <span class='line'>1293</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
1301 <span class='line'>1294</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1302 <span class='line'>1295</span>
1303 <span class='line'>1296</span> </span><span class="WHIT"> </span><span class="NAME">elem.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_self.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'cmd_'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">ev.id</span><span class="PUNC">;</span><span class="WHIT">
1304 <span class='line'>1297</span>
1305 <span class='line'>1298</span> </span><span class="WHIT"> </span><span class="NAME">anchor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.createElement</span><span class="PUNC">(</span><span class="STRN">'a'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1306 <span class='line'>1299</span> </span><span class="WHIT"> </span><span class="NAME">anchor.title</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.commands</span><span class="PUNC">[</span><span class="NAME">ev.id</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
1307 <span class='line'>1300</span> </span><span class="WHIT"> </span><span class="NAME">anchor.href</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'#'</span><span class="PUNC">;</span><span class="WHIT">
1308 <span class='line'>1301</span> </span><span class="WHIT"> </span><span class="NAME">anchor.appendChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">anchor.title</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1309 <span class='line'>1302</span>
1310 <span class='line'>1303</span> </span><span class="WHIT"> </span><span class="COMM">// Remove the text content and append the locale string associated to </span><span class="WHIT">
1311 <span class='line'>1304</span> </span><span class="WHIT"> </span><span class="COMM">// current command inside an anchor element (for better keyboard </span><span class="WHIT">
1312 <span class='line'>1305</span> </span><span class="WHIT"> </span><span class="COMM">// accessibility).</span><span class="WHIT">
1313 <span class='line'>1306</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">elem.firstChild</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1314 <span class='line'>1307</span> </span><span class="WHIT"> </span><span class="NAME">elem.removeChild</span><span class="PUNC">(</span><span class="NAME">elem.firstChild</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1315 <span class='line'>1308</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1316 <span class='line'>1309</span> </span><span class="WHIT"> </span><span class="NAME">elem.appendChild</span><span class="PUNC">(</span><span class="NAME">anchor</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1317 <span class='line'>1310</span>
1318 <span class='line'>1311</span> </span><span class="WHIT"> </span><span class="NAME">anchor.addEventListener</span><span class="PUNC">(</span><span class="STRN">'click'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_self.commandClick</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1319 <span class='line'>1312</span> </span><span class="WHIT"> </span><span class="NAME">anchor.addEventListener</span><span class="PUNC">(</span><span class="STRN">'mouseover'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_self.item_mouseover</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1320 <span class='line'>1313</span> </span><span class="WHIT"> </span><span class="NAME">anchor.addEventListener</span><span class="PUNC">(</span><span class="STRN">'mouseout'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_self.item_mouseout</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1321 <span class='line'>1314</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1322 <span class='line'>1315</span>
1323 <span class='line'>1316</span> </span><span class="WHIT"> </span><span class="COMM">/**
1324 <span class='line'>1317</span> * The &lt;code>commandUnregister&lt;/code> application event handler. This method
1325 <span class='line'>1318</span> * simply removes all the user interactivity from the GUI element associated
1326 <span class='line'>1319</span> * to the command being unregistered.
1327 <span class='line'>1320</span> *
1328 <span class='line'>1321</span> * @param {pwlib.appEvent.commandUnregister} ev The application event object.
1329 <span class='line'>1322</span> *
1330 <span class='line'>1323</span> * @see PaintWeb#commandUnregister the method which allows you to unregister
1331 <span class='line'>1324</span> * commands.
1332 <span class='line'>1325</span> */</span><span class="WHIT">
1333 <span class='line'>1326</span> </span><span class="WHIT"> </span><span class="NAME">this.commandUnregister</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1334 <span class='line'>1327</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.commands</span><span class="PUNC">[</span><span class="NAME">ev.id</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
1335 <span class='line'>1328</span> </span><span class="WHIT"> </span><span class="NAME">anchor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
1336 <span class='line'>1329</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">elem</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1337 <span class='line'>1330</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
1338 <span class='line'>1331</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1339 <span class='line'>1332</span>
1340 <span class='line'>1333</span> </span><span class="WHIT"> </span><span class="NAME">elem.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem.className.replace</span><span class="PUNC">(</span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_self.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'cmd_'</span><span class="WHIT">
1341 <span class='line'>1334</span> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">ev.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1342 <span class='line'>1335</span>
1343 <span class='line'>1336</span> </span><span class="WHIT"> </span><span class="NAME">anchor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem.firstChild</span><span class="PUNC">;</span><span class="WHIT">
1344 <span class='line'>1337</span> </span><span class="WHIT"> </span><span class="NAME">anchor.removeEventListener</span><span class="PUNC">(</span><span class="STRN">'click'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.commands</span><span class="PUNC">[</span><span class="NAME">ev.id</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1345 <span class='line'>1338</span> </span><span class="WHIT"> </span><span class="NAME">anchor.removeEventListener</span><span class="PUNC">(</span><span class="STRN">'mouseover'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_self.item_mouseover</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1346 <span class='line'>1339</span> </span><span class="WHIT"> </span><span class="NAME">anchor.removeEventListener</span><span class="PUNC">(</span><span class="STRN">'mouseout'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_self.item_mouseout</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1347 <span class='line'>1340</span>
1348 <span class='line'>1341</span> </span><span class="WHIT"> </span><span class="NAME">elem.removeChild</span><span class="PUNC">(</span><span class="NAME">anchor</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1349 <span class='line'>1342</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1350 <span class='line'>1343</span>
1351 <span class='line'>1344</span> </span><span class="WHIT"> </span><span class="COMM">/**
1352 <span class='line'>1345</span> * The &lt;code>historyUpdate&lt;/code> application event handler. GUI elements
1353 <span class='line'>1346</span> * associated to the &lt;code>historyUndo&lt;/code> and to the
1354 <span class='line'>1347</span> * &lt;code>historyRedo&lt;/code> commands are updated such that they are either
1355 <span class='line'>1348</span> * enabled or disabled, depending on the current history position.
1356 <span class='line'>1349</span> *
1357 <span class='line'>1350</span> * @param {pwlib.appEvent.historyUpdate} ev The application event object.
1358 <span class='line'>1351</span> * @see PaintWeb#historyGoto the method which allows you to go to different
1359 <span class='line'>1352</span> * history states.
1360 <span class='line'>1353</span> */</span><span class="WHIT">
1361 <span class='line'>1354</span> </span><span class="WHIT"> </span><span class="NAME">this.historyUpdate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1362 <span class='line'>1355</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">undoElem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.commands.historyUndo</span><span class="PUNC">,</span><span class="WHIT">
1363 <span class='line'>1356</span> </span><span class="WHIT"> </span><span class="NAME">undoState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT">
1364 <span class='line'>1357</span> </span><span class="WHIT"> </span><span class="NAME">redoElem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.commands.historyRedo</span><span class="PUNC">,</span><span class="WHIT">
1365 <span class='line'>1358</span> </span><span class="WHIT"> </span><span class="NAME">redoState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT">
1366 <span class='line'>1359</span> </span><span class="WHIT"> </span><span class="NAME">className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_self.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'disabled'</span><span class="PUNC">,</span><span class="WHIT">
1367 <span class='line'>1360</span> </span><span class="WHIT"> </span><span class="NAME">undoElemState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undoElem.className.indexOf</span><span class="PUNC">(</span><span class="NAME">className</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT">
1368 <span class='line'>1361</span> </span><span class="WHIT"> </span><span class="NAME">redoElemState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">redoElem.className.indexOf</span><span class="PUNC">(</span><span class="NAME">className</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
1369 <span class='line'>1362</span>
1370 <span class='line'>1363</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev.currentPos</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1371 <span class='line'>1364</span> </span><span class="WHIT"> </span><span class="NAME">undoState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
1372 <span class='line'>1365</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1373 <span class='line'>1366</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev.currentPos</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">ev.states</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1374 <span class='line'>1367</span> </span><span class="WHIT"> </span><span class="NAME">redoState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
1375 <span class='line'>1368</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1376 <span class='line'>1369</span>
1377 <span class='line'>1370</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">undoElemState</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">undoState</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1378 <span class='line'>1371</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">undoState</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1379 <span class='line'>1372</span> </span><span class="WHIT"> </span><span class="NAME">undoElem.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undoElem.className.replace</span><span class="PUNC">(</span><span class="NAME">className</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1380 <span class='line'>1373</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1381 <span class='line'>1374</span> </span><span class="WHIT"> </span><span class="NAME">undoElem.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">className</span><span class="PUNC">;</span><span class="WHIT">
1382 <span class='line'>1375</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1383 <span class='line'>1376</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1384 <span class='line'>1377</span>
1385 <span class='line'>1378</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">redoElemState</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">redoState</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1386 <span class='line'>1379</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">redoState</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1387 <span class='line'>1380</span> </span><span class="WHIT"> </span><span class="NAME">redoElem.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">redoElem.className.replace</span><span class="PUNC">(</span><span class="NAME">className</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1388 <span class='line'>1381</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1389 <span class='line'>1382</span> </span><span class="WHIT"> </span><span class="NAME">redoElem.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">className</span><span class="PUNC">;</span><span class="WHIT">
1390 <span class='line'>1383</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1391 <span class='line'>1384</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1392 <span class='line'>1385</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1393 <span class='line'>1386</span>
1394 <span class='line'>1387</span> </span><span class="WHIT"> </span><span class="COMM">/**
1395 <span class='line'>1388</span> * The &lt;code>imageSizeChange&lt;/code> application event handler. The GUI element
1396 <span class='line'>1389</span> * which displays the image dimensions is updated to display the new image
1397 <span class='line'>1390</span> * size.
1398 <span class='line'>1391</span> *
1399 <span class='line'>1392</span> * &lt;p>Image size refers strictly to the dimensions of the image being edited
1400 <span class='line'>1393</span> * by the user, that's width and height.
1401 <span class='line'>1394</span> *
1402 <span class='line'>1395</span> * @param {pwlib.appEvent.imageSizeChange} ev The application event object.
1403 <span class='line'>1396</span> */</span><span class="WHIT">
1404 <span class='line'>1397</span> </span><span class="WHIT"> </span><span class="NAME">this.imageSizeChange</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1405 <span class='line'>1398</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">imageSize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.elems.imageSize</span><span class="PUNC">;</span><span class="WHIT">
1406 <span class='line'>1399</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">imageSize</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1407 <span class='line'>1400</span> </span><span class="WHIT"> </span><span class="NAME">imageSize.replaceChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">ev.width</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'x'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">ev.height</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
1408 <span class='line'>1401</span> </span><span class="NAME">imageSize.firstChild</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1409 <span class='line'>1402</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1410 <span class='line'>1403</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1411 <span class='line'>1404</span>
1412 <span class='line'>1405</span> </span><span class="WHIT"> </span><span class="COMM">/**
1413 <span class='line'>1406</span> * The &lt;code>canvasSizeChange&lt;/code> application event handler. The Canvas
1414 <span class='line'>1407</span> * container element dimensions are updated to the new values and the Hand
1415 <span class='line'>1408</span> * tool is enabled/disabled as necessary.
1416 <span class='line'>1409</span> *
1417 <span class='line'>1410</span> * &lt;p>Canvas size refers strictly to the dimensions of the Canvas elements in
1418 <span class='line'>1411</span> * the browser, changed with CSS style properties, width and height. Scaling
1419 <span class='line'>1412</span> * of the Canvas elements is applied when the user zooms the image or when the
1420 <span class='line'>1413</span> * browser changes the render DPI / zoom.
1421 <span class='line'>1414</span> *
1422 <span class='line'>1415</span> * @param {pwlib.appEvent.canvasSizeChange} ev The application event object.
1423 <span class='line'>1416</span> */</span><span class="WHIT">
1424 <span class='line'>1417</span> </span><span class="WHIT"> </span><span class="NAME">this.canvasSizeChange</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1425 <span class='line'>1418</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">canvasContainer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.elems.canvasContainer</span><span class="PUNC">,</span><span class="WHIT">
1426 <span class='line'>1419</span> </span><span class="WHIT"> </span><span class="NAME">canvasResizer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.canvasResizer</span><span class="PUNC">,</span><span class="WHIT">
1427 <span class='line'>1420</span> </span><span class="WHIT"> </span><span class="NAME">className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_self.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'disabled'</span><span class="PUNC">,</span><span class="WHIT">
1428 <span class='line'>1421</span> </span><span class="WHIT"> </span><span class="NAME">hand</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.tools.hand</span><span class="PUNC">,</span><span class="WHIT">
1429 <span class='line'>1422</span> </span><span class="WHIT"> </span><span class="NAME">resizeHandle</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">canvasResizer.resizeHandle</span><span class="PUNC">,</span><span class="WHIT">
1430 <span class='line'>1423</span> </span><span class="WHIT"> </span><span class="NAME">viewport</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.elems.viewport</span><span class="PUNC">;</span><span class="WHIT">
1431 <span class='line'>1424</span>
1432 <span class='line'>1425</span> </span><span class="WHIT"> </span><span class="COMM">// Update the Canvas container to be the same size as the Canvas elements.</span><span class="WHIT">
1433 <span class='line'>1426</span> </span><span class="WHIT"> </span><span class="NAME">canvasContainer.style.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ev.width</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'px'</span><span class="PUNC">;</span><span class="WHIT">
1434 <span class='line'>1427</span> </span><span class="WHIT"> </span><span class="NAME">canvasContainer.style.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ev.height</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'px'</span><span class="PUNC">;</span><span class="WHIT">
1435 <span class='line'>1428</span>
1436 <span class='line'>1429</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">resizeHandle</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1437 <span class='line'>1430</span> </span><span class="WHIT"> </span><span class="NAME">resizeHandle.style.top</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ev.height</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'px'</span><span class="PUNC">;</span><span class="WHIT">
1438 <span class='line'>1431</span> </span><span class="WHIT"> </span><span class="NAME">resizeHandle.style.left</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ev.width</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'px'</span><span class="PUNC">;</span><span class="WHIT">
1439 <span class='line'>1432</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1440 <span class='line'>1433</span>
1441 <span class='line'>1434</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">hand</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">viewport</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1442 <span class='line'>1435</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
1443 <span class='line'>1436</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1444 <span class='line'>1437</span>
1445 <span class='line'>1438</span> </span><span class="WHIT"> </span><span class="COMM">// Update Hand tool state.</span><span class="WHIT">
1446 <span class='line'>1439</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">win.getComputedStyle</span><span class="PUNC">(</span><span class="NAME">viewport</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
1447 <span class='line'>1440</span> </span><span class="WHIT"> </span><span class="NAME">vwidth</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parseInt</span><span class="PUNC">(</span><span class="NAME">cs.width</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
1448 <span class='line'>1441</span> </span><span class="WHIT"> </span><span class="NAME">vheight</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parseInt</span><span class="PUNC">(</span><span class="NAME">cs.height</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
1449 <span class='line'>1442</span> </span><span class="WHIT"> </span><span class="NAME">enableHand</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT">
1450 <span class='line'>1443</span> </span><span class="WHIT"> </span><span class="NAME">handState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">hand.className.indexOf</span><span class="PUNC">(</span><span class="NAME">className</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
1451 <span class='line'>1444</span>
1452 <span class='line'>1445</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">vheight</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">ev.height</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">vwidth</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">ev.width</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1453 <span class='line'>1446</span> </span><span class="WHIT"> </span><span class="NAME">enableHand</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
1454 <span class='line'>1447</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1455 <span class='line'>1448</span>
1456 <span class='line'>1449</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">enableHand</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">handState</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1457 <span class='line'>1450</span> </span><span class="WHIT"> </span><span class="NAME">hand.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">hand.className.replace</span><span class="PUNC">(</span><span class="NAME">className</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1458 <span class='line'>1451</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">enableHand</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">handState</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1459 <span class='line'>1452</span> </span><span class="WHIT"> </span><span class="NAME">hand.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">className</span><span class="PUNC">;</span><span class="WHIT">
1460 <span class='line'>1453</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1461 <span class='line'>1454</span>
1462 <span class='line'>1455</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">enableHand</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">app.tool</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">app.tool._id</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'hand'</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="STRN">'prevTool'</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT">
1463 <span class='line'>1456</span> </span><span class="NAME">app.tool</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1464 <span class='line'>1457</span> </span><span class="WHIT"> </span><span class="NAME">app.toolActivate</span><span class="PUNC">(</span><span class="NAME">app.tool.prevTool</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1465 <span class='line'>1458</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1466 <span class='line'>1459</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1467 <span class='line'>1460</span>
1468 <span class='line'>1461</span> </span><span class="WHIT"> </span><span class="COMM">/**
1469 <span class='line'>1462</span> * The &lt;code>imageZoom&lt;/code> application event handler. The GUI input element
1470 <span class='line'>1463</span> * which displays the image zoom level is updated to display the new value.
1471 <span class='line'>1464</span> *
1472 <span class='line'>1465</span> * @param {pwlib.appEvent.imageZoom} ev The application event object.
1473 <span class='line'>1466</span> */</span><span class="WHIT">
1474 <span class='line'>1467</span> </span><span class="WHIT"> </span><span class="NAME">this.imageZoom</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1475 <span class='line'>1468</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.inputs.imageZoom</span><span class="PUNC">,</span><span class="WHIT">
1476 <span class='line'>1469</span> </span><span class="WHIT"> </span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">MathRound</span><span class="PUNC">(</span><span class="NAME">ev.zoom</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1477 <span class='line'>1470</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">elem.value</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">val</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1478 <span class='line'>1471</span> </span><span class="WHIT"> </span><span class="NAME">elem.value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">val</span><span class="PUNC">;</span><span class="WHIT">
1479 <span class='line'>1472</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1480 <span class='line'>1473</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1481 <span class='line'>1474</span>
1482 <span class='line'>1475</span> </span><span class="WHIT"> </span><span class="COMM">/**
1483 <span class='line'>1476</span> * The &lt;code>configChange&lt;/code> application event handler. This method
1484 <span class='line'>1477</span> * ensures the GUI input elements stay up-to-date when some PaintWeb
1485 <span class='line'>1478</span> * configuration is modified.
1486 <span class='line'>1479</span> *
1487 <span class='line'>1480</span> * @param {pwlib.appEvent.configChange} ev The application event object.
1488 <span class='line'>1481</span> */</span><span class="WHIT">
1489 <span class='line'>1482</span> </span><span class="WHIT"> </span><span class="NAME">this.configChangeHandler</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1490 <span class='line'>1483</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cfg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">input</span><span class="PUNC">;</span><span class="WHIT">
1491 <span class='line'>1484</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev.group</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1492 <span class='line'>1485</span> </span><span class="WHIT"> </span><span class="NAME">cfg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ev.group.replace</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'_'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'_'</span><span class="PUNC">;</span><span class="WHIT">
1493 <span class='line'>1486</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1494 <span class='line'>1487</span> </span><span class="WHIT"> </span><span class="NAME">cfg</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ev.config</span><span class="PUNC">;</span><span class="WHIT">
1495 <span class='line'>1488</span> </span><span class="WHIT"> </span><span class="NAME">input</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.inputs</span><span class="PUNC">[</span><span class="NAME">cfg</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
1496 <span class='line'>1489</span>
1497 <span class='line'>1490</span> </span><span class="WHIT"> </span><span class="COMM">// Handle changes for color inputs.</span><span class="WHIT">
1498 <span class='line'>1491</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">input</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">input</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.colorInputs</span><span class="PUNC">[</span><span class="NAME">cfg</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1499 <span class='line'>1492</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">color</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ev.value.replace</span><span class="PUNC">(</span><span class="REGX">/\s+/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="WHIT">
1500 <span class='line'>1493</span> </span><span class="WHIT"> </span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/^rgba\(/</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/\)$/</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1501 <span class='line'>1494</span>
1502 <span class='line'>1495</span> </span><span class="WHIT"> </span><span class="NAME">color</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">color.split</span><span class="PUNC">(</span><span class="STRN">','</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1503 <span class='line'>1496</span> </span><span class="WHIT"> </span><span class="NAME">input.updateColor</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
1504 <span class='line'>1497</span> </span><span class="WHIT"> </span><span class="NAME">red</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">color</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">255</span><span class="PUNC">,</span><span class="WHIT">
1505 <span class='line'>1498</span> </span><span class="WHIT"> </span><span class="NAME">green</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">color</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">255</span><span class="PUNC">,</span><span class="WHIT">
1506 <span class='line'>1499</span> </span><span class="WHIT"> </span><span class="NAME">blue</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">color</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">255</span><span class="PUNC">,</span><span class="WHIT">
1507 <span class='line'>1500</span> </span><span class="WHIT"> </span><span class="NAME">alpha</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">color</span><span class="PUNC">[</span><span class="NUMB">3</span><span class="PUNC">]</span><span class="WHIT">
1508 <span class='line'>1501</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1509 <span class='line'>1502</span>
1510 <span class='line'>1503</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
1511 <span class='line'>1504</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1512 <span class='line'>1505</span>
1513 <span class='line'>1506</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">input</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1514 <span class='line'>1507</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
1515 <span class='line'>1508</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1516 <span class='line'>1509</span>
1517 <span class='line'>1510</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">input.tagName.toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
1518 <span class='line'>1511</span> </span><span class="WHIT"> </span><span class="NAME">isInput</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'select'</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'input'</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'textarea'</span><span class="PUNC">;</span><span class="WHIT">
1519 <span class='line'>1512</span>
1520 <span class='line'>1513</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">isInput</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1521 <span class='line'>1514</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">input.type</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'checkbox'</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">input.checked</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">ev.value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1522 <span class='line'>1515</span> </span><span class="WHIT"> </span><span class="NAME">input.checked</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ev.value</span><span class="PUNC">;</span><span class="WHIT">
1523 <span class='line'>1516</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1524 <span class='line'>1517</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">input.type</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">'checkbox'</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">input.value</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">ev.value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1525 <span class='line'>1518</span> </span><span class="WHIT"> </span><span class="NAME">input.value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ev.value</span><span class="PUNC">;</span><span class="WHIT">
1526 <span class='line'>1519</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1527 <span class='line'>1520</span>
1528 <span class='line'>1521</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
1529 <span class='line'>1522</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1530 <span class='line'>1523</span>
1531 <span class='line'>1524</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">classActive</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_self.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'configActive'</span><span class="PUNC">;</span><span class="WHIT">
1532 <span class='line'>1525</span>
1533 <span class='line'>1526</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">input.hasAttribute</span><span class="PUNC">(</span><span class="STRN">'data-pwConfigToggle'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1534 <span class='line'>1527</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">inputActive</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">input.className.indexOf</span><span class="PUNC">(</span><span class="NAME">classActive</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
1535 <span class='line'>1528</span>
1536 <span class='line'>1529</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev.value</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">inputActive</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1537 <span class='line'>1530</span> </span><span class="WHIT"> </span><span class="NAME">input.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">classActive</span><span class="PUNC">;</span><span class="WHIT">
1538 <span class='line'>1531</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">ev.value</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">inputActive</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1539 <span class='line'>1532</span> </span><span class="WHIT"> </span><span class="NAME">input.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">input.className.replace</span><span class="PUNC">(</span><span class="NAME">classActive</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1540 <span class='line'>1533</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1541 <span class='line'>1534</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1542 <span class='line'>1535</span>
1543 <span class='line'>1536</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">classActive</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_self.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'configActive'</span><span class="PUNC">,</span><span class="WHIT">
1544 <span class='line'>1537</span> </span><span class="WHIT"> </span><span class="NAME">prevValElem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.inputValues</span><span class="PUNC">[</span><span class="NAME">cfg</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'_'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">ev.previousValue</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
1545 <span class='line'>1538</span> </span><span class="WHIT"> </span><span class="NAME">valElem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.inputValues</span><span class="PUNC">[</span><span class="NAME">cfg</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'_'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">ev.value</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
1546 <span class='line'>1539</span>
1547 <span class='line'>1540</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">prevValElem</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">prevValElem.className.indexOf</span><span class="PUNC">(</span><span class="NAME">classActive</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1548 <span class='line'>1541</span> </span><span class="WHIT"> </span><span class="NAME">prevValElem.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">prevValElem.className.replace</span><span class="PUNC">(</span><span class="NAME">classActive</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1549 <span class='line'>1542</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1550 <span class='line'>1543</span>
1551 <span class='line'>1544</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">valElem</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">valElem.className.indexOf</span><span class="PUNC">(</span><span class="NAME">classActive</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1552 <span class='line'>1545</span> </span><span class="WHIT"> </span><span class="NAME">valElem.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">classActive</span><span class="PUNC">;</span><span class="WHIT">
1553 <span class='line'>1546</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1554 <span class='line'>1547</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1555 <span class='line'>1548</span>
1556 <span class='line'>1549</span> </span><span class="WHIT"> </span><span class="COMM">/**
1557 <span class='line'>1550</span> * The &lt;code>click&lt;/code> event handler for DOM elements associated to
1558 <span class='line'>1551</span> * PaintWeb configuration values. These elements rely on parent elements which
1559 <span class='line'>1552</span> * are associated to configuration properties.
1560 <span class='line'>1553</span> *
1561 <span class='line'>1554</span> * &lt;p>This method dispatches the {@link pwlib.appEvent.configChange} event.
1562 <span class='line'>1555</span> *
1563 <span class='line'>1556</span> * @param {Event} ev The DOM Event object.
1564 <span class='line'>1557</span> */</span><span class="WHIT">
1565 <span class='line'>1558</span> </span><span class="WHIT"> </span><span class="NAME">this.configValueClick</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1566 <span class='line'>1559</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pNode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.parentNode</span><span class="PUNC">,</span><span class="WHIT">
1567 <span class='line'>1560</span> </span><span class="WHIT"> </span><span class="NAME">input</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pNode._pwConfigParent</span><span class="PUNC">,</span><span class="WHIT">
1568 <span class='line'>1561</span> </span><span class="WHIT"> </span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pNode.getAttribute</span><span class="PUNC">(</span><span class="STRN">'data-pwConfigValue'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1569 <span class='line'>1562</span>
1570 <span class='line'>1563</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">input</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">input._pwConfigProperty</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1571 <span class='line'>1564</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
1572 <span class='line'>1565</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1573 <span class='line'>1566</span>
1574 <span class='line'>1567</span> </span><span class="WHIT"> </span><span class="NAME">ev.preventDefault</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1575 <span class='line'>1568</span>
1576 <span class='line'>1569</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_self.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'configActive'</span><span class="PUNC">,</span><span class="WHIT">
1577 <span class='line'>1570</span> </span><span class="WHIT"> </span><span class="NAME">groupRef</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">input._pwConfigGroupRef</span><span class="PUNC">,</span><span class="WHIT">
1578 <span class='line'>1571</span> </span><span class="WHIT"> </span><span class="NAME">group</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">input._pwConfigGroup</span><span class="PUNC">,</span><span class="WHIT">
1579 <span class='line'>1572</span> </span><span class="WHIT"> </span><span class="NAME">prop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">input._pwConfigProperty</span><span class="PUNC">,</span><span class="WHIT">
1580 <span class='line'>1573</span> </span><span class="WHIT"> </span><span class="NAME">prevVal</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">groupRef</span><span class="PUNC">[</span><span class="NAME">prop</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
1581 <span class='line'>1574</span> </span><span class="WHIT"> </span><span class="NAME">prevValElem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.inputValues</span><span class="PUNC">[</span><span class="NAME">group.replace</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'_'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'_'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">prop</span><span class="WHIT">
1582 <span class='line'>1575</span> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'_'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">prevVal</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
1583 <span class='line'>1576</span>
1584 <span class='line'>1577</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">prevVal</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">val</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1585 <span class='line'>1578</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
1586 <span class='line'>1579</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1587 <span class='line'>1580</span>
1588 <span class='line'>1581</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">prevValElem</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">prevValElem.className.indexOf</span><span class="PUNC">(</span><span class="NAME">className</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1589 <span class='line'>1582</span> </span><span class="WHIT"> </span><span class="NAME">prevValElem.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">prevValElem.className.replace</span><span class="PUNC">(</span><span class="NAME">className</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1590 <span class='line'>1583</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1591 <span class='line'>1584</span>
1592 <span class='line'>1585</span> </span><span class="WHIT"> </span><span class="NAME">groupRef</span><span class="PUNC">[</span><span class="NAME">prop</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">val</span><span class="PUNC">;</span><span class="WHIT">
1593 <span class='line'>1586</span>
1594 <span class='line'>1587</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pNode.className.indexOf</span><span class="PUNC">(</span><span class="NAME">className</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1595 <span class='line'>1588</span> </span><span class="WHIT"> </span><span class="NAME">pNode.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">className</span><span class="PUNC">;</span><span class="WHIT">
1596 <span class='line'>1589</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1597 <span class='line'>1590</span>
1598 <span class='line'>1591</span> </span><span class="WHIT"> </span><span class="NAME">app.events.dispatch</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">appEvent.configChange</span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">prevVal</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">prop</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">group</span><span class="PUNC">,</span><span class="WHIT">
1599 <span class='line'>1592</span> </span><span class="NAME">groupRef</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1600 <span class='line'>1593</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1601 <span class='line'>1594</span>
1602 <span class='line'>1595</span> </span><span class="WHIT"> </span><span class="COMM">/**
1603 <span class='line'>1596</span> * The &lt;code>change&lt;/code> event handler for input elements associated to
1604 <span class='line'>1597</span> * PaintWeb configuration properties.
1605 <span class='line'>1598</span> *
1606 <span class='line'>1599</span> * &lt;p>This method dispatches the {@link pwlib.appEvent.configChange} event.
1607 <span class='line'>1600</span> */</span><span class="WHIT">
1608 <span class='line'>1601</span> </span><span class="WHIT"> </span><span class="NAME">this.configInputChange</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1609 <span class='line'>1602</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this._pwConfigProperty</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1610 <span class='line'>1603</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
1611 <span class='line'>1604</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1612 <span class='line'>1605</span>
1613 <span class='line'>1606</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.type</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'checkbox'</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">this.checked</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.value</span><span class="PUNC">,</span><span class="WHIT">
1614 <span class='line'>1607</span> </span><span class="WHIT"> </span><span class="NAME">groupRef</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._pwConfigGroupRef</span><span class="PUNC">,</span><span class="WHIT">
1615 <span class='line'>1608</span> </span><span class="WHIT"> </span><span class="NAME">group</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._pwConfigGroup</span><span class="PUNC">,</span><span class="WHIT">
1616 <span class='line'>1609</span> </span><span class="WHIT"> </span><span class="NAME">prop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._pwConfigProperty</span><span class="PUNC">,</span><span class="WHIT">
1617 <span class='line'>1610</span> </span><span class="WHIT"> </span><span class="NAME">prevVal</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">groupRef</span><span class="PUNC">[</span><span class="NAME">prop</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
1618 <span class='line'>1611</span>
1619 <span class='line'>1612</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.getAttribute</span><span class="PUNC">(</span><span class="STRN">'type'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'number'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1620 <span class='line'>1613</span> </span><span class="WHIT"> </span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parseInt</span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1621 <span class='line'>1614</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">this.value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1622 <span class='line'>1615</span> </span><span class="WHIT"> </span><span class="NAME">this.value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">val</span><span class="PUNC">;</span><span class="WHIT">
1623 <span class='line'>1616</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1624 <span class='line'>1617</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1625 <span class='line'>1618</span>
1626 <span class='line'>1619</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">prevVal</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1627 <span class='line'>1620</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
1628 <span class='line'>1621</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1629 <span class='line'>1622</span>
1630 <span class='line'>1623</span> </span><span class="WHIT"> </span><span class="NAME">groupRef</span><span class="PUNC">[</span><span class="NAME">prop</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">val</span><span class="PUNC">;</span><span class="WHIT">
1631 <span class='line'>1624</span>
1632 <span class='line'>1625</span> </span><span class="WHIT"> </span><span class="NAME">app.events.dispatch</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">appEvent.configChange</span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">prevVal</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">prop</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">group</span><span class="PUNC">,</span><span class="WHIT">
1633 <span class='line'>1626</span> </span><span class="NAME">groupRef</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1634 <span class='line'>1627</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1635 <span class='line'>1628</span>
1636 <span class='line'>1629</span> </span><span class="WHIT"> </span><span class="COMM">/**
1637 <span class='line'>1630</span> * The &lt;code>click&lt;/code> event handler for DOM elements associated to boolean
1638 <span class='line'>1631</span> * configuration properties. These elements only toggle the true/false value
1639 <span class='line'>1632</span> * of the configuration property.
1640 <span class='line'>1633</span> *
1641 <span class='line'>1634</span> * &lt;p>This method dispatches the {@link pwlib.appEvent.configChange} event.
1642 <span class='line'>1635</span> *
1643 <span class='line'>1636</span> * @param {Event} ev The DOM Event object.
1644 <span class='line'>1637</span> */</span><span class="WHIT">
1645 <span class='line'>1638</span> </span><span class="WHIT"> </span><span class="NAME">this.configToggleClick</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1646 <span class='line'>1639</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_self.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'configActive'</span><span class="PUNC">,</span><span class="WHIT">
1647 <span class='line'>1640</span> </span><span class="WHIT"> </span><span class="NAME">pNode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.parentNode</span><span class="PUNC">,</span><span class="WHIT">
1648 <span class='line'>1641</span> </span><span class="WHIT"> </span><span class="NAME">groupRef</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pNode._pwConfigGroupRef</span><span class="PUNC">,</span><span class="WHIT">
1649 <span class='line'>1642</span> </span><span class="WHIT"> </span><span class="NAME">group</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pNode._pwConfigGroup</span><span class="PUNC">,</span><span class="WHIT">
1650 <span class='line'>1643</span> </span><span class="WHIT"> </span><span class="NAME">prop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pNode._pwConfigProperty</span><span class="PUNC">,</span><span class="WHIT">
1651 <span class='line'>1644</span> </span><span class="WHIT"> </span><span class="NAME">elemActive</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pNode.className.indexOf</span><span class="PUNC">(</span><span class="NAME">className</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
1652 <span class='line'>1645</span>
1653 <span class='line'>1646</span> </span><span class="WHIT"> </span><span class="NAME">ev.preventDefault</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1654 <span class='line'>1647</span>
1655 <span class='line'>1648</span> </span><span class="WHIT"> </span><span class="NAME">groupRef</span><span class="PUNC">[</span><span class="NAME">prop</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">groupRef</span><span class="PUNC">[</span><span class="NAME">prop</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
1656 <span class='line'>1649</span>
1657 <span class='line'>1650</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">groupRef</span><span class="PUNC">[</span><span class="NAME">prop</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">elemActive</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1658 <span class='line'>1651</span> </span><span class="WHIT"> </span><span class="NAME">pNode.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">className</span><span class="PUNC">;</span><span class="WHIT">
1659 <span class='line'>1652</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">groupRef</span><span class="PUNC">[</span><span class="NAME">prop</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">elemActive</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1660 <span class='line'>1653</span> </span><span class="WHIT"> </span><span class="NAME">pNode.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pNode.className.replace</span><span class="PUNC">(</span><span class="NAME">className</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1661 <span class='line'>1654</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1662 <span class='line'>1655</span>
1663 <span class='line'>1656</span> </span><span class="WHIT"> </span><span class="NAME">app.events.dispatch</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">appEvent.configChange</span><span class="PUNC">(</span><span class="NAME">groupRef</span><span class="PUNC">[</span><span class="NAME">prop</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
1664 <span class='line'>1657</span> </span><span class="PUNC">!</span><span class="NAME">groupRef</span><span class="PUNC">[</span><span class="NAME">prop</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">prop</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">group</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">groupRef</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1665 <span class='line'>1658</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1666 <span class='line'>1659</span>
1667 <span class='line'>1660</span> </span><span class="WHIT"> </span><span class="COMM">/**
1668 <span class='line'>1661</span> * The &lt;code>shadowAllow&lt;/code> application event handler. This method
1669 <span class='line'>1662</span> * shows/hide the shadow tab when shadows are allowed/disallowed.
1670 <span class='line'>1663</span> *
1671 <span class='line'>1664</span> * @param {pwlib.appEvent.shadowAllow} ev The application event object.
1672 <span class='line'>1665</span> */</span><span class="WHIT">
1673 <span class='line'>1666</span> </span><span class="WHIT"> </span><span class="NAME">this.shadowAllow</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1674 <span class='line'>1667</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">'shadow'</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">_self.tabPanels.main.tabs</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1675 <span class='line'>1668</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev.allowed</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1676 <span class='line'>1669</span> </span><span class="WHIT"> </span><span class="NAME">_self.tabPanels.main.tabShow</span><span class="PUNC">(</span><span class="STRN">'shadow'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1677 <span class='line'>1670</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1678 <span class='line'>1671</span> </span><span class="WHIT"> </span><span class="NAME">_self.tabPanels.main.tabHide</span><span class="PUNC">(</span><span class="STRN">'shadow'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1679 <span class='line'>1672</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1680 <span class='line'>1673</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1681 <span class='line'>1674</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1682 <span class='line'>1675</span>
1683 <span class='line'>1676</span> </span><span class="WHIT"> </span><span class="COMM">/**
1684 <span class='line'>1677</span> * The &lt;code>clipboardUpdate&lt;/code> application event handler. The GUI element
1685 <span class='line'>1678</span> * associated to the &lt;code>clipboardPaste&lt;/code> command is updated to be
1686 <span class='line'>1679</span> * disabled/enabled depending on the event.
1687 <span class='line'>1680</span> *
1688 <span class='line'>1681</span> * @param {pwlib.appEvent.clipboardUpdate} ev The application event object.
1689 <span class='line'>1682</span> */</span><span class="WHIT">
1690 <span class='line'>1683</span> </span><span class="WHIT"> </span><span class="NAME">this.clipboardUpdate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1691 <span class='line'>1684</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">classDisabled</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_self.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'disabled'</span><span class="PUNC">,</span><span class="WHIT">
1692 <span class='line'>1685</span> </span><span class="WHIT"> </span><span class="NAME">elem</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">elemEnabled</span><span class="PUNC">,</span><span class="WHIT">
1693 <span class='line'>1686</span> </span><span class="WHIT"> </span><span class="NAME">elems</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NAME">_self.commands.clipboardPaste</span><span class="PUNC">,</span><span class="WHIT">
1694 <span class='line'>1687</span> </span><span class="NAME">_self.elems.selTab_clipboardPaste</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
1695 <span class='line'>1688</span>
1696 <span class='line'>1689</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">n</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elems.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1697 <span class='line'>1690</span> </span><span class="WHIT"> </span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elems</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
1698 <span class='line'>1691</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">elem</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1699 <span class='line'>1692</span> </span><span class="WHIT"> </span><span class="KEYW">continue</span><span class="PUNC">;</span><span class="WHIT">
1700 <span class='line'>1693</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1701 <span class='line'>1694</span>
1702 <span class='line'>1695</span> </span><span class="WHIT"> </span><span class="NAME">elemEnabled</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem.className.indexOf</span><span class="PUNC">(</span><span class="NAME">classDisabled</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
1703 <span class='line'>1696</span>
1704 <span class='line'>1697</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">ev.data</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">elemEnabled</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1705 <span class='line'>1698</span> </span><span class="WHIT"> </span><span class="NAME">elem.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">classDisabled</span><span class="PUNC">;</span><span class="WHIT">
1706 <span class='line'>1699</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev.data</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">elemEnabled</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1707 <span class='line'>1700</span> </span><span class="WHIT"> </span><span class="NAME">elem.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem.className.replace</span><span class="PUNC">(</span><span class="NAME">classDisabled</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1708 <span class='line'>1701</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1709 <span class='line'>1702</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1710 <span class='line'>1703</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1711 <span class='line'>1704</span>
1712 <span class='line'>1705</span> </span><span class="WHIT"> </span><span class="COMM">/**
1713 <span class='line'>1706</span> * The &lt;code>selectionChange&lt;/code> application event handler. The GUI
1714 <span class='line'>1707</span> * elements associated to the &lt;code>selectionCut&lt;/code> and
1715 <span class='line'>1708</span> * &lt;code>selectionCopy&lt;/code> commands are updated to be disabled/enabled
1716 <span class='line'>1709</span> * depending on the event.
1717 <span class='line'>1710</span> *
1718 <span class='line'>1711</span> * @param {pwlib.appEvent.selectionChange} ev The application event object.
1719 <span class='line'>1712</span> */</span><span class="WHIT">
1720 <span class='line'>1713</span> </span><span class="WHIT"> </span><span class="NAME">this.selectionChange</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1721 <span class='line'>1714</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">classDisabled</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_self.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'disabled'</span><span class="PUNC">,</span><span class="WHIT">
1722 <span class='line'>1715</span> </span><span class="WHIT"> </span><span class="NAME">elem</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">elemEnabled</span><span class="PUNC">,</span><span class="WHIT">
1723 <span class='line'>1716</span> </span><span class="WHIT"> </span><span class="NAME">elems</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NAME">_self.commands.selectionCut</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_self.commands.selectionCopy</span><span class="PUNC">,</span><span class="WHIT">
1724 <span class='line'>1717</span> </span><span class="NAME">_self.elems.selTab_selectionCut</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_self.elems.selTab_selectionCopy</span><span class="PUNC">,</span><span class="WHIT">
1725 <span class='line'>1718</span> </span><span class="NAME">_self.commands.selectionDelete</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_self.commands.selectionFill</span><span class="PUNC">,</span><span class="WHIT">
1726 <span class='line'>1719</span> </span><span class="NAME">_self.commands.selectionCrop</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
1727 <span class='line'>1720</span>
1728 <span class='line'>1721</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">n</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elems.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1729 <span class='line'>1722</span> </span><span class="WHIT"> </span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elems</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
1730 <span class='line'>1723</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">elem</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1731 <span class='line'>1724</span> </span><span class="WHIT"> </span><span class="KEYW">continue</span><span class="PUNC">;</span><span class="WHIT">
1732 <span class='line'>1725</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1733 <span class='line'>1726</span>
1734 <span class='line'>1727</span> </span><span class="WHIT"> </span><span class="NAME">elemEnabled</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem.className.indexOf</span><span class="PUNC">(</span><span class="NAME">classDisabled</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
1735 <span class='line'>1728</span>
1736 <span class='line'>1729</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev.state</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">ev.STATE_NONE</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">elemEnabled</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1737 <span class='line'>1730</span> </span><span class="WHIT"> </span><span class="NAME">elem.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">classDisabled</span><span class="PUNC">;</span><span class="WHIT">
1738 <span class='line'>1731</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev.state</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">ev.STATE_SELECTED</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">elemEnabled</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1739 <span class='line'>1732</span> </span><span class="WHIT"> </span><span class="NAME">elem.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem.className.replace</span><span class="PUNC">(</span><span class="NAME">classDisabled</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1740 <span class='line'>1733</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1741 <span class='line'>1734</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1742 <span class='line'>1735</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1743 <span class='line'>1736</span>
1744 <span class='line'>1737</span> </span><span class="WHIT"> </span><span class="COMM">/**
1745 <span class='line'>1738</span> * Show the graphical user interface.
1746 <span class='line'>1739</span> *
1747 <span class='line'>1740</span> * &lt;p>This method dispatches the {@link pwlib.appEvent.guiShow} application
1748 <span class='line'>1741</span> * event.
1749 <span class='line'>1742</span> */</span><span class="WHIT">
1750 <span class='line'>1743</span> </span><span class="WHIT"> </span><span class="NAME">this.show</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1751 <span class='line'>1744</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">placeholder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">config.guiPlaceholder</span><span class="PUNC">,</span><span class="WHIT">
1752 <span class='line'>1745</span> </span><span class="WHIT"> </span><span class="NAME">className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'placeholder'</span><span class="PUNC">,</span><span class="WHIT">
1753 <span class='line'>1746</span> </span><span class="WHIT"> </span><span class="NAME">re</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">RegExp</span><span class="PUNC">(</span><span class="STRN">'\\b'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">className</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1754 <span class='line'>1747</span>
1755 <span class='line'>1748</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">re.test</span><span class="PUNC">(</span><span class="NAME">placeholder.className</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1756 <span class='line'>1749</span> </span><span class="WHIT"> </span><span class="NAME">placeholder.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">className</span><span class="PUNC">;</span><span class="WHIT">
1757 <span class='line'>1750</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1758 <span class='line'>1751</span>
1759 <span class='line'>1752</span> </span><span class="WHIT"> </span><span class="NAME">placeholder.focus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1760 <span class='line'>1753</span>
1761 <span class='line'>1754</span> </span><span class="WHIT"> </span><span class="NAME">app.events.dispatch</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">appEvent.guiShow</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1762 <span class='line'>1755</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1763 <span class='line'>1756</span>
1764 <span class='line'>1757</span> </span><span class="WHIT"> </span><span class="COMM">/**
1765 <span class='line'>1758</span> * Hide the graphical user interface.
1766 <span class='line'>1759</span> *
1767 <span class='line'>1760</span> * &lt;p>This method dispatches the {@link pwlib.appEvent.guiHide} application
1768 <span class='line'>1761</span> * event.
1769 <span class='line'>1762</span> */</span><span class="WHIT">
1770 <span class='line'>1763</span> </span><span class="WHIT"> </span><span class="NAME">this.hide</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1771 <span class='line'>1764</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">placeholder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">config.guiPlaceholder</span><span class="PUNC">,</span><span class="WHIT">
1772 <span class='line'>1765</span> </span><span class="WHIT"> </span><span class="NAME">re</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">RegExp</span><span class="PUNC">(</span><span class="STRN">'\\b'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'placeholder'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'g'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1773 <span class='line'>1766</span>
1774 <span class='line'>1767</span> </span><span class="WHIT"> </span><span class="NAME">placeholder.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">placeholder.className.replace</span><span class="PUNC">(</span><span class="NAME">re</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1775 <span class='line'>1768</span>
1776 <span class='line'>1769</span> </span><span class="WHIT"> </span><span class="NAME">app.events.dispatch</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">appEvent.guiHide</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1777 <span class='line'>1770</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1778 <span class='line'>1771</span>
1779 <span class='line'>1772</span> </span><span class="WHIT"> </span><span class="COMM">/**
1780 <span class='line'>1773</span> * The application destroy event handler. This method is invoked by the main
1781 <span class='line'>1774</span> * PaintWeb application when the instance is destroyed, for the purpose of
1782 <span class='line'>1775</span> * cleaning-up the GUI-related things from the document add by the current
1783 <span class='line'>1776</span> * instance.
1784 <span class='line'>1777</span> *
1785 <span class='line'>1778</span> * @private
1786 <span class='line'>1779</span> */</span><span class="WHIT">
1787 <span class='line'>1780</span> </span><span class="WHIT"> </span><span class="NAME">this.destroy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1788 <span class='line'>1781</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">placeholder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">config.guiPlaceholder</span><span class="PUNC">;</span><span class="WHIT">
1789 <span class='line'>1782</span>
1790 <span class='line'>1783</span> </span><span class="WHIT"> </span><span class="KEYW">while</span><span class="PUNC">(</span><span class="NAME">placeholder.hasChildNodes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1791 <span class='line'>1784</span> </span><span class="WHIT"> </span><span class="NAME">placeholder.removeChild</span><span class="PUNC">(</span><span class="NAME">placeholder.firstChild</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1792 <span class='line'>1785</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1793 <span class='line'>1786</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1794 <span class='line'>1787</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1795 <span class='line'>1788</span>
1796 <span class='line'>1789</span> </span><span class="COMM">/**
1797 <span class='line'>1790</span> * @class A floating panel GUI element.
1798 <span class='line'>1791</span> *
1799 <span class='line'>1792</span> * @private
1800 <span class='line'>1793</span> *
1801 <span class='line'>1794</span> * @param {pwlib.gui} gui Reference to the PaintWeb GUI object.
1802 <span class='line'>1795</span> *
1803 <span class='line'>1796</span> * @param {Element} container Reference to the DOM element you want to transform
1804 <span class='line'>1797</span> * into a floating panel.
1805 <span class='line'>1798</span> */</span><span class="WHIT">
1806 <span class='line'>1799</span> </span><span class="NAME">pwlib.guiFloatingPanel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">gui</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">container</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1807 <span class='line'>1800</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">_self</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT">
1808 <span class='line'>1801</span> </span><span class="WHIT"> </span><span class="NAME">appEvent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pwlib.appEvent</span><span class="PUNC">,</span><span class="WHIT">
1809 <span class='line'>1802</span> </span><span class="WHIT"> </span><span class="NAME">cStyle</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">container.style</span><span class="PUNC">,</span><span class="WHIT">
1810 <span class='line'>1803</span> </span><span class="WHIT"> </span><span class="NAME">doc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gui.app.doc</span><span class="PUNC">,</span><span class="WHIT">
1811 <span class='line'>1804</span> </span><span class="WHIT"> </span><span class="NAME">guiPlaceholder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gui.app.config.guiPlaceholder</span><span class="PUNC">,</span><span class="WHIT">
1812 <span class='line'>1805</span> </span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gui.app.lang</span><span class="PUNC">,</span><span class="WHIT">
1813 <span class='line'>1806</span> </span><span class="WHIT"> </span><span class="NAME">panels</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gui.floatingPanels</span><span class="PUNC">,</span><span class="WHIT">
1814 <span class='line'>1807</span> </span><span class="WHIT"> </span><span class="NAME">win</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gui.app.win</span><span class="PUNC">,</span><span class="WHIT">
1815 <span class='line'>1808</span> </span><span class="WHIT"> </span><span class="NAME">zIndex_step</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">200</span><span class="PUNC">;</span><span class="WHIT">
1816 <span class='line'>1809</span>
1817 <span class='line'>1810</span> </span><span class="WHIT"> </span><span class="COMM">// These hold the mouse starting location during the drag operation.</span><span class="WHIT">
1818 <span class='line'>1811</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mx</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">my</span><span class="PUNC">;</span><span class="WHIT">
1819 <span class='line'>1812</span>
1820 <span class='line'>1813</span> </span><span class="WHIT"> </span><span class="COMM">// These hold the panel starting location during the drag operation.</span><span class="WHIT">
1821 <span class='line'>1814</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ptop</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pleft</span><span class="PUNC">;</span><span class="WHIT">
1822 <span class='line'>1815</span>
1823 <span class='line'>1816</span> </span><span class="WHIT"> </span><span class="COMM">/**
1824 <span class='line'>1817</span> * Panel state: hidden.
1825 <span class='line'>1818</span> * @constant
1826 <span class='line'>1819</span> */</span><span class="WHIT">
1827 <span class='line'>1820</span> </span><span class="WHIT"> </span><span class="NAME">this.STATE_HIDDEN</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
1828 <span class='line'>1821</span>
1829 <span class='line'>1822</span> </span><span class="WHIT"> </span><span class="COMM">/**
1830 <span class='line'>1823</span> * Panel state: visible.
1831 <span class='line'>1824</span> * @constant
1832 <span class='line'>1825</span> */</span><span class="WHIT">
1833 <span class='line'>1826</span> </span><span class="WHIT"> </span><span class="NAME">this.STATE_VISIBLE</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
1834 <span class='line'>1827</span>
1835 <span class='line'>1828</span> </span><span class="WHIT"> </span><span class="COMM">/**
1836 <span class='line'>1829</span> * Panel state: minimized.
1837 <span class='line'>1830</span> * @constant
1838 <span class='line'>1831</span> */</span><span class="WHIT">
1839 <span class='line'>1832</span> </span><span class="WHIT"> </span><span class="NAME">this.STATE_MINIMIZED</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">;</span><span class="WHIT">
1840 <span class='line'>1833</span>
1841 <span class='line'>1834</span> </span><span class="WHIT"> </span><span class="COMM">/**
1842 <span class='line'>1835</span> * Panel state: the user is dragging the floating panel.
1843 <span class='line'>1836</span> * @constant
1844 <span class='line'>1837</span> */</span><span class="WHIT">
1845 <span class='line'>1838</span> </span><span class="WHIT"> </span><span class="NAME">this.STATE_DRAGGING</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">;</span><span class="WHIT">
1846 <span class='line'>1839</span>
1847 <span class='line'>1840</span> </span><span class="WHIT"> </span><span class="COMM">/**
1848 <span class='line'>1841</span> * Tells the state of the floating panel: hidden/minimized/visible or if it's
1849 <span class='line'>1842</span> * being dragged.
1850 <span class='line'>1843</span> * @type Number
1851 <span class='line'>1844</span> */</span><span class="WHIT">
1852 <span class='line'>1845</span> </span><span class="WHIT"> </span><span class="NAME">this.state</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
1853 <span class='line'>1846</span>
1854 <span class='line'>1847</span> </span><span class="WHIT"> </span><span class="COMM">/**
1855 <span class='line'>1848</span> * Floating panel ID. This is the ID used in the
1856 <span class='line'>1849</span> * &lt;var>data-pwFloatingPanel&lt;/var> element attribute.
1857 <span class='line'>1850</span> * @type String
1858 <span class='line'>1851</span> */</span><span class="WHIT">
1859 <span class='line'>1852</span> </span><span class="WHIT"> </span><span class="NAME">this.id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
1860 <span class='line'>1853</span>
1861 <span class='line'>1854</span> </span><span class="WHIT"> </span><span class="COMM">/**
1862 <span class='line'>1855</span> * Reference to the floating panel element.
1863 <span class='line'>1856</span> * @type Element
1864 <span class='line'>1857</span> */</span><span class="WHIT">
1865 <span class='line'>1858</span> </span><span class="WHIT"> </span><span class="NAME">this.container</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">container</span><span class="PUNC">;</span><span class="WHIT">
1866 <span class='line'>1859</span>
1867 <span class='line'>1860</span> </span><span class="WHIT"> </span><span class="COMM">/**
1868 <span class='line'>1861</span> * The viewport element. This element is the first parent element which has
1869 <span class='line'>1862</span> * the style.overflow set to "auto" or "scroll".
1870 <span class='line'>1863</span> * @type Element
1871 <span class='line'>1864</span> */</span><span class="WHIT">
1872 <span class='line'>1865</span> </span><span class="WHIT"> </span><span class="NAME">this.viewport</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
1873 <span class='line'>1866</span>
1874 <span class='line'>1867</span> </span><span class="WHIT"> </span><span class="COMM">/**
1875 <span class='line'>1868</span> * Custom application events interface.
1876 <span class='line'>1869</span> * @type pwlib.appEvents
1877 <span class='line'>1870</span> */</span><span class="WHIT">
1878 <span class='line'>1871</span> </span><span class="WHIT"> </span><span class="NAME">this.events</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
1879 <span class='line'>1872</span>
1880 <span class='line'>1873</span> </span><span class="WHIT"> </span><span class="COMM">/**
1881 <span class='line'>1874</span> * The panel content element.
1882 <span class='line'>1875</span> * @type Element
1883 <span class='line'>1876</span> */</span><span class="WHIT">
1884 <span class='line'>1877</span> </span><span class="WHIT"> </span><span class="NAME">this.content</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
1885 <span class='line'>1878</span>
1886 <span class='line'>1879</span> </span><span class="WHIT"> </span><span class="COMM">// The initial viewport scroll position.</span><span class="WHIT">
1887 <span class='line'>1880</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">vScrollLeft</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">vScrollTop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
1888 <span class='line'>1881</span> </span><span class="WHIT"> </span><span class="NAME">btn_close</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">btn_minimize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
1889 <span class='line'>1882</span>
1890 <span class='line'>1883</span> </span><span class="WHIT"> </span><span class="COMM">/**
1891 <span class='line'>1884</span> * Initialize the floating panel.
1892 <span class='line'>1885</span> * @private
1893 <span class='line'>1886</span> */</span><span class="WHIT">
1894 <span class='line'>1887</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">init</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1895 <span class='line'>1888</span> </span><span class="WHIT"> </span><span class="NAME">_self.events</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">pwlib.appEvents</span><span class="PUNC">(</span><span class="NAME">_self</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1896 <span class='line'>1889</span>
1897 <span class='line'>1890</span> </span><span class="WHIT"> </span><span class="NAME">_self.id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.container.getAttribute</span><span class="PUNC">(</span><span class="STRN">'data-pwFloatingPanel'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1898 <span class='line'>1891</span>
1899 <span class='line'>1892</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ttl</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.container.getElementsByTagName</span><span class="PUNC">(</span><span class="STRN">'h1'</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
1900 <span class='line'>1893</span> </span><span class="WHIT"> </span><span class="NAME">content</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.container.getElementsByTagName</span><span class="PUNC">(</span><span class="STRN">'div'</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
1901 <span class='line'>1894</span> </span><span class="WHIT"> </span><span class="NAME">cs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">win.getComputedStyle</span><span class="PUNC">(</span><span class="NAME">_self.container</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
1902 <span class='line'>1895</span> </span><span class="WHIT"> </span><span class="NAME">zIndex</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parseInt</span><span class="PUNC">(</span><span class="NAME">cs.zIndex</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1903 <span class='line'>1896</span>
1904 <span class='line'>1897</span> </span><span class="WHIT"> </span><span class="NAME">cStyle.zIndex</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cs.zIndex</span><span class="PUNC">;</span><span class="WHIT">
1905 <span class='line'>1898</span>
1906 <span class='line'>1899</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">zIndex</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">panels.zIndex_</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1907 <span class='line'>1900</span> </span><span class="WHIT"> </span><span class="NAME">panels.zIndex_</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">zIndex</span><span class="PUNC">;</span><span class="WHIT">
1908 <span class='line'>1901</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1909 <span class='line'>1902</span>
1910 <span class='line'>1903</span> </span><span class="WHIT"> </span><span class="NAME">_self.container.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">gui.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'floatingPanel '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1911 <span class='line'>1904</span> </span><span class="WHIT"> </span><span class="NAME">gui.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'floatingPanel_'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_self.id</span><span class="PUNC">;</span><span class="WHIT">
1912 <span class='line'>1905</span>
1913 <span class='line'>1906</span> </span><span class="WHIT"> </span><span class="COMM">// the content</span><span class="WHIT">
1914 <span class='line'>1907</span> </span><span class="WHIT"> </span><span class="NAME">content.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">gui.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'floatingPanel_content'</span><span class="PUNC">;</span><span class="WHIT">
1915 <span class='line'>1908</span> </span><span class="WHIT"> </span><span class="NAME">_self.content</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">content</span><span class="PUNC">;</span><span class="WHIT">
1916 <span class='line'>1909</span>
1917 <span class='line'>1910</span> </span><span class="WHIT"> </span><span class="COMM">// setup the title element</span><span class="WHIT">
1918 <span class='line'>1911</span> </span><span class="WHIT"> </span><span class="NAME">ttl.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">gui.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'floatingPanel_title'</span><span class="PUNC">;</span><span class="WHIT">
1919 <span class='line'>1912</span> </span><span class="WHIT"> </span><span class="NAME">ttl.replaceChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">lang.floatingPanels</span><span class="PUNC">[</span><span class="NAME">_self.id</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
1920 <span class='line'>1913</span> </span><span class="NAME">ttl.firstChild</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1921 <span class='line'>1914</span>
1922 <span class='line'>1915</span> </span><span class="WHIT"> </span><span class="NAME">ttl.addEventListener</span><span class="PUNC">(</span><span class="STRN">'mousedown'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ev_mousedown</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1923 <span class='line'>1916</span>
1924 <span class='line'>1917</span> </span><span class="WHIT"> </span><span class="COMM">// allow auto-hide for the panel</span><span class="WHIT">
1925 <span class='line'>1918</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_self.container.getAttribute</span><span class="PUNC">(</span><span class="STRN">'data-pwPanelHide'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'true'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1926 <span class='line'>1919</span> </span><span class="WHIT"> </span><span class="NAME">_self.hide</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1927 <span class='line'>1920</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1928 <span class='line'>1921</span> </span><span class="WHIT"> </span><span class="NAME">_self.state</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.STATE_VISIBLE</span><span class="PUNC">;</span><span class="WHIT">
1929 <span class='line'>1922</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1930 <span class='line'>1923</span>
1931 <span class='line'>1924</span> </span><span class="WHIT"> </span><span class="COMM">// Find the viewport parent element.</span><span class="WHIT">
1932 <span class='line'>1925</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pNode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.container.parentNode</span><span class="PUNC">,</span><span class="WHIT">
1933 <span class='line'>1926</span> </span><span class="WHIT"> </span><span class="NAME">found</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
1934 <span class='line'>1927</span>
1935 <span class='line'>1928</span> </span><span class="WHIT"> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">found</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">pNode</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1936 <span class='line'>1929</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pNode.nodeName.toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'html'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1937 <span class='line'>1930</span> </span><span class="WHIT"> </span><span class="NAME">found</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pNode</span><span class="PUNC">;</span><span class="WHIT">
1938 <span class='line'>1931</span> </span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
1939 <span class='line'>1932</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1940 <span class='line'>1933</span>
1941 <span class='line'>1934</span> </span><span class="WHIT"> </span><span class="NAME">cs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">win.getComputedStyle</span><span class="PUNC">(</span><span class="NAME">pNode</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1942 <span class='line'>1935</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cs</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cs.overflow</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'scroll'</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">cs.overflow</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'auto'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1943 <span class='line'>1936</span> </span><span class="WHIT"> </span><span class="NAME">found</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pNode</span><span class="PUNC">;</span><span class="WHIT">
1944 <span class='line'>1937</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1945 <span class='line'>1938</span> </span><span class="WHIT"> </span><span class="NAME">pNode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pNode.parentNode</span><span class="PUNC">;</span><span class="WHIT">
1946 <span class='line'>1939</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1947 <span class='line'>1940</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1948 <span class='line'>1941</span>
1949 <span class='line'>1942</span> </span><span class="WHIT"> </span><span class="NAME">_self.viewport</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">found</span><span class="PUNC">;</span><span class="WHIT">
1950 <span class='line'>1943</span>
1951 <span class='line'>1944</span> </span><span class="WHIT"> </span><span class="COMM">// add the panel minimize button.</span><span class="WHIT">
1952 <span class='line'>1945</span> </span><span class="WHIT"> </span><span class="NAME">btn_minimize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.createElement</span><span class="PUNC">(</span><span class="STRN">'a'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1953 <span class='line'>1946</span> </span><span class="WHIT"> </span><span class="NAME">btn_minimize.href</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'#'</span><span class="PUNC">;</span><span class="WHIT">
1954 <span class='line'>1947</span> </span><span class="WHIT"> </span><span class="NAME">btn_minimize.title</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.floatingPanelMinimize</span><span class="PUNC">;</span><span class="WHIT">
1955 <span class='line'>1948</span> </span><span class="WHIT"> </span><span class="NAME">btn_minimize.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gui.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'floatingPanel_minimize'</span><span class="PUNC">;</span><span class="WHIT">
1956 <span class='line'>1949</span> </span><span class="WHIT"> </span><span class="NAME">btn_minimize.addEventListener</span><span class="PUNC">(</span><span class="STRN">'click'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ev_minimize</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1957 <span class='line'>1950</span> </span><span class="WHIT"> </span><span class="NAME">btn_minimize.appendChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">btn_minimize.title</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1958 <span class='line'>1951</span>
1959 <span class='line'>1952</span> </span><span class="WHIT"> </span><span class="NAME">_self.container.insertBefore</span><span class="PUNC">(</span><span class="NAME">btn_minimize</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">content</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1960 <span class='line'>1953</span>
1961 <span class='line'>1954</span> </span><span class="WHIT"> </span><span class="COMM">// add the panel close button.</span><span class="WHIT">
1962 <span class='line'>1955</span> </span><span class="WHIT"> </span><span class="NAME">btn_close</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.createElement</span><span class="PUNC">(</span><span class="STRN">'a'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1963 <span class='line'>1956</span> </span><span class="WHIT"> </span><span class="NAME">btn_close.href</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'#'</span><span class="PUNC">;</span><span class="WHIT">
1964 <span class='line'>1957</span> </span><span class="WHIT"> </span><span class="NAME">btn_close.title</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.floatingPanelClose</span><span class="PUNC">;</span><span class="WHIT">
1965 <span class='line'>1958</span> </span><span class="WHIT"> </span><span class="NAME">btn_close.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gui.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'floatingPanel_close'</span><span class="PUNC">;</span><span class="WHIT">
1966 <span class='line'>1959</span> </span><span class="WHIT"> </span><span class="NAME">btn_close.addEventListener</span><span class="PUNC">(</span><span class="STRN">'click'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ev_close</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1967 <span class='line'>1960</span> </span><span class="WHIT"> </span><span class="NAME">btn_close.appendChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">btn_close.title</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1968 <span class='line'>1961</span>
1969 <span class='line'>1962</span> </span><span class="WHIT"> </span><span class="NAME">_self.container.insertBefore</span><span class="PUNC">(</span><span class="NAME">btn_close</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">content</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1970 <span class='line'>1963</span>
1971 <span class='line'>1964</span> </span><span class="WHIT"> </span><span class="COMM">// setup the panel resize handle.</span><span class="WHIT">
1972 <span class='line'>1965</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_self.container.getAttribute</span><span class="PUNC">(</span><span class="STRN">'data-pwPanelResizable'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'true'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1973 <span class='line'>1966</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">resizeHandle</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.createElement</span><span class="PUNC">(</span><span class="STRN">'div'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1974 <span class='line'>1967</span> </span><span class="WHIT"> </span><span class="NAME">resizeHandle.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gui.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'floatingPanel_resizer'</span><span class="PUNC">;</span><span class="WHIT">
1975 <span class='line'>1968</span> </span><span class="WHIT"> </span><span class="NAME">_self.container.appendChild</span><span class="PUNC">(</span><span class="NAME">resizeHandle</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1976 <span class='line'>1969</span> </span><span class="WHIT"> </span><span class="NAME">_self.resizer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">pwlib.guiResizer</span><span class="PUNC">(</span><span class="NAME">gui</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">resizeHandle</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_self.container</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1977 <span class='line'>1970</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1978 <span class='line'>1971</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1979 <span class='line'>1972</span>
1980 <span class='line'>1973</span> </span><span class="WHIT"> </span><span class="COMM">/**
1981 <span class='line'>1974</span> * The &lt;code>click&lt;/code> event handler for the panel Minimize button element.
1982 <span class='line'>1975</span> *
1983 <span class='line'>1976</span> * &lt;p>This method dispatches the {@link
1984 <span class='line'>1977</span> * pwlib.appEvent.guiFloatingPanelStateChange} application event.
1985 <span class='line'>1978</span> *
1986 <span class='line'>1979</span> * @private
1987 <span class='line'>1980</span> * @param {Event} ev The DOM Event object.
1988 <span class='line'>1981</span> */</span><span class="WHIT">
1989 <span class='line'>1982</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">ev_minimize</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1990 <span class='line'>1983</span> </span><span class="WHIT"> </span><span class="NAME">ev.preventDefault</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1991 <span class='line'>1984</span> </span><span class="WHIT"> </span><span class="NAME">this.focus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1992 <span class='line'>1985</span>
1993 <span class='line'>1986</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">classMinimized</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">gui.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'floatingPanel_minimized'</span><span class="PUNC">;</span><span class="WHIT">
1994 <span class='line'>1987</span>
1995 <span class='line'>1988</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_self.state</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">_self.STATE_MINIMIZED</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1996 <span class='line'>1989</span> </span><span class="WHIT"> </span><span class="NAME">_self.state</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.STATE_VISIBLE</span><span class="PUNC">;</span><span class="WHIT">
1997 <span class='line'>1990</span>
1998 <span class='line'>1991</span> </span><span class="WHIT"> </span><span class="NAME">this.title</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.floatingPanelMinimize</span><span class="PUNC">;</span><span class="WHIT">
1999 <span class='line'>1992</span> </span><span class="WHIT"> </span><span class="NAME">this.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gui.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'floatingPanel_minimize'</span><span class="PUNC">;</span><span class="WHIT">
2000 <span class='line'>1993</span> </span><span class="WHIT"> </span><span class="NAME">this.replaceChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">this.title</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.firstChild</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2001 <span class='line'>1994</span>
2002 <span class='line'>1995</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_self.container.className.indexOf</span><span class="PUNC">(</span><span class="NAME">classMinimized</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2003 <span class='line'>1996</span> </span><span class="WHIT"> </span><span class="NAME">_self.container.className</span><span class="WHIT">
2004 <span class='line'>1997</span> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.container.className.replace</span><span class="PUNC">(</span><span class="NAME">classMinimized</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2005 <span class='line'>1998</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2006 <span class='line'>1999</span>
2007 <span class='line'>2000</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_self.state</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">_self.STATE_VISIBLE</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2008 <span class='line'>2001</span> </span><span class="WHIT"> </span><span class="NAME">_self.state</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.STATE_MINIMIZED</span><span class="PUNC">;</span><span class="WHIT">
2009 <span class='line'>2002</span>
2010 <span class='line'>2003</span> </span><span class="WHIT"> </span><span class="NAME">this.title</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.floatingPanelRestore</span><span class="PUNC">;</span><span class="WHIT">
2011 <span class='line'>2004</span> </span><span class="WHIT"> </span><span class="NAME">this.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gui.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'floatingPanel_restore'</span><span class="PUNC">;</span><span class="WHIT">
2012 <span class='line'>2005</span> </span><span class="WHIT"> </span><span class="NAME">this.replaceChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">this.title</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.firstChild</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2013 <span class='line'>2006</span>
2014 <span class='line'>2007</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_self.container.className.indexOf</span><span class="PUNC">(</span><span class="NAME">classMinimized</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2015 <span class='line'>2008</span> </span><span class="WHIT"> </span><span class="NAME">_self.container.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">classMinimized</span><span class="PUNC">;</span><span class="WHIT">
2016 <span class='line'>2009</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2017 <span class='line'>2010</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2018 <span class='line'>2011</span>
2019 <span class='line'>2012</span> </span><span class="WHIT"> </span><span class="NAME">_self.events.dispatch</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">appEvent.guiFloatingPanelStateChange</span><span class="PUNC">(</span><span class="NAME">_self.state</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2020 <span class='line'>2013</span>
2021 <span class='line'>2014</span> </span><span class="WHIT"> </span><span class="NAME">_self.bringOnTop</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2022 <span class='line'>2015</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2023 <span class='line'>2016</span>
2024 <span class='line'>2017</span> </span><span class="WHIT"> </span><span class="COMM">/**
2025 <span class='line'>2018</span> * The &lt;code>click&lt;/code> event handler for the panel Close button element.
2026 <span class='line'>2019</span> * This hides the floating panel.
2027 <span class='line'>2020</span> *
2028 <span class='line'>2021</span> * &lt;p>This method dispatches the {@link
2029 <span class='line'>2022</span> * pwlib.appEvent.guiFloatingPanelStateChange} application event.
2030 <span class='line'>2023</span> *
2031 <span class='line'>2024</span> * @private
2032 <span class='line'>2025</span> * @param {Event} ev The DOM Event object.
2033 <span class='line'>2026</span> */</span><span class="WHIT">
2034 <span class='line'>2027</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">ev_close</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2035 <span class='line'>2028</span> </span><span class="WHIT"> </span><span class="NAME">ev.preventDefault</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2036 <span class='line'>2029</span> </span><span class="WHIT"> </span><span class="NAME">_self.hide</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2037 <span class='line'>2030</span> </span><span class="WHIT"> </span><span class="NAME">guiPlaceholder.focus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2038 <span class='line'>2031</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2039 <span class='line'>2032</span>
2040 <span class='line'>2033</span> </span><span class="WHIT"> </span><span class="COMM">/**
2041 <span class='line'>2034</span> * The &lt;code>mousedown&lt;/code> event handler. This is invoked when you start
2042 <span class='line'>2035</span> * dragging the floating panel.
2043 <span class='line'>2036</span> *
2044 <span class='line'>2037</span> * &lt;p>This method dispatches the {@link
2045 <span class='line'>2038</span> * pwlib.appEvent.guiFloatingPanelStateChange} application event.
2046 <span class='line'>2039</span> *
2047 <span class='line'>2040</span> * @private
2048 <span class='line'>2041</span> * @param {Event} ev The DOM Event object.
2049 <span class='line'>2042</span> */</span><span class="WHIT">
2050 <span class='line'>2043</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">ev_mousedown</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2051 <span class='line'>2044</span> </span><span class="WHIT"> </span><span class="NAME">_self.state</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.STATE_DRAGGING</span><span class="PUNC">;</span><span class="WHIT">
2052 <span class='line'>2045</span>
2053 <span class='line'>2046</span> </span><span class="WHIT"> </span><span class="NAME">mx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ev.clientX</span><span class="PUNC">;</span><span class="WHIT">
2054 <span class='line'>2047</span> </span><span class="WHIT"> </span><span class="NAME">my</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ev.clientY</span><span class="PUNC">;</span><span class="WHIT">
2055 <span class='line'>2048</span>
2056 <span class='line'>2049</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">win.getComputedStyle</span><span class="PUNC">(</span><span class="NAME">_self.container</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2057 <span class='line'>2050</span>
2058 <span class='line'>2051</span> </span><span class="WHIT"> </span><span class="NAME">ptop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parseInt</span><span class="PUNC">(</span><span class="NAME">cs.top</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2059 <span class='line'>2052</span> </span><span class="WHIT"> </span><span class="NAME">pleft</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parseInt</span><span class="PUNC">(</span><span class="NAME">cs.left</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2060 <span class='line'>2053</span>
2061 <span class='line'>2054</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_self.viewport</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2062 <span class='line'>2055</span> </span><span class="WHIT"> </span><span class="NAME">vScrollLeft</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.viewport.scrollLeft</span><span class="PUNC">;</span><span class="WHIT">
2063 <span class='line'>2056</span> </span><span class="WHIT"> </span><span class="NAME">vScrollTop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.viewport.scrollTop</span><span class="PUNC">;</span><span class="WHIT">
2064 <span class='line'>2057</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2065 <span class='line'>2058</span>
2066 <span class='line'>2059</span> </span><span class="WHIT"> </span><span class="NAME">_self.bringOnTop</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2067 <span class='line'>2060</span>
2068 <span class='line'>2061</span> </span><span class="WHIT"> </span><span class="NAME">doc.addEventListener</span><span class="PUNC">(</span><span class="STRN">'mousemove'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ev_mousemove</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2069 <span class='line'>2062</span> </span><span class="WHIT"> </span><span class="NAME">doc.addEventListener</span><span class="PUNC">(</span><span class="STRN">'mouseup'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ev_mouseup</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2070 <span class='line'>2063</span>
2071 <span class='line'>2064</span> </span><span class="WHIT"> </span><span class="NAME">_self.events.dispatch</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">appEvent.guiFloatingPanelStateChange</span><span class="PUNC">(</span><span class="NAME">_self.state</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2072 <span class='line'>2065</span>
2073 <span class='line'>2066</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev.preventDefault</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2074 <span class='line'>2067</span> </span><span class="WHIT"> </span><span class="NAME">ev.preventDefault</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2075 <span class='line'>2068</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2076 <span class='line'>2069</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2077 <span class='line'>2070</span>
2078 <span class='line'>2071</span> </span><span class="WHIT"> </span><span class="COMM">/**
2079 <span class='line'>2072</span> * The &lt;code>mousemove&lt;/code> event handler. This performs the actual move of
2080 <span class='line'>2073</span> * the floating panel.
2081 <span class='line'>2074</span> *
2082 <span class='line'>2075</span> * @private
2083 <span class='line'>2076</span> * @param {Event} ev The DOM Event object.
2084 <span class='line'>2077</span> */</span><span class="WHIT">
2085 <span class='line'>2078</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">ev_mousemove</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2086 <span class='line'>2079</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pleft</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">ev.clientX</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">mx</span><span class="PUNC">,</span><span class="WHIT">
2087 <span class='line'>2080</span> </span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ptop</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">ev.clientY</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">my</span><span class="PUNC">;</span><span class="WHIT">
2088 <span class='line'>2081</span>
2089 <span class='line'>2082</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_self.viewport</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2090 <span class='line'>2083</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_self.viewport.scrollLeft</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">vScrollLeft</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2091 <span class='line'>2084</span> </span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.viewport.scrollLeft</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">vScrollLeft</span><span class="PUNC">;</span><span class="WHIT">
2092 <span class='line'>2085</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2093 <span class='line'>2086</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_self.viewport.scrollTop</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">vScrollTop</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2094 <span class='line'>2087</span> </span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.viewport.scrollTop</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">vScrollTop</span><span class="PUNC">;</span><span class="WHIT">
2095 <span class='line'>2088</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2096 <span class='line'>2089</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2097 <span class='line'>2090</span>
2098 <span class='line'>2091</span> </span><span class="WHIT"> </span><span class="NAME">cStyle.left</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'px'</span><span class="PUNC">;</span><span class="WHIT">
2099 <span class='line'>2092</span> </span><span class="WHIT"> </span><span class="NAME">cStyle.top</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'px'</span><span class="PUNC">;</span><span class="WHIT">
2100 <span class='line'>2093</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2101 <span class='line'>2094</span>
2102 <span class='line'>2095</span> </span><span class="WHIT"> </span><span class="COMM">/**
2103 <span class='line'>2096</span> * The &lt;code>mouseup&lt;/code> event handler. This ends the panel drag operation.
2104 <span class='line'>2097</span> *
2105 <span class='line'>2098</span> * &lt;p>This method dispatches the {@link
2106 <span class='line'>2099</span> * pwlib.appEvent.guiFloatingPanelStateChange} application event.
2107 <span class='line'>2100</span> *
2108 <span class='line'>2101</span> * @private
2109 <span class='line'>2102</span> * @param {Event} ev The DOM Event object.
2110 <span class='line'>2103</span> */</span><span class="WHIT">
2111 <span class='line'>2104</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">ev_mouseup</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2112 <span class='line'>2105</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_self.container.className.indexOf</span><span class="PUNC">(</span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">gui.classPrefix</span><span class="WHIT">
2113 <span class='line'>2106</span> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'floatingPanel_minimized'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2114 <span class='line'>2107</span> </span><span class="WHIT"> </span><span class="NAME">_self.state</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.STATE_MINIMIZED</span><span class="PUNC">;</span><span class="WHIT">
2115 <span class='line'>2108</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2116 <span class='line'>2109</span> </span><span class="WHIT"> </span><span class="NAME">_self.state</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.STATE_VISIBLE</span><span class="PUNC">;</span><span class="WHIT">
2117 <span class='line'>2110</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2118 <span class='line'>2111</span>
2119 <span class='line'>2112</span> </span><span class="WHIT"> </span><span class="NAME">doc.removeEventListener</span><span class="PUNC">(</span><span class="STRN">'mousemove'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ev_mousemove</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2120 <span class='line'>2113</span> </span><span class="WHIT"> </span><span class="NAME">doc.removeEventListener</span><span class="PUNC">(</span><span class="STRN">'mouseup'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ev_mouseup</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2121 <span class='line'>2114</span>
2122 <span class='line'>2115</span> </span><span class="WHIT"> </span><span class="NAME">guiPlaceholder.focus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2123 <span class='line'>2116</span> </span><span class="WHIT"> </span><span class="NAME">_self.events.dispatch</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">appEvent.guiFloatingPanelStateChange</span><span class="PUNC">(</span><span class="NAME">_self.state</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2124 <span class='line'>2117</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2125 <span class='line'>2118</span>
2126 <span class='line'>2119</span> </span><span class="WHIT"> </span><span class="COMM">/**
2127 <span class='line'>2120</span> * Bring the panel to the top. This method makes sure the current floating
2128 <span class='line'>2121</span> * panel is visible.
2129 <span class='line'>2122</span> */</span><span class="WHIT">
2130 <span class='line'>2123</span> </span><span class="WHIT"> </span><span class="NAME">this.bringOnTop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2131 <span class='line'>2124</span> </span><span class="WHIT"> </span><span class="NAME">panels.zIndex_</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">zIndex_step</span><span class="PUNC">;</span><span class="WHIT">
2132 <span class='line'>2125</span> </span><span class="WHIT"> </span><span class="NAME">cStyle.zIndex</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">panels.zIndex_</span><span class="PUNC">;</span><span class="WHIT">
2133 <span class='line'>2126</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2134 <span class='line'>2127</span>
2135 <span class='line'>2128</span> </span><span class="WHIT"> </span><span class="COMM">/**
2136 <span class='line'>2129</span> * Hide the panel.
2137 <span class='line'>2130</span> *
2138 <span class='line'>2131</span> * &lt;p>This method dispatches the {@link
2139 <span class='line'>2132</span> * pwlib.appEvent.guiFloatingPanelStateChange} application event.
2140 <span class='line'>2133</span> */</span><span class="WHIT">
2141 <span class='line'>2134</span> </span><span class="WHIT"> </span><span class="NAME">this.hide</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2142 <span class='line'>2135</span> </span><span class="WHIT"> </span><span class="NAME">cStyle.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'none'</span><span class="PUNC">;</span><span class="WHIT">
2143 <span class='line'>2136</span> </span><span class="WHIT"> </span><span class="NAME">_self.state</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.STATE_HIDDEN</span><span class="PUNC">;</span><span class="WHIT">
2144 <span class='line'>2137</span> </span><span class="WHIT"> </span><span class="NAME">_self.events.dispatch</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">appEvent.guiFloatingPanelStateChange</span><span class="PUNC">(</span><span class="NAME">_self.state</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2145 <span class='line'>2138</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2146 <span class='line'>2139</span>
2147 <span class='line'>2140</span> </span><span class="WHIT"> </span><span class="COMM">/**
2148 <span class='line'>2141</span> * Show the panel.
2149 <span class='line'>2142</span> *
2150 <span class='line'>2143</span> * &lt;p>This method dispatches the {@link
2151 <span class='line'>2144</span> * pwlib.appEvent.guiFloatingPanelStateChange} application event.
2152 <span class='line'>2145</span> */</span><span class="WHIT">
2153 <span class='line'>2146</span> </span><span class="WHIT"> </span><span class="NAME">this.show</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2154 <span class='line'>2147</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_self.state</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">_self.STATE_VISIBLE</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2155 <span class='line'>2148</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
2156 <span class='line'>2149</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2157 <span class='line'>2150</span>
2158 <span class='line'>2151</span> </span><span class="WHIT"> </span><span class="NAME">cStyle.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'block'</span><span class="PUNC">;</span><span class="WHIT">
2159 <span class='line'>2152</span> </span><span class="WHIT"> </span><span class="NAME">_self.state</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.STATE_VISIBLE</span><span class="PUNC">;</span><span class="WHIT">
2160 <span class='line'>2153</span>
2161 <span class='line'>2154</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">classMinimized</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">gui.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'floatingPanel_minimized'</span><span class="PUNC">;</span><span class="WHIT">
2162 <span class='line'>2155</span>
2163 <span class='line'>2156</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_self.container.className.indexOf</span><span class="PUNC">(</span><span class="NAME">classMinimized</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2164 <span class='line'>2157</span> </span><span class="WHIT"> </span><span class="NAME">_self.container.className</span><span class="WHIT">
2165 <span class='line'>2158</span> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.container.className.replace</span><span class="PUNC">(</span><span class="NAME">classMinimized</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2166 <span class='line'>2159</span>
2167 <span class='line'>2160</span> </span><span class="WHIT"> </span><span class="NAME">btn_minimize.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gui.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'floatingPanel_minimize'</span><span class="PUNC">;</span><span class="WHIT">
2168 <span class='line'>2161</span> </span><span class="WHIT"> </span><span class="NAME">btn_minimize.title</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.floatingPanelMinimize</span><span class="PUNC">;</span><span class="WHIT">
2169 <span class='line'>2162</span> </span><span class="WHIT"> </span><span class="NAME">btn_minimize.replaceChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">btn_minimize.title</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
2170 <span class='line'>2163</span> </span><span class="NAME">btn_minimize.firstChild</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2171 <span class='line'>2164</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2172 <span class='line'>2165</span>
2173 <span class='line'>2166</span> </span><span class="WHIT"> </span><span class="NAME">_self.events.dispatch</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">appEvent.guiFloatingPanelStateChange</span><span class="PUNC">(</span><span class="NAME">_self.state</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2174 <span class='line'>2167</span>
2175 <span class='line'>2168</span> </span><span class="WHIT"> </span><span class="NAME">_self.bringOnTop</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2176 <span class='line'>2169</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2177 <span class='line'>2170</span>
2178 <span class='line'>2171</span> </span><span class="WHIT"> </span><span class="COMM">/**
2179 <span class='line'>2172</span> * Toggle the panel visibility.
2180 <span class='line'>2173</span> *
2181 <span class='line'>2174</span> * &lt;p>This method dispatches the {@link
2182 <span class='line'>2175</span> * pwlib.appEvent.guiFloatingPanelStateChange} application event.
2183 <span class='line'>2176</span> */</span><span class="WHIT">
2184 <span class='line'>2177</span> </span><span class="WHIT"> </span><span class="NAME">this.toggle</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2185 <span class='line'>2178</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_self.state</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">_self.STATE_VISIBLE</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">_self.state</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT">
2186 <span class='line'>2179</span> </span><span class="NAME">_self.STATE_MINIMIZED</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2187 <span class='line'>2180</span> </span><span class="WHIT"> </span><span class="NAME">_self.hide</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2188 <span class='line'>2181</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2189 <span class='line'>2182</span> </span><span class="WHIT"> </span><span class="NAME">_self.show</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2190 <span class='line'>2183</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2191 <span class='line'>2184</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2192 <span class='line'>2185</span>
2193 <span class='line'>2186</span> </span><span class="WHIT"> </span><span class="NAME">init</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2194 <span class='line'>2187</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2195 <span class='line'>2188</span>
2196 <span class='line'>2189</span> </span><span class="COMM">/**
2197 <span class='line'>2190</span> * @class The state change event for the floating panel. This event is fired
2198 <span class='line'>2191</span> * when the floating panel changes its state. This event is not cancelable.
2199 <span class='line'>2192</span> *
2200 <span class='line'>2193</span> * @augments pwlib.appEvent
2201 <span class='line'>2194</span> *
2202 <span class='line'>2195</span> * @param {Number} state The floating panel state.
2203 <span class='line'>2196</span> */</span><span class="WHIT">
2204 <span class='line'>2197</span> </span><span class="NAME">pwlib.appEvent.guiFloatingPanelStateChange</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">state</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2205 <span class='line'>2198</span> </span><span class="WHIT"> </span><span class="COMM">/**
2206 <span class='line'>2199</span> * Panel state: hidden.
2207 <span class='line'>2200</span> * @constant
2208 <span class='line'>2201</span> */</span><span class="WHIT">
2209 <span class='line'>2202</span> </span><span class="WHIT"> </span><span class="NAME">this.STATE_HIDDEN</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
2210 <span class='line'>2203</span>
2211 <span class='line'>2204</span> </span><span class="WHIT"> </span><span class="COMM">/**
2212 <span class='line'>2205</span> * Panel state: visible.
2213 <span class='line'>2206</span> * @constant
2214 <span class='line'>2207</span> */</span><span class="WHIT">
2215 <span class='line'>2208</span> </span><span class="WHIT"> </span><span class="NAME">this.STATE_VISIBLE</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
2216 <span class='line'>2209</span>
2217 <span class='line'>2210</span> </span><span class="WHIT"> </span><span class="COMM">/**
2218 <span class='line'>2211</span> * Panel state: minimized.
2219 <span class='line'>2212</span> * @constant
2220 <span class='line'>2213</span> */</span><span class="WHIT">
2221 <span class='line'>2214</span> </span><span class="WHIT"> </span><span class="NAME">this.STATE_MINIMIZED</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">;</span><span class="WHIT">
2222 <span class='line'>2215</span>
2223 <span class='line'>2216</span> </span><span class="WHIT"> </span><span class="COMM">/**
2224 <span class='line'>2217</span> * Panel state: the user is dragging the floating panel.
2225 <span class='line'>2218</span> * @constant
2226 <span class='line'>2219</span> */</span><span class="WHIT">
2227 <span class='line'>2220</span> </span><span class="WHIT"> </span><span class="NAME">this.STATE_DRAGGING</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">;</span><span class="WHIT">
2228 <span class='line'>2221</span>
2229 <span class='line'>2222</span> </span><span class="WHIT"> </span><span class="COMM">/**
2230 <span class='line'>2223</span> * The current floating panel state.
2231 <span class='line'>2224</span> * @type Number
2232 <span class='line'>2225</span> */</span><span class="WHIT">
2233 <span class='line'>2226</span> </span><span class="WHIT"> </span><span class="NAME">this.state</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">state</span><span class="PUNC">;</span><span class="WHIT">
2234 <span class='line'>2227</span>
2235 <span class='line'>2228</span> </span><span class="WHIT"> </span><span class="NAME">pwlib.appEvent.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'guiFloatingPanelStateChange'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2236 <span class='line'>2229</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2237 <span class='line'>2230</span>
2238 <span class='line'>2231</span> </span><span class="COMM">/**
2239 <span class='line'>2232</span> * @class Resize handler.
2240 <span class='line'>2233</span> *
2241 <span class='line'>2234</span> * @private
2242 <span class='line'>2235</span> *
2243 <span class='line'>2236</span> * @param {pwlib.gui} gui Reference to the PaintWeb GUI object.
2244 <span class='line'>2237</span> *
2245 <span class='line'>2238</span> * @param {Element} resizeHandle Reference to the resize handle DOM element.
2246 <span class='line'>2239</span> * This is the element users will be able to drag to achieve the resize effect
2247 <span class='line'>2240</span> * on the &lt;var>container&lt;/var> element.
2248 <span class='line'>2241</span> *
2249 <span class='line'>2242</span> * @param {Element} container Reference to the container DOM element. This is
2250 <span class='line'>2243</span> * the element users will be able to resize using the &lt;var>resizeHandle&lt;/var>
2251 <span class='line'>2244</span> * element.
2252 <span class='line'>2245</span> */</span><span class="WHIT">
2253 <span class='line'>2246</span> </span><span class="NAME">pwlib.guiResizer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">gui</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">resizeHandle</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">container</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2254 <span class='line'>2247</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">_self</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT">
2255 <span class='line'>2248</span> </span><span class="WHIT"> </span><span class="NAME">cStyle</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">container.style</span><span class="PUNC">,</span><span class="WHIT">
2256 <span class='line'>2249</span> </span><span class="WHIT"> </span><span class="NAME">doc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gui.app.doc</span><span class="PUNC">,</span><span class="WHIT">
2257 <span class='line'>2250</span> </span><span class="WHIT"> </span><span class="NAME">guiResizeEnd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pwlib.appEvent.guiResizeEnd</span><span class="PUNC">,</span><span class="WHIT">
2258 <span class='line'>2251</span> </span><span class="WHIT"> </span><span class="NAME">guiResizeStart</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pwlib.appEvent.guiResizeStart</span><span class="PUNC">,</span><span class="WHIT">
2259 <span class='line'>2252</span> </span><span class="WHIT"> </span><span class="NAME">win</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gui.app.win</span><span class="PUNC">;</span><span class="WHIT">
2260 <span class='line'>2253</span>
2261 <span class='line'>2254</span> </span><span class="WHIT"> </span><span class="COMM">/**
2262 <span class='line'>2255</span> * Custom application events interface.
2263 <span class='line'>2256</span> * @type pwlib.appEvents
2264 <span class='line'>2257</span> */</span><span class="WHIT">
2265 <span class='line'>2258</span> </span><span class="WHIT"> </span><span class="NAME">this.events</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
2266 <span class='line'>2259</span>
2267 <span class='line'>2260</span> </span><span class="WHIT"> </span><span class="COMM">/**
2268 <span class='line'>2261</span> * The resize handle DOM element.
2269 <span class='line'>2262</span> * @type Element
2270 <span class='line'>2263</span> */</span><span class="WHIT">
2271 <span class='line'>2264</span> </span><span class="WHIT"> </span><span class="NAME">this.resizeHandle</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">resizeHandle</span><span class="PUNC">;</span><span class="WHIT">
2272 <span class='line'>2265</span>
2273 <span class='line'>2266</span> </span><span class="WHIT"> </span><span class="COMM">/**
2274 <span class='line'>2267</span> * The container DOM element. This is the element that's resized by the user
2275 <span class='line'>2268</span> * when he/she drags the resize handle.
2276 <span class='line'>2269</span> * @type Element
2277 <span class='line'>2270</span> */</span><span class="WHIT">
2278 <span class='line'>2271</span> </span><span class="WHIT"> </span><span class="NAME">this.container</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">container</span><span class="PUNC">;</span><span class="WHIT">
2279 <span class='line'>2272</span>
2280 <span class='line'>2273</span> </span><span class="WHIT"> </span><span class="COMM">/**
2281 <span class='line'>2274</span> * The viewport element. This element is the first parent element which has
2282 <span class='line'>2275</span> * the style.overflow set to "auto" or "scroll".
2283 <span class='line'>2276</span> * @type Element
2284 <span class='line'>2277</span> */</span><span class="WHIT">
2285 <span class='line'>2278</span> </span><span class="WHIT"> </span><span class="NAME">this.viewport</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
2286 <span class='line'>2279</span>
2287 <span class='line'>2280</span> </span><span class="WHIT"> </span><span class="COMM">/**
2288 <span class='line'>2281</span> * Tells if the user resizing the container now.
2289 <span class='line'>2282</span> * @type Boolean
2290 <span class='line'>2283</span> */</span><span class="WHIT">
2291 <span class='line'>2284</span> </span><span class="WHIT"> </span><span class="NAME">this.resizing</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
2292 <span class='line'>2285</span>
2293 <span class='line'>2286</span> </span><span class="WHIT"> </span><span class="COMM">// The initial position of the mouse.</span><span class="WHIT">
2294 <span class='line'>2287</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">my</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
2295 <span class='line'>2288</span>
2296 <span class='line'>2289</span> </span><span class="WHIT"> </span><span class="COMM">// The initial container dimensions.</span><span class="WHIT">
2297 <span class='line'>2290</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cWidth</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cHeight</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
2298 <span class='line'>2291</span>
2299 <span class='line'>2292</span> </span><span class="WHIT"> </span><span class="COMM">// The initial viewport scroll position.</span><span class="WHIT">
2300 <span class='line'>2293</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">vScrollLeft</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">vScrollTop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
2301 <span class='line'>2294</span>
2302 <span class='line'>2295</span> </span><span class="WHIT"> </span><span class="COMM">/**
2303 <span class='line'>2296</span> * Initialize the resize functionality.
2304 <span class='line'>2297</span> * @private
2305 <span class='line'>2298</span> */</span><span class="WHIT">
2306 <span class='line'>2299</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">init</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2307 <span class='line'>2300</span> </span><span class="WHIT"> </span><span class="NAME">_self.events</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">pwlib.appEvents</span><span class="PUNC">(</span><span class="NAME">_self</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2308 <span class='line'>2301</span> </span><span class="WHIT"> </span><span class="NAME">resizeHandle.addEventListener</span><span class="PUNC">(</span><span class="STRN">'mousedown'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ev_mousedown</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2309 <span class='line'>2302</span>
2310 <span class='line'>2303</span> </span><span class="WHIT"> </span><span class="COMM">// Find the viewport parent element.</span><span class="WHIT">
2311 <span class='line'>2304</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pNode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.container.parentNode</span><span class="PUNC">,</span><span class="WHIT">
2312 <span class='line'>2305</span> </span><span class="WHIT"> </span><span class="NAME">found</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
2313 <span class='line'>2306</span> </span><span class="WHIT"> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">found</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">pNode</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2314 <span class='line'>2307</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pNode.nodeName.toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'html'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2315 <span class='line'>2308</span> </span><span class="WHIT"> </span><span class="NAME">found</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pNode</span><span class="PUNC">;</span><span class="WHIT">
2316 <span class='line'>2309</span> </span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
2317 <span class='line'>2310</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2318 <span class='line'>2311</span>
2319 <span class='line'>2312</span> </span><span class="WHIT"> </span><span class="NAME">cs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">win.getComputedStyle</span><span class="PUNC">(</span><span class="NAME">pNode</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2320 <span class='line'>2313</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cs</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cs.overflow</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'scroll'</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">cs.overflow</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'auto'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2321 <span class='line'>2314</span> </span><span class="WHIT"> </span><span class="NAME">found</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pNode</span><span class="PUNC">;</span><span class="WHIT">
2322 <span class='line'>2315</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2323 <span class='line'>2316</span> </span><span class="WHIT"> </span><span class="NAME">pNode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pNode.parentNode</span><span class="PUNC">;</span><span class="WHIT">
2324 <span class='line'>2317</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2325 <span class='line'>2318</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2326 <span class='line'>2319</span>
2327 <span class='line'>2320</span> </span><span class="WHIT"> </span><span class="NAME">_self.viewport</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">found</span><span class="PUNC">;</span><span class="WHIT">
2328 <span class='line'>2321</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2329 <span class='line'>2322</span>
2330 <span class='line'>2323</span> </span><span class="WHIT"> </span><span class="COMM">/**
2331 <span class='line'>2324</span> * The &lt;code>mousedown&lt;/code> event handler. This starts the resize operation.
2332 <span class='line'>2325</span> *
2333 <span class='line'>2326</span> * &lt;p>This function dispatches the {@link pwlib.appEvent.guiResizeStart}
2334 <span class='line'>2327</span> * event.
2335 <span class='line'>2328</span> *
2336 <span class='line'>2329</span> * @private
2337 <span class='line'>2330</span> * @param {Event} ev The DOM Event object.
2338 <span class='line'>2331</span> */</span><span class="WHIT">
2339 <span class='line'>2332</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">ev_mousedown</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2340 <span class='line'>2333</span> </span><span class="WHIT"> </span><span class="NAME">mx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ev.clientX</span><span class="PUNC">;</span><span class="WHIT">
2341 <span class='line'>2334</span> </span><span class="WHIT"> </span><span class="NAME">my</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ev.clientY</span><span class="PUNC">;</span><span class="WHIT">
2342 <span class='line'>2335</span>
2343 <span class='line'>2336</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">win.getComputedStyle</span><span class="PUNC">(</span><span class="NAME">_self.container</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2344 <span class='line'>2337</span> </span><span class="WHIT"> </span><span class="NAME">cWidth</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parseInt</span><span class="PUNC">(</span><span class="NAME">cs.width</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2345 <span class='line'>2338</span> </span><span class="WHIT"> </span><span class="NAME">cHeight</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parseInt</span><span class="PUNC">(</span><span class="NAME">cs.height</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2346 <span class='line'>2339</span>
2347 <span class='line'>2340</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cancel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.events.dispatch</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">guiResizeStart</span><span class="PUNC">(</span><span class="NAME">mx</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">my</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cWidth</span><span class="PUNC">,</span><span class="WHIT">
2348 <span class='line'>2341</span> </span><span class="NAME">cHeight</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2349 <span class='line'>2342</span>
2350 <span class='line'>2343</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cancel</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2351 <span class='line'>2344</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
2352 <span class='line'>2345</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2353 <span class='line'>2346</span>
2354 <span class='line'>2347</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_self.viewport</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2355 <span class='line'>2348</span> </span><span class="WHIT"> </span><span class="NAME">vScrollLeft</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.viewport.scrollLeft</span><span class="PUNC">;</span><span class="WHIT">
2356 <span class='line'>2349</span> </span><span class="WHIT"> </span><span class="NAME">vScrollTop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.viewport.scrollTop</span><span class="PUNC">;</span><span class="WHIT">
2357 <span class='line'>2350</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2358 <span class='line'>2351</span>
2359 <span class='line'>2352</span> </span><span class="WHIT"> </span><span class="NAME">_self.resizing</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
2360 <span class='line'>2353</span> </span><span class="WHIT"> </span><span class="NAME">doc.addEventListener</span><span class="PUNC">(</span><span class="STRN">'mousemove'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ev_mousemove</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2361 <span class='line'>2354</span> </span><span class="WHIT"> </span><span class="NAME">doc.addEventListener</span><span class="PUNC">(</span><span class="STRN">'mouseup'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ev_mouseup</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2362 <span class='line'>2355</span>
2363 <span class='line'>2356</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev.preventDefault</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2364 <span class='line'>2357</span> </span><span class="WHIT"> </span><span class="NAME">ev.preventDefault</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2365 <span class='line'>2358</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2366 <span class='line'>2359</span>
2367 <span class='line'>2360</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev.stopPropagation</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2368 <span class='line'>2361</span> </span><span class="WHIT"> </span><span class="NAME">ev.stopPropagation</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2369 <span class='line'>2362</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2370 <span class='line'>2363</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2371 <span class='line'>2364</span>
2372 <span class='line'>2365</span> </span><span class="WHIT"> </span><span class="COMM">/**
2373 <span class='line'>2366</span> * The &lt;code>mousemove&lt;/code> event handler. This performs the actual resizing
2374 <span class='line'>2367</span> * of the &lt;var>container&lt;/var> element.
2375 <span class='line'>2368</span> *
2376 <span class='line'>2369</span> * @private
2377 <span class='line'>2370</span> * @param {Event} ev The DOM Event object.
2378 <span class='line'>2371</span> */</span><span class="WHIT">
2379 <span class='line'>2372</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">ev_mousemove</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2380 <span class='line'>2373</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">w</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cWidth</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">ev.clientX</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">mx</span><span class="PUNC">,</span><span class="WHIT">
2381 <span class='line'>2374</span> </span><span class="WHIT"> </span><span class="NAME">h</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cHeight</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">ev.clientY</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">my</span><span class="PUNC">;</span><span class="WHIT">
2382 <span class='line'>2375</span>
2383 <span class='line'>2376</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_self.viewport</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2384 <span class='line'>2377</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_self.viewport.scrollLeft</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">vScrollLeft</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2385 <span class='line'>2378</span> </span><span class="WHIT"> </span><span class="NAME">w</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.viewport.scrollLeft</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">vScrollLeft</span><span class="PUNC">;</span><span class="WHIT">
2386 <span class='line'>2379</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2387 <span class='line'>2380</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_self.viewport.scrollTop</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">vScrollTop</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2388 <span class='line'>2381</span> </span><span class="WHIT"> </span><span class="NAME">h</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.viewport.scrollTop</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">vScrollTop</span><span class="PUNC">;</span><span class="WHIT">
2389 <span class='line'>2382</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2390 <span class='line'>2383</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2391 <span class='line'>2384</span>
2392 <span class='line'>2385</span> </span><span class="WHIT"> </span><span class="NAME">cStyle.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">w</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'px'</span><span class="PUNC">;</span><span class="WHIT">
2393 <span class='line'>2386</span> </span><span class="WHIT"> </span><span class="NAME">cStyle.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">h</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'px'</span><span class="PUNC">;</span><span class="WHIT">
2394 <span class='line'>2387</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2395 <span class='line'>2388</span>
2396 <span class='line'>2389</span> </span><span class="WHIT"> </span><span class="COMM">/**
2397 <span class='line'>2390</span> * The &lt;code>mouseup&lt;/code> event handler. This ends the resize operation.
2398 <span class='line'>2391</span> *
2399 <span class='line'>2392</span> * &lt;p>This function dispatches the {@link pwlib.appEvent.guiResizeEnd} event.
2400 <span class='line'>2393</span> *
2401 <span class='line'>2394</span> * @private
2402 <span class='line'>2395</span> * @param {Event} ev The DOM Event object.
2403 <span class='line'>2396</span> */</span><span class="WHIT">
2404 <span class='line'>2397</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">ev_mouseup</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2405 <span class='line'>2398</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cancel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.events.dispatch</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">guiResizeEnd</span><span class="PUNC">(</span><span class="NAME">ev.clientX</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ev.clientY</span><span class="PUNC">,</span><span class="WHIT">
2406 <span class='line'>2399</span> </span><span class="NAME">parseInt</span><span class="PUNC">(</span><span class="NAME">cStyle.width</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">parseInt</span><span class="PUNC">(</span><span class="NAME">cStyle.height</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2407 <span class='line'>2400</span>
2408 <span class='line'>2401</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cancel</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2409 <span class='line'>2402</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
2410 <span class='line'>2403</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2411 <span class='line'>2404</span>
2412 <span class='line'>2405</span> </span><span class="WHIT"> </span><span class="NAME">_self.resizing</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
2413 <span class='line'>2406</span> </span><span class="WHIT"> </span><span class="NAME">doc.removeEventListener</span><span class="PUNC">(</span><span class="STRN">'mousemove'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ev_mousemove</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2414 <span class='line'>2407</span> </span><span class="WHIT"> </span><span class="NAME">doc.removeEventListener</span><span class="PUNC">(</span><span class="STRN">'mouseup'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ev_mouseup</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2415 <span class='line'>2408</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2416 <span class='line'>2409</span>
2417 <span class='line'>2410</span> </span><span class="WHIT"> </span><span class="NAME">init</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2418 <span class='line'>2411</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2419 <span class='line'>2412</span>
2420 <span class='line'>2413</span> </span><span class="COMM">/**
2421 <span class='line'>2414</span> * @class The GUI element resize start event. This event is cancelable.
2422 <span class='line'>2415</span> *
2423 <span class='line'>2416</span> * @augments pwlib.appEvent
2424 <span class='line'>2417</span> *
2425 <span class='line'>2418</span> * @param {Number} x The mouse location on the x-axis.
2426 <span class='line'>2419</span> * @param {Number} y The mouse location on the y-axis.
2427 <span class='line'>2420</span> * @param {Number} width The element width.
2428 <span class='line'>2421</span> * @param {Number} height The element height.
2429 <span class='line'>2422</span> */</span><span class="WHIT">
2430 <span class='line'>2423</span> </span><span class="NAME">pwlib.appEvent.guiResizeStart</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2431 <span class='line'>2424</span> </span><span class="WHIT"> </span><span class="COMM">/**
2432 <span class='line'>2425</span> * The mouse location on the x-axis.
2433 <span class='line'>2426</span> * @type Number
2434 <span class='line'>2427</span> */</span><span class="WHIT">
2435 <span class='line'>2428</span> </span><span class="WHIT"> </span><span class="NAME">this.x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">x</span><span class="PUNC">;</span><span class="WHIT">
2436 <span class='line'>2429</span>
2437 <span class='line'>2430</span> </span><span class="WHIT"> </span><span class="COMM">/**
2438 <span class='line'>2431</span> * The mouse location on the y-axis.
2439 <span class='line'>2432</span> * @type Number
2440 <span class='line'>2433</span> */</span><span class="WHIT">
2441 <span class='line'>2434</span> </span><span class="WHIT"> </span><span class="NAME">this.y</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">;</span><span class="WHIT">
2442 <span class='line'>2435</span>
2443 <span class='line'>2436</span> </span><span class="WHIT"> </span><span class="COMM">/**
2444 <span class='line'>2437</span> * The element width.
2445 <span class='line'>2438</span> * @type Number
2446 <span class='line'>2439</span> */</span><span class="WHIT">
2447 <span class='line'>2440</span> </span><span class="WHIT"> </span><span class="NAME">this.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">;</span><span class="WHIT">
2448 <span class='line'>2441</span>
2449 <span class='line'>2442</span> </span><span class="WHIT"> </span><span class="COMM">/**
2450 <span class='line'>2443</span> * The element height.
2451 <span class='line'>2444</span> * @type Number
2452 <span class='line'>2445</span> */</span><span class="WHIT">
2453 <span class='line'>2446</span> </span><span class="WHIT"> </span><span class="NAME">this.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">;</span><span class="WHIT">
2454 <span class='line'>2447</span>
2455 <span class='line'>2448</span> </span><span class="WHIT"> </span><span class="NAME">pwlib.appEvent.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'guiResizeStart'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2456 <span class='line'>2449</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2457 <span class='line'>2450</span>
2458 <span class='line'>2451</span> </span><span class="COMM">/**
2459 <span class='line'>2452</span> * @class The GUI element resize end event. This event is cancelable.
2460 <span class='line'>2453</span> *
2461 <span class='line'>2454</span> * @augments pwlib.appEvent
2462 <span class='line'>2455</span> *
2463 <span class='line'>2456</span> * @param {Number} x The mouse location on the x-axis.
2464 <span class='line'>2457</span> * @param {Number} y The mouse location on the y-axis.
2465 <span class='line'>2458</span> * @param {Number} width The element width.
2466 <span class='line'>2459</span> * @param {Number} height The element height.
2467 <span class='line'>2460</span> */</span><span class="WHIT">
2468 <span class='line'>2461</span> </span><span class="NAME">pwlib.appEvent.guiResizeEnd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2469 <span class='line'>2462</span> </span><span class="WHIT"> </span><span class="COMM">/**
2470 <span class='line'>2463</span> * The mouse location on the x-axis.
2471 <span class='line'>2464</span> * @type Number
2472 <span class='line'>2465</span> */</span><span class="WHIT">
2473 <span class='line'>2466</span> </span><span class="WHIT"> </span><span class="NAME">this.x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">x</span><span class="PUNC">;</span><span class="WHIT">
2474 <span class='line'>2467</span>
2475 <span class='line'>2468</span> </span><span class="WHIT"> </span><span class="COMM">/**
2476 <span class='line'>2469</span> * The mouse location on the y-axis.
2477 <span class='line'>2470</span> * @type Number
2478 <span class='line'>2471</span> */</span><span class="WHIT">
2479 <span class='line'>2472</span> </span><span class="WHIT"> </span><span class="NAME">this.y</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">;</span><span class="WHIT">
2480 <span class='line'>2473</span>
2481 <span class='line'>2474</span> </span><span class="WHIT"> </span><span class="COMM">/**
2482 <span class='line'>2475</span> * The element width.
2483 <span class='line'>2476</span> * @type Number
2484 <span class='line'>2477</span> */</span><span class="WHIT">
2485 <span class='line'>2478</span> </span><span class="WHIT"> </span><span class="NAME">this.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">width</span><span class="PUNC">;</span><span class="WHIT">
2486 <span class='line'>2479</span>
2487 <span class='line'>2480</span> </span><span class="WHIT"> </span><span class="COMM">/**
2488 <span class='line'>2481</span> * The element height.
2489 <span class='line'>2482</span> * @type Number
2490 <span class='line'>2483</span> */</span><span class="WHIT">
2491 <span class='line'>2484</span> </span><span class="WHIT"> </span><span class="NAME">this.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">height</span><span class="PUNC">;</span><span class="WHIT">
2492 <span class='line'>2485</span>
2493 <span class='line'>2486</span> </span><span class="WHIT"> </span><span class="NAME">pwlib.appEvent.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'guiResizeEnd'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2494 <span class='line'>2487</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2495 <span class='line'>2488</span>
2496 <span class='line'>2489</span> </span><span class="COMM">/**
2497 <span class='line'>2490</span> * @class The tabbed panel GUI component.
2498 <span class='line'>2491</span> *
2499 <span class='line'>2492</span> * @private
2500 <span class='line'>2493</span> *
2501 <span class='line'>2494</span> * @param {pwlib.gui} gui Reference to the PaintWeb GUI object.
2502 <span class='line'>2495</span> *
2503 <span class='line'>2496</span> * @param {Element} panel Reference to the panel DOM element.
2504 <span class='line'>2497</span> */</span><span class="WHIT">
2505 <span class='line'>2498</span> </span><span class="NAME">pwlib.guiTabPanel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">gui</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">panel</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2506 <span class='line'>2499</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">_self</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT">
2507 <span class='line'>2500</span> </span><span class="WHIT"> </span><span class="NAME">appEvent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pwlib.appEvent</span><span class="PUNC">,</span><span class="WHIT">
2508 <span class='line'>2501</span> </span><span class="WHIT"> </span><span class="NAME">doc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gui.app.doc</span><span class="PUNC">,</span><span class="WHIT">
2509 <span class='line'>2502</span> </span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gui.app.lang</span><span class="PUNC">;</span><span class="WHIT">
2510 <span class='line'>2503</span>
2511 <span class='line'>2504</span> </span><span class="WHIT"> </span><span class="COMM">/**
2512 <span class='line'>2505</span> * Custom application events interface.
2513 <span class='line'>2506</span> * @type pwlib.appEvents
2514 <span class='line'>2507</span> */</span><span class="WHIT">
2515 <span class='line'>2508</span> </span><span class="WHIT"> </span><span class="NAME">this.events</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
2516 <span class='line'>2509</span>
2517 <span class='line'>2510</span> </span><span class="WHIT"> </span><span class="COMM">/**
2518 <span class='line'>2511</span> * Panel ID. The ID is the same as the data-pwTabPanel attribute value of the
2519 <span class='line'>2512</span> * panel DOM element .
2520 <span class='line'>2513</span> *
2521 <span class='line'>2514</span> * @type String.
2522 <span class='line'>2515</span> */</span><span class="WHIT">
2523 <span class='line'>2516</span> </span><span class="WHIT"> </span><span class="NAME">this.id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
2524 <span class='line'>2517</span>
2525 <span class='line'>2518</span> </span><span class="WHIT"> </span><span class="COMM">/**
2526 <span class='line'>2519</span> * Holds references to the DOM element of each tab and tab button.
2527 <span class='line'>2520</span> * @type Object
2528 <span class='line'>2521</span> */</span><span class="WHIT">
2529 <span class='line'>2522</span> </span><span class="WHIT"> </span><span class="NAME">this.tabs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2530 <span class='line'>2523</span>
2531 <span class='line'>2524</span> </span><span class="WHIT"> </span><span class="COMM">/**
2532 <span class='line'>2525</span> * Reference to the tab buttons DOM element.
2533 <span class='line'>2526</span> * @type Element
2534 <span class='line'>2527</span> */</span><span class="WHIT">
2535 <span class='line'>2528</span> </span><span class="WHIT"> </span><span class="NAME">this.tabButtons</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
2536 <span class='line'>2529</span>
2537 <span class='line'>2530</span> </span><span class="WHIT"> </span><span class="COMM">/**
2538 <span class='line'>2531</span> * The panel container DOM element.
2539 <span class='line'>2532</span> * @type Element
2540 <span class='line'>2533</span> */</span><span class="WHIT">
2541 <span class='line'>2534</span> </span><span class="WHIT"> </span><span class="NAME">this.container</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">panel</span><span class="PUNC">;</span><span class="WHIT">
2542 <span class='line'>2535</span>
2543 <span class='line'>2536</span> </span><span class="WHIT"> </span><span class="COMM">/**
2544 <span class='line'>2537</span> * Holds the ID of the currently active tab.
2545 <span class='line'>2538</span> * @type String
2546 <span class='line'>2539</span> */</span><span class="WHIT">
2547 <span class='line'>2540</span> </span><span class="WHIT"> </span><span class="NAME">this.tabId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
2548 <span class='line'>2541</span>
2549 <span class='line'>2542</span> </span><span class="WHIT"> </span><span class="COMM">/**
2550 <span class='line'>2543</span> * Holds the ID of the previously active tab.
2551 <span class='line'>2544</span> *
2552 <span class='line'>2545</span> * @private
2553 <span class='line'>2546</span> * @type String
2554 <span class='line'>2547</span> */</span><span class="WHIT">
2555 <span class='line'>2548</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">prevTabId_</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
2556 <span class='line'>2549</span>
2557 <span class='line'>2550</span> </span><span class="WHIT"> </span><span class="COMM">/**
2558 <span class='line'>2551</span> * Initialize the toolbar functionality.
2559 <span class='line'>2552</span> * @private
2560 <span class='line'>2553</span> */</span><span class="WHIT">
2561 <span class='line'>2554</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">init</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2562 <span class='line'>2555</span> </span><span class="WHIT"> </span><span class="NAME">_self.events</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">pwlib.appEvents</span><span class="PUNC">(</span><span class="NAME">_self</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2563 <span class='line'>2556</span> </span><span class="WHIT"> </span><span class="NAME">_self.id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.container.getAttribute</span><span class="PUNC">(</span><span class="STRN">'data-pwTabPanel'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2564 <span class='line'>2557</span>
2565 <span class='line'>2558</span> </span><span class="WHIT"> </span><span class="COMM">// Add two class names, the generic .paintweb_tabPanel and another class </span><span class="WHIT">
2566 <span class='line'>2559</span> </span><span class="WHIT"> </span><span class="COMM">// name specific to the current tab panel: .paintweb_tabPanel_id. </span><span class="WHIT">
2567 <span class='line'>2560</span> </span><span class="WHIT"> </span><span class="NAME">_self.container.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">gui.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'tabPanel'</span><span class="WHIT">
2568 <span class='line'>2561</span> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">gui.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'tabPanel_'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_self.id</span><span class="PUNC">;</span><span class="WHIT">
2569 <span class='line'>2562</span>
2570 <span class='line'>2563</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tabButtons</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.createElement</span><span class="PUNC">(</span><span class="STRN">'ul'</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
2571 <span class='line'>2564</span> </span><span class="WHIT"> </span><span class="NAME">tabButton</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT">
2572 <span class='line'>2565</span> </span><span class="WHIT"> </span><span class="NAME">tabDefault</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.container.getAttribute</span><span class="PUNC">(</span><span class="STRN">'data-pwTabDefault'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT">
2573 <span class='line'>2566</span> </span><span class="WHIT"> </span><span class="NAME">childNodes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.container.childNodes</span><span class="PUNC">,</span><span class="WHIT">
2574 <span class='line'>2567</span> </span><span class="WHIT"> </span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Node.ELEMENT_NODE</span><span class="PUNC">,</span><span class="WHIT">
2575 <span class='line'>2568</span> </span><span class="WHIT"> </span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT">
2576 <span class='line'>2569</span> </span><span class="WHIT"> </span><span class="NAME">tabId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT">
2577 <span class='line'>2570</span> </span><span class="WHIT"> </span><span class="NAME">anchor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
2578 <span class='line'>2571</span>
2579 <span class='line'>2572</span> </span><span class="WHIT"> </span><span class="NAME">tabButtons.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gui.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'tabsList'</span><span class="PUNC">;</span><span class="WHIT">
2580 <span class='line'>2573</span>
2581 <span class='line'>2574</span> </span><span class="WHIT"> </span><span class="COMM">// Find all the tabs in the current panel container element.</span><span class="WHIT">
2582 <span class='line'>2575</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">childNodes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2583 <span class='line'>2576</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">elem.nodeType</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2584 <span class='line'>2577</span> </span><span class="WHIT"> </span><span class="KEYW">continue</span><span class="PUNC">;</span><span class="WHIT">
2585 <span class='line'>2578</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2586 <span class='line'>2579</span>
2587 <span class='line'>2580</span> </span><span class="WHIT"> </span><span class="COMM">// A tab is any element with a given data-pwTab attribute.</span><span class="WHIT">
2588 <span class='line'>2581</span> </span><span class="WHIT"> </span><span class="NAME">tabId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">elem.getAttribute</span><span class="PUNC">(</span><span class="STRN">'data-pwTab'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2589 <span class='line'>2582</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">tabId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2590 <span class='line'>2583</span> </span><span class="WHIT"> </span><span class="KEYW">continue</span><span class="PUNC">;</span><span class="WHIT">
2591 <span class='line'>2584</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2592 <span class='line'>2585</span>
2593 <span class='line'>2586</span> </span><span class="WHIT"> </span><span class="COMM">// two class names, the generic .paintweb_tab and the tab-specific class </span><span class="WHIT">
2594 <span class='line'>2587</span> </span><span class="WHIT"> </span><span class="COMM">// name .paintweb_tabPanelId_tabId.</span><span class="WHIT">
2595 <span class='line'>2588</span> </span><span class="WHIT"> </span><span class="NAME">elem.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">gui.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'tab '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">gui.classPrefix</span><span class="WHIT">
2596 <span class='line'>2589</span> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_self.id</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'_'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">tabId</span><span class="PUNC">;</span><span class="WHIT">
2597 <span class='line'>2590</span>
2598 <span class='line'>2591</span> </span><span class="WHIT"> </span><span class="NAME">tabButton</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.createElement</span><span class="PUNC">(</span><span class="STRN">'li'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2599 <span class='line'>2592</span> </span><span class="WHIT"> </span><span class="NAME">tabButton._pwTab</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tabId</span><span class="PUNC">;</span><span class="WHIT">
2600 <span class='line'>2593</span>
2601 <span class='line'>2594</span> </span><span class="WHIT"> </span><span class="NAME">anchor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.createElement</span><span class="PUNC">(</span><span class="STRN">'a'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2602 <span class='line'>2595</span> </span><span class="WHIT"> </span><span class="NAME">anchor.href</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'#'</span><span class="PUNC">;</span><span class="WHIT">
2603 <span class='line'>2596</span> </span><span class="WHIT"> </span><span class="NAME">anchor.addEventListener</span><span class="PUNC">(</span><span class="STRN">'click'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ev_tabClick</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2604 <span class='line'>2597</span>
2605 <span class='line'>2598</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_self.id</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">lang.tabs</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2606 <span class='line'>2599</span> </span><span class="WHIT"> </span><span class="NAME">anchor.title</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.tabs</span><span class="PUNC">[</span><span class="NAME">_self.id</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NAME">tabId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'Title'</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
2607 <span class='line'>2600</span> </span><span class="NAME">lang.tabs</span><span class="PUNC">[</span><span class="NAME">_self.id</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NAME">tabId</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
2608 <span class='line'>2601</span> </span><span class="WHIT"> </span><span class="NAME">anchor.appendChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">lang.tabs</span><span class="PUNC">[</span><span class="NAME">_self.id</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NAME">tabId</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2609 <span class='line'>2602</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2610 <span class='line'>2603</span>
2611 <span class='line'>2604</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">tabDefault</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">tabId</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">tabDefault</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
2612 <span class='line'>2605</span> </span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">tabDefault</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">_self.tabId</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2613 <span class='line'>2606</span> </span><span class="WHIT"> </span><span class="NAME">_self.tabId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tabId</span><span class="PUNC">;</span><span class="WHIT">
2614 <span class='line'>2607</span> </span><span class="WHIT"> </span><span class="NAME">tabButton.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gui.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'tabActive'</span><span class="PUNC">;</span><span class="WHIT">
2615 <span class='line'>2608</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2616 <span class='line'>2609</span> </span><span class="WHIT"> </span><span class="NAME">prevTabId_</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tabId</span><span class="PUNC">;</span><span class="WHIT">
2617 <span class='line'>2610</span> </span><span class="WHIT"> </span><span class="NAME">elem.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'none'</span><span class="PUNC">;</span><span class="WHIT">
2618 <span class='line'>2611</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2619 <span class='line'>2612</span>
2620 <span class='line'>2613</span> </span><span class="WHIT"> </span><span class="COMM">// automatically hide the tab</span><span class="WHIT">
2621 <span class='line'>2614</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">elem.getAttribute</span><span class="PUNC">(</span><span class="STRN">'data-pwTabHide'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'true'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2622 <span class='line'>2615</span> </span><span class="WHIT"> </span><span class="NAME">tabButton.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'none'</span><span class="PUNC">;</span><span class="WHIT">
2623 <span class='line'>2616</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2624 <span class='line'>2617</span>
2625 <span class='line'>2618</span> </span><span class="WHIT"> </span><span class="NAME">_self.tabs</span><span class="PUNC">[</span><span class="NAME">tabId</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="NAME">container</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">elem</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">button</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">tabButton</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2626 <span class='line'>2619</span>
2627 <span class='line'>2620</span> </span><span class="WHIT"> </span><span class="NAME">tabButton.appendChild</span><span class="PUNC">(</span><span class="NAME">anchor</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2628 <span class='line'>2621</span> </span><span class="WHIT"> </span><span class="NAME">tabButtons.appendChild</span><span class="PUNC">(</span><span class="NAME">tabButton</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2629 <span class='line'>2622</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2630 <span class='line'>2623</span>
2631 <span class='line'>2624</span> </span><span class="WHIT"> </span><span class="NAME">_self.tabButtons</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tabButtons</span><span class="PUNC">;</span><span class="WHIT">
2632 <span class='line'>2625</span> </span><span class="WHIT"> </span><span class="NAME">_self.container.appendChild</span><span class="PUNC">(</span><span class="NAME">tabButtons</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2633 <span class='line'>2626</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2634 <span class='line'>2627</span>
2635 <span class='line'>2628</span> </span><span class="WHIT"> </span><span class="COMM">/**
2636 <span class='line'>2629</span> * The &lt;code>click&lt;/code> event handler for tab buttons. This function simply
2637 <span class='line'>2630</span> * activates the tab the user clicked.
2638 <span class='line'>2631</span> *
2639 <span class='line'>2632</span> * @private
2640 <span class='line'>2633</span> * @param {Event} ev The DOM Event object.
2641 <span class='line'>2634</span> */</span><span class="WHIT">
2642 <span class='line'>2635</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">ev_tabClick</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2643 <span class='line'>2636</span> </span><span class="WHIT"> </span><span class="NAME">ev.preventDefault</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2644 <span class='line'>2637</span> </span><span class="WHIT"> </span><span class="NAME">_self.tabActivate</span><span class="PUNC">(</span><span class="NAME">this.parentNode._pwTab</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2645 <span class='line'>2638</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2646 <span class='line'>2639</span>
2647 <span class='line'>2640</span> </span><span class="WHIT"> </span><span class="COMM">/**
2648 <span class='line'>2641</span> * Activate a tab by ID.
2649 <span class='line'>2642</span> *
2650 <span class='line'>2643</span> * &lt;p>This method dispatches the {@link pwlib.appEvent.guiTabActivate} event.
2651 <span class='line'>2644</span> *
2652 <span class='line'>2645</span> * @param {String} tabId The ID of the tab you want to activate.
2653 <span class='line'>2646</span> * @returns {Boolean} True if the tab has been activated successfully, or
2654 <span class='line'>2647</span> * false if not.
2655 <span class='line'>2648</span> */</span><span class="WHIT">
2656 <span class='line'>2649</span> </span><span class="WHIT"> </span><span class="NAME">this.tabActivate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tabId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2657 <span class='line'>2650</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">tabId</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">tabId</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.tabs</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2658 <span class='line'>2651</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
2659 <span class='line'>2652</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tabId</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">this.tabId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2660 <span class='line'>2653</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
2661 <span class='line'>2654</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2662 <span class='line'>2655</span>
2663 <span class='line'>2656</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ev</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">appEvent.guiTabActivate</span><span class="PUNC">(</span><span class="NAME">tabId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.tabId</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
2664 <span class='line'>2657</span> </span><span class="WHIT"> </span><span class="NAME">cancel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.events.dispatch</span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
2665 <span class='line'>2658</span> </span><span class="WHIT"> </span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT">
2666 <span class='line'>2659</span> </span><span class="WHIT"> </span><span class="NAME">tabButton</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
2667 <span class='line'>2660</span>
2668 <span class='line'>2661</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cancel</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2669 <span class='line'>2662</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
2670 <span class='line'>2663</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2671 <span class='line'>2664</span>
2672 <span class='line'>2665</span> </span><span class="WHIT"> </span><span class="COMM">// Deactivate the currently active tab.</span><span class="WHIT">
2673 <span class='line'>2666</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.tabId</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.tabs</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2674 <span class='line'>2667</span> </span><span class="WHIT"> </span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.tabs</span><span class="PUNC">[</span><span class="NAME">this.tabId</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">container</span><span class="PUNC">;</span><span class="WHIT">
2675 <span class='line'>2668</span> </span><span class="WHIT"> </span><span class="NAME">elem.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'none'</span><span class="PUNC">;</span><span class="WHIT">
2676 <span class='line'>2669</span> </span><span class="WHIT"> </span><span class="NAME">tabButton</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.tabs</span><span class="PUNC">[</span><span class="NAME">this.tabId</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">button</span><span class="PUNC">;</span><span class="WHIT">
2677 <span class='line'>2670</span> </span><span class="WHIT"> </span><span class="NAME">tabButton.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
2678 <span class='line'>2671</span> </span><span class="WHIT"> </span><span class="NAME">prevTabId_</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.tabId</span><span class="PUNC">;</span><span class="WHIT">
2679 <span class='line'>2672</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2680 <span class='line'>2673</span>
2681 <span class='line'>2674</span> </span><span class="WHIT"> </span><span class="COMM">// Activate the new tab.</span><span class="WHIT">
2682 <span class='line'>2675</span> </span><span class="WHIT"> </span><span class="NAME">elem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.tabs</span><span class="PUNC">[</span><span class="NAME">tabId</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">container</span><span class="PUNC">;</span><span class="WHIT">
2683 <span class='line'>2676</span> </span><span class="WHIT"> </span><span class="NAME">elem.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
2684 <span class='line'>2677</span> </span><span class="WHIT"> </span><span class="NAME">tabButton</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.tabs</span><span class="PUNC">[</span><span class="NAME">tabId</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">button</span><span class="PUNC">;</span><span class="WHIT">
2685 <span class='line'>2678</span> </span><span class="WHIT"> </span><span class="NAME">tabButton.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gui.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'tabActive'</span><span class="PUNC">;</span><span class="WHIT">
2686 <span class='line'>2679</span> </span><span class="WHIT"> </span><span class="NAME">tabButton.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// make sure the tab is not hidden</span><span class="WHIT">
2687 <span class='line'>2680</span> </span><span class="WHIT"> </span><span class="NAME">tabButton.firstChild.focus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2688 <span class='line'>2681</span> </span><span class="WHIT"> </span><span class="NAME">this.tabId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tabId</span><span class="PUNC">;</span><span class="WHIT">
2689 <span class='line'>2682</span>
2690 <span class='line'>2683</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
2691 <span class='line'>2684</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2692 <span class='line'>2685</span>
2693 <span class='line'>2686</span> </span><span class="WHIT"> </span><span class="COMM">/**
2694 <span class='line'>2687</span> * Hide a tab by ID.
2695 <span class='line'>2688</span> *
2696 <span class='line'>2689</span> * @param {String} tabId The ID of the tab you want to hide.
2697 <span class='line'>2690</span> * @returns {Boolean} True if the tab has been hidden successfully, or false
2698 <span class='line'>2691</span> * if not.
2699 <span class='line'>2692</span> */</span><span class="WHIT">
2700 <span class='line'>2693</span> </span><span class="WHIT"> </span><span class="NAME">this.tabHide</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tabId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2701 <span class='line'>2694</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">tabId</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.tabs</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2702 <span class='line'>2695</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
2703 <span class='line'>2696</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2704 <span class='line'>2697</span>
2705 <span class='line'>2698</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.tabId</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">tabId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2706 <span class='line'>2699</span> </span><span class="WHIT"> </span><span class="NAME">this.tabActivate</span><span class="PUNC">(</span><span class="NAME">prevTabId_</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2707 <span class='line'>2700</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2708 <span class='line'>2701</span>
2709 <span class='line'>2702</span> </span><span class="WHIT"> </span><span class="NAME">this.tabs</span><span class="PUNC">[</span><span class="NAME">tabId</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">button.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'none'</span><span class="PUNC">;</span><span class="WHIT">
2710 <span class='line'>2703</span>
2711 <span class='line'>2704</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
2712 <span class='line'>2705</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2713 <span class='line'>2706</span>
2714 <span class='line'>2707</span> </span><span class="WHIT"> </span><span class="COMM">/**
2715 <span class='line'>2708</span> * Show a tab by ID.
2716 <span class='line'>2709</span> *
2717 <span class='line'>2710</span> * @param {String} tabId The ID of the tab you want to show.
2718 <span class='line'>2711</span> * @returns {Boolean} True if the tab has been displayed successfully, or
2719 <span class='line'>2712</span> * false if not.
2720 <span class='line'>2713</span> */</span><span class="WHIT">
2721 <span class='line'>2714</span> </span><span class="WHIT"> </span><span class="NAME">this.tabShow</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tabId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2722 <span class='line'>2715</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">tabId</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.tabs</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2723 <span class='line'>2716</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
2724 <span class='line'>2717</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2725 <span class='line'>2718</span>
2726 <span class='line'>2719</span> </span><span class="WHIT"> </span><span class="NAME">this.tabs</span><span class="PUNC">[</span><span class="NAME">tabId</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">button.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
2727 <span class='line'>2720</span>
2728 <span class='line'>2721</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
2729 <span class='line'>2722</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2730 <span class='line'>2723</span>
2731 <span class='line'>2724</span> </span><span class="WHIT"> </span><span class="NAME">init</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2732 <span class='line'>2725</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2733 <span class='line'>2726</span>
2734 <span class='line'>2727</span> </span><span class="COMM">/**
2735 <span class='line'>2728</span> * @class The GUI tab activation event. This event is cancelable.
2736 <span class='line'>2729</span> *
2737 <span class='line'>2730</span> * @augments pwlib.appEvent
2738 <span class='line'>2731</span> *
2739 <span class='line'>2732</span> * @param {String} tabId The ID of the tab being activated.
2740 <span class='line'>2733</span> * @param {String} prevTabId The ID of the previously active tab.
2741 <span class='line'>2734</span> */</span><span class="WHIT">
2742 <span class='line'>2735</span> </span><span class="NAME">pwlib.appEvent.guiTabActivate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tabId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">prevTabId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2743 <span class='line'>2736</span> </span><span class="WHIT"> </span><span class="COMM">/**
2744 <span class='line'>2737</span> * The ID of the tab being activated.
2745 <span class='line'>2738</span> * @type String
2746 <span class='line'>2739</span> */</span><span class="WHIT">
2747 <span class='line'>2740</span> </span><span class="WHIT"> </span><span class="NAME">this.tabId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tabId</span><span class="PUNC">;</span><span class="WHIT">
2748 <span class='line'>2741</span>
2749 <span class='line'>2742</span> </span><span class="WHIT"> </span><span class="COMM">/**
2750 <span class='line'>2743</span> * The ID of the previously active tab.
2751 <span class='line'>2744</span> * @type String
2752 <span class='line'>2745</span> */</span><span class="WHIT">
2753 <span class='line'>2746</span> </span><span class="WHIT"> </span><span class="NAME">this.prevTabId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">prevTabId</span><span class="PUNC">;</span><span class="WHIT">
2754 <span class='line'>2747</span>
2755 <span class='line'>2748</span> </span><span class="WHIT"> </span><span class="NAME">pwlib.appEvent.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'guiTabActivate'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2756 <span class='line'>2749</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2757 <span class='line'>2750</span>
2758 <span class='line'>2751</span> </span><span class="COMM">/**
2759 <span class='line'>2752</span> * @class The color input GUI component.
2760 <span class='line'>2753</span> *
2761 <span class='line'>2754</span> * @private
2762 <span class='line'>2755</span> *
2763 <span class='line'>2756</span> * @param {pwlib.gui} gui Reference to the PaintWeb GUI object.
2764 <span class='line'>2757</span> *
2765 <span class='line'>2758</span> * @param {Element} input Reference to the DOM input element. This can be
2766 <span class='line'>2759</span> * a span, a div, or any other tag.
2767 <span class='line'>2760</span> */</span><span class="WHIT">
2768 <span class='line'>2761</span> </span><span class="NAME">pwlib.guiColorInput</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">gui</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">input</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2769 <span class='line'>2762</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">_self</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT">
2770 <span class='line'>2763</span> </span><span class="WHIT"> </span><span class="NAME">colormixer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT">
2771 <span class='line'>2764</span> </span><span class="WHIT"> </span><span class="NAME">config</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gui.app.config</span><span class="PUNC">,</span><span class="WHIT">
2772 <span class='line'>2765</span> </span><span class="WHIT"> </span><span class="NAME">doc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gui.app.doc</span><span class="PUNC">,</span><span class="WHIT">
2773 <span class='line'>2766</span> </span><span class="WHIT"> </span><span class="NAME">MathRound</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Math.round</span><span class="PUNC">,</span><span class="WHIT">
2774 <span class='line'>2767</span> </span><span class="WHIT"> </span><span class="NAME">lang</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gui.app.lang</span><span class="PUNC">;</span><span class="WHIT">
2775 <span class='line'>2768</span>
2776 <span class='line'>2769</span> </span><span class="WHIT"> </span><span class="COMM">/**
2777 <span class='line'>2770</span> * Color input ID. The ID is the same as the data-pwColorInput attribute value
2778 <span class='line'>2771</span> * of the DOM input element .
2779 <span class='line'>2772</span> *
2780 <span class='line'>2773</span> * @type String.
2781 <span class='line'>2774</span> */</span><span class="WHIT">
2782 <span class='line'>2775</span> </span><span class="WHIT"> </span><span class="NAME">this.id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
2783 <span class='line'>2776</span>
2784 <span class='line'>2777</span> </span><span class="WHIT"> </span><span class="COMM">/**
2785 <span class='line'>2778</span> * The color input element DOM reference.
2786 <span class='line'>2779</span> *
2787 <span class='line'>2780</span> * @type Element
2788 <span class='line'>2781</span> */</span><span class="WHIT">
2789 <span class='line'>2782</span> </span><span class="WHIT"> </span><span class="NAME">this.input</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">input</span><span class="PUNC">;</span><span class="WHIT">
2790 <span class='line'>2783</span>
2791 <span class='line'>2784</span> </span><span class="WHIT"> </span><span class="COMM">/**
2792 <span class='line'>2785</span> * The configuration property to which this color input is attached to.
2793 <span class='line'>2786</span> * @type String
2794 <span class='line'>2787</span> */</span><span class="WHIT">
2795 <span class='line'>2788</span> </span><span class="WHIT"> </span><span class="NAME">this.configProperty</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
2796 <span class='line'>2789</span>
2797 <span class='line'>2790</span> </span><span class="WHIT"> </span><span class="COMM">/**
2798 <span class='line'>2791</span> * The configuration group to which this color input is attached to.
2799 <span class='line'>2792</span> * @type String
2800 <span class='line'>2793</span> */</span><span class="WHIT">
2801 <span class='line'>2794</span> </span><span class="WHIT"> </span><span class="NAME">this.configGroup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
2802 <span class='line'>2795</span>
2803 <span class='line'>2796</span> </span><span class="WHIT"> </span><span class="COMM">/**
2804 <span class='line'>2797</span> * Reference to the configuration object which holds the color input value.
2805 <span class='line'>2798</span> * @type String
2806 <span class='line'>2799</span> */</span><span class="WHIT">
2807 <span class='line'>2800</span> </span><span class="WHIT"> </span><span class="NAME">this.configGroupRef</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
2808 <span class='line'>2801</span>
2809 <span class='line'>2802</span> </span><span class="WHIT"> </span><span class="COMM">/**
2810 <span class='line'>2803</span> * Holds the current color displayed by the input.
2811 <span class='line'>2804</span> *
2812 <span class='line'>2805</span> * @type Object
2813 <span class='line'>2806</span> */</span><span class="WHIT">
2814 <span class='line'>2807</span> </span><span class="WHIT"> </span><span class="NAME">this.color</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="NAME">red</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">green</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">blue</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">alpha</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2815 <span class='line'>2808</span>
2816 <span class='line'>2809</span> </span><span class="WHIT"> </span><span class="COMM">/**
2817 <span class='line'>2810</span> * Initialize the color input functionality.
2818 <span class='line'>2811</span> * @private
2819 <span class='line'>2812</span> */</span><span class="WHIT">
2820 <span class='line'>2813</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">init</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2821 <span class='line'>2814</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cfgAttr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.input.getAttribute</span><span class="PUNC">(</span><span class="STRN">'data-pwColorInput'</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
2822 <span class='line'>2815</span> </span><span class="WHIT"> </span><span class="NAME">cfgNoDots</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgAttr.replace</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'_'</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
2823 <span class='line'>2816</span> </span><span class="WHIT"> </span><span class="NAME">cfgArray</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgAttr.split</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
2824 <span class='line'>2817</span> </span><span class="WHIT"> </span><span class="NAME">cfgProp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgArray.pop</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
2825 <span class='line'>2818</span> </span><span class="WHIT"> </span><span class="NAME">cfgGroup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgArray.join</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
2826 <span class='line'>2819</span> </span><span class="WHIT"> </span><span class="NAME">cfgGroupRef</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">config</span><span class="PUNC">,</span><span class="WHIT">
2827 <span class='line'>2820</span> </span><span class="WHIT"> </span><span class="NAME">langGroup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lang.inputs</span><span class="PUNC">,</span><span class="WHIT">
2828 <span class='line'>2821</span> </span><span class="WHIT"> </span><span class="NAME">labelElem</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.input.parentNode</span><span class="PUNC">,</span><span class="WHIT">
2829 <span class='line'>2822</span> </span><span class="WHIT"> </span><span class="NAME">anchor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.createElement</span><span class="PUNC">(</span><span class="STRN">'a'</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
2830 <span class='line'>2823</span> </span><span class="WHIT"> </span><span class="NAME">color</span><span class="PUNC">;</span><span class="WHIT">
2831 <span class='line'>2824</span>
2832 <span class='line'>2825</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">n</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgArray.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2833 <span class='line'>2826</span> </span><span class="WHIT"> </span><span class="NAME">cfgGroupRef</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgGroupRef</span><span class="PUNC">[</span><span class="NAME">cfgArray</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
2834 <span class='line'>2827</span> </span><span class="WHIT"> </span><span class="NAME">langGroup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">langGroup</span><span class="PUNC">[</span><span class="NAME">cfgArray</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
2835 <span class='line'>2828</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2836 <span class='line'>2829</span>
2837 <span class='line'>2830</span> </span><span class="WHIT"> </span><span class="NAME">_self.configProperty</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgProp</span><span class="PUNC">;</span><span class="WHIT">
2838 <span class='line'>2831</span> </span><span class="WHIT"> </span><span class="NAME">_self.configGroup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgGroup</span><span class="PUNC">;</span><span class="WHIT">
2839 <span class='line'>2832</span> </span><span class="WHIT"> </span><span class="NAME">_self.configGroupRef</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgGroupRef</span><span class="PUNC">;</span><span class="WHIT">
2840 <span class='line'>2833</span>
2841 <span class='line'>2834</span> </span><span class="WHIT"> </span><span class="NAME">_self.id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cfgNoDots</span><span class="PUNC">;</span><span class="WHIT">
2842 <span class='line'>2835</span>
2843 <span class='line'>2836</span> </span><span class="WHIT"> </span><span class="NAME">_self.input.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">gui.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'colorInput'</span><span class="WHIT">
2844 <span class='line'>2837</span> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">gui.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_self.id</span><span class="PUNC">;</span><span class="WHIT">
2845 <span class='line'>2838</span>
2846 <span class='line'>2839</span> </span><span class="WHIT"> </span><span class="NAME">labelElem.replaceChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">langGroup</span><span class="PUNC">[</span><span class="NAME">cfgProp</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
2847 <span class='line'>2840</span> </span><span class="NAME">labelElem.firstChild</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2848 <span class='line'>2841</span>
2849 <span class='line'>2842</span> </span><span class="WHIT"> </span><span class="NAME">color</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.configGroupRef</span><span class="PUNC">[</span><span class="NAME">_self.configProperty</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
2850 <span class='line'>2843</span> </span><span class="WHIT"> </span><span class="NAME">color</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">color.replace</span><span class="PUNC">(</span><span class="REGX">/\s+/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/^rgba\(/</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/\)$/</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2851 <span class='line'>2844</span> </span><span class="WHIT"> </span><span class="NAME">color</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">color.split</span><span class="PUNC">(</span><span class="STRN">','</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2852 <span class='line'>2845</span> </span><span class="WHIT"> </span><span class="NAME">_self.color.red</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">color</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">255</span><span class="PUNC">;</span><span class="WHIT">
2853 <span class='line'>2846</span> </span><span class="WHIT"> </span><span class="NAME">_self.color.green</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">color</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">255</span><span class="PUNC">;</span><span class="WHIT">
2854 <span class='line'>2847</span> </span><span class="WHIT"> </span><span class="NAME">_self.color.blue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">color</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">255</span><span class="PUNC">;</span><span class="WHIT">
2855 <span class='line'>2848</span> </span><span class="WHIT"> </span><span class="NAME">_self.color.alpha</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">color</span><span class="PUNC">[</span><span class="NUMB">3</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
2856 <span class='line'>2849</span>
2857 <span class='line'>2850</span> </span><span class="WHIT"> </span><span class="NAME">anchor.style.backgroundColor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'rgb('</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">color</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">','</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">color</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">','</span><span class="WHIT">
2858 <span class='line'>2851</span> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">color</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">')'</span><span class="PUNC">;</span><span class="WHIT">
2859 <span class='line'>2852</span> </span><span class="WHIT"> </span><span class="NAME">anchor.style.opacity</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">color</span><span class="PUNC">[</span><span class="NUMB">3</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
2860 <span class='line'>2853</span>
2861 <span class='line'>2854</span> </span><span class="WHIT"> </span><span class="NAME">anchor.href</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'#'</span><span class="PUNC">;</span><span class="WHIT">
2862 <span class='line'>2855</span> </span><span class="WHIT"> </span><span class="NAME">anchor.title</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">langGroup</span><span class="PUNC">[</span><span class="NAME">cfgProp</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'Title'</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">langGroup</span><span class="PUNC">[</span><span class="NAME">cfgProp</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
2863 <span class='line'>2856</span> </span><span class="WHIT"> </span><span class="NAME">anchor.appendChild</span><span class="PUNC">(</span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="NAME">lang.inputs.colorInputAnchorContent</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2864 <span class='line'>2857</span> </span><span class="WHIT"> </span><span class="NAME">anchor.addEventListener</span><span class="PUNC">(</span><span class="STRN">'click'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ev_input_click</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2865 <span class='line'>2858</span>
2866 <span class='line'>2859</span> </span><span class="WHIT"> </span><span class="NAME">_self.input.replaceChild</span><span class="PUNC">(</span><span class="NAME">anchor</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_self.input.firstChild</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2867 <span class='line'>2860</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2868 <span class='line'>2861</span>
2869 <span class='line'>2862</span> </span><span class="WHIT"> </span><span class="COMM">/**
2870 <span class='line'>2863</span> * The &lt;code>click&lt;/code> event handler for the color input element. This
2871 <span class='line'>2864</span> * function shows/hides the Color Mixer panel.
2872 <span class='line'>2865</span> *
2873 <span class='line'>2866</span> * @private
2874 <span class='line'>2867</span> * @param {Event} ev The DOM Event object.
2875 <span class='line'>2868</span> */</span><span class="WHIT">
2876 <span class='line'>2869</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">ev_input_click</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ev</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2877 <span class='line'>2870</span> </span><span class="WHIT"> </span><span class="NAME">ev.preventDefault</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2878 <span class='line'>2871</span>
2879 <span class='line'>2872</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">colormixer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2880 <span class='line'>2873</span> </span><span class="WHIT"> </span><span class="NAME">colormixer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gui.app.extensions.colormixer</span><span class="PUNC">;</span><span class="WHIT">
2881 <span class='line'>2874</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2882 <span class='line'>2875</span>
2883 <span class='line'>2876</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">colormixer.targetInput</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">colormixer.targetInput.id</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">_self.id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2884 <span class='line'>2877</span> </span><span class="WHIT"> </span><span class="NAME">colormixer.show</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
2885 <span class='line'>2878</span> </span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">_self.id</span><span class="PUNC">,</span><span class="WHIT">
2886 <span class='line'>2879</span> </span><span class="WHIT"> </span><span class="NAME">configProperty</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">_self.configProperty</span><span class="PUNC">,</span><span class="WHIT">
2887 <span class='line'>2880</span> </span><span class="WHIT"> </span><span class="NAME">configGroup</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">_self.configGroup</span><span class="PUNC">,</span><span class="WHIT">
2888 <span class='line'>2881</span> </span><span class="WHIT"> </span><span class="NAME">configGroupRef</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">_self.configGroupRef</span><span class="PUNC">,</span><span class="WHIT">
2889 <span class='line'>2882</span> </span><span class="WHIT"> </span><span class="NAME">show</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">colormixer_show</span><span class="PUNC">,</span><span class="WHIT">
2890 <span class='line'>2883</span> </span><span class="WHIT"> </span><span class="NAME">hide</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">colormixer_hide</span><span class="WHIT">
2891 <span class='line'>2884</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_self.color</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2892 <span class='line'>2885</span>
2893 <span class='line'>2886</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2894 <span class='line'>2887</span> </span><span class="WHIT"> </span><span class="NAME">colormixer.hide</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2895 <span class='line'>2888</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2896 <span class='line'>2889</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2897 <span class='line'>2890</span>
2898 <span class='line'>2891</span> </span><span class="WHIT"> </span><span class="COMM">/**
2899 <span class='line'>2892</span> * The color mixer &lt;code>show&lt;/code> event handler. This function is invoked
2900 <span class='line'>2893</span> * when the color mixer is shown.
2901 <span class='line'>2894</span> * @private
2902 <span class='line'>2895</span> */</span><span class="WHIT">
2903 <span class='line'>2896</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">colormixer_show</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2904 <span class='line'>2897</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">classActive</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">gui.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'colorInputActive'</span><span class="PUNC">,</span><span class="WHIT">
2905 <span class='line'>2898</span> </span><span class="WHIT"> </span><span class="NAME">elemActive</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.input.className.indexOf</span><span class="PUNC">(</span><span class="NAME">classActive</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
2906 <span class='line'>2899</span>
2907 <span class='line'>2900</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">elemActive</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2908 <span class='line'>2901</span> </span><span class="WHIT"> </span><span class="NAME">_self.input.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">classActive</span><span class="PUNC">;</span><span class="WHIT">
2909 <span class='line'>2902</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2910 <span class='line'>2903</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2911 <span class='line'>2904</span>
2912 <span class='line'>2905</span> </span><span class="WHIT"> </span><span class="COMM">/**
2913 <span class='line'>2906</span> * The color mixer &lt;code>hide&lt;/code> event handler. This function is invoked
2914 <span class='line'>2907</span> * when the color mixer is hidden.
2915 <span class='line'>2908</span> * @private
2916 <span class='line'>2909</span> */</span><span class="WHIT">
2917 <span class='line'>2910</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">colormixer_hide</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2918 <span class='line'>2911</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">classActive</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">gui.classPrefix</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'colorInputActive'</span><span class="PUNC">,</span><span class="WHIT">
2919 <span class='line'>2912</span> </span><span class="WHIT"> </span><span class="NAME">elemActive</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.input.className.indexOf</span><span class="PUNC">(</span><span class="NAME">classActive</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
2920 <span class='line'>2913</span>
2921 <span class='line'>2914</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">elemActive</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2922 <span class='line'>2915</span> </span><span class="WHIT"> </span><span class="NAME">_self.input.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.input.className.replace</span><span class="PUNC">(</span><span class="NAME">classActive</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2923 <span class='line'>2916</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2924 <span class='line'>2917</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2925 <span class='line'>2918</span>
2926 <span class='line'>2919</span> </span><span class="WHIT"> </span><span class="COMM">/**
2927 <span class='line'>2920</span> * Update color. This method allows the change of the color values associated
2928 <span class='line'>2921</span> * to the current color input.
2929 <span class='line'>2922</span> *
2930 <span class='line'>2923</span> * &lt;p>This method is used by the color picker tool and by the global GUI
2931 <span class='line'>2924</span> * &lt;code>configChange&lt;/code> application event handler.
2932 <span class='line'>2925</span> *
2933 <span class='line'>2926</span> * @param {Object} color The new color values. The object must have four
2934 <span class='line'>2927</span> * properties: &lt;var>red&lt;/var>, &lt;var>green&lt;/var>, &lt;var>blue&lt;/var> and
2935 <span class='line'>2928</span> * &lt;var>alpha&lt;/var>. All values must be between 0 and 1.
2936 <span class='line'>2929</span> */</span><span class="WHIT">
2937 <span class='line'>2930</span> </span><span class="WHIT"> </span><span class="NAME">this.updateColor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">color</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2938 <span class='line'>2931</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">anchor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_self.input.firstChild.style</span><span class="PUNC">;</span><span class="WHIT">
2939 <span class='line'>2932</span>
2940 <span class='line'>2933</span> </span><span class="WHIT"> </span><span class="NAME">anchor.opacity</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">color.alpha</span><span class="PUNC">;</span><span class="WHIT">
2941 <span class='line'>2934</span> </span><span class="WHIT"> </span><span class="NAME">anchor.backgroundColor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'rgb('</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">MathRound</span><span class="PUNC">(</span><span class="NAME">color.red</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">255</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">','</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
2942 <span class='line'>2935</span> </span><span class="WHIT"> </span><span class="NAME">MathRound</span><span class="PUNC">(</span><span class="NAME">color.green</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">255</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">','</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
2943 <span class='line'>2936</span> </span><span class="WHIT"> </span><span class="NAME">MathRound</span><span class="PUNC">(</span><span class="NAME">color.blue</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">255</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">')'</span><span class="PUNC">;</span><span class="WHIT">
2944 <span class='line'>2937</span> </span><span class="WHIT"> </span><span class="NAME">_self.color.red</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">color.red</span><span class="PUNC">;</span><span class="WHIT">
2945 <span class='line'>2938</span> </span><span class="WHIT"> </span><span class="NAME">_self.color.green</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">color.green</span><span class="PUNC">;</span><span class="WHIT">
2946 <span class='line'>2939</span> </span><span class="WHIT"> </span><span class="NAME">_self.color.blue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">color.blue</span><span class="PUNC">;</span><span class="WHIT">
2947 <span class='line'>2940</span> </span><span class="WHIT"> </span><span class="NAME">_self.color.alpha</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">color.alpha</span><span class="PUNC">;</span><span class="WHIT">
2948 <span class='line'>2941</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2949 <span class='line'>2942</span>
2950 <span class='line'>2943</span> </span><span class="WHIT"> </span><span class="NAME">init</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2951 <span class='line'>2944</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2952 <span class='line'>2945</span>
2953 <span class='line'>2946</span> </span><span class="COMM">// vim:set spell spl=en fo=wan1croqlt tw=80 ts=2 sw=2 sts=2 sta et ai cin fenc=utf-8 ff=unix:</span><span class="WHIT">
2954 <span class='line'>2947</span>
2955 <span class='line'>2948</span> </span></pre></body></html>