Adobe 38040334 Extending Dreamweaver - Page 138

document, which is

Page 138 highlights

DREAMWEAVER CS3 132 Extending Dreamweaver } if (uorl == 'u'){ theDocEl.outerHTML = theWholeDoc.substring(0,theSel[0]) + selText.toUpperCase() + theWholeDoc.substring(theSel[1]); } else { theDocEl.outerHTML = theWholeDoc.substring(0,theSel[0]) + selText.toLowerCase() + theWholeDoc.substring(theSel[1]); } // Set the selection back to where it was when you started theDOM.setSelection(theSel[0],theSel[1]); window.close(); // close extension UI } 3 Save the file as Change Case.js in the Configuration/Commands folder. The changeCase() function is a user-defined function that is called by the commandButtons() function when the user clicks OK. This function changes the selected text to uppercase or lowercase. Because the UI uses radio buttons, the code can rely on one choice or the other being checked; it does not need to test for the possibility that the user makes neither choice. The changeCase() function first tests the property document.forms[0].elements[0].checked. The document.forms[0].elements[0] property refers to the first element in the first form of the current document object, which is the UI for the extension. The checked property has the value true if the element is checked (or enabled) and false if it is not. In the interface, elements[0] refers to the first radio button, which is the Uppercase button. Because one of the radio buttons is always checked when the user clicks OK, the code assumes that if the choice is not uppercase, it must be lowercase. The function sets the variable uorl to u or l to store the user's response. The remaining code in the function retrieves the selected text, converts it to the specified case, and copies it back in place in the document. To retrieve the selected text for the user's document, the function gets the DOM. It then gets the root element of the document, which is the html tag. Finally, it extracts the whole document into the theWholeDoc variable. Next, changeCase() calls getSelectedNode() to retrieve the node that contains the selected text. It also retrieves any child nodes (theSelNode.childNodes) in case the selection is a tag that contains text, such as text. If there are child nodes (hasChildNodes() returns the value true), the command loops through the children looking for a text node. If one is found, the text (theChildren[i].data) is stored in selText, and the offsets of the text node are stored in theSel. If there are no child nodes, the command calls getSelection() and stores the beginning and ending offsets of the selection in theSel. It then extracts the string between those two offsets and stores it in selText. The function then checks the uorl variable to determine whether the user selected uppercase. If so, the function writes the HTML code back to the document in sections: first, the beginning of the document to the beginning of the selection; then the selected text, converting it to uppercase (selText.toUppercase()); and last, the end of the selected text to the end of the document. If the user selects lowercase, the function performs the same operation, but calls selText.toLowerCase() to convert the selected text to lowercase. Finally, changeCase() resets the selection and calls window.close() to close the UI.

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • 366
  • 367
  • 368
  • 369
  • 370
  • 371
  • 372
  • 373
  • 374
  • 375
  • 376
  • 377
  • 378
  • 379
  • 380
  • 381
  • 382
  • 383
  • 384
  • 385

DREAMWEAVER CS3
Extending Dreamweaver
132
}
if (uorl == 'u'){
theDocEl.outerHTML = theWholeDoc.substring(0,theSel[0]) +
selText.toUpperCase() + theWholeDoc.substring(theSel[1]);
}
else {
theDocEl.outerHTML = theWholeDoc.substring(0,theSel[0]) +
selText.toLowerCase() + theWholeDoc.substring(theSel[1]);
}
// Set the selection back to where it was when you started
theDOM.setSelection(theSel[0],theSel[1]);
window.close(); // close extension UI
}
3
Save the file as Change Case.js in the Configuration/Commands folder.
The
changeCase()
function is a user-defined function that is called by the
commandButtons()
function when the
user clicks OK. This function changes the selected text to uppercase or lowercase. Because the UI uses radio buttons,
the code can rely on one choice or the other being checked; it does not need to test for the possibility that the user
makes neither choice.
The
changeCase()
function first tests the property
document.forms[0].elements[0].checked
. The
document.forms[0].elements[0]
property refers to the first element in the first form of the current document
object, which is the UI for the extension. The
checked
property has the value
true
if the element is checked
(or enabled) and
false
if it is not. In the interface,
elements[0]
refers to the first radio button, which is the
Uppercase button. Because one of the radio buttons is always checked when the user clicks OK, the code assumes
that if the choice is not uppercase, it must be lowercase. The function sets the variable
uorl
to
u
or
l
to store the
user’s response.
The remaining code in the function retrieves the selected text, converts it to the specified case, and copies it back in
place in the document.
To retrieve the selected text for the user’s document, the function gets the DOM. It then gets the root element of the
document, which is the
html
tag. Finally, it extracts the whole document into the
theWholeDoc
variable.
Next,
changeCase()
calls
getSelectedNode()
to retrieve the node that contains the selected text. It also retrieves
any child nodes (
theSelNode.childNodes)
in case the selection is a tag that contains text, such as
<b>text</b>
.
If there are child nodes (
hasChildNodes()
returns the value
true
), the command loops through the children
looking for a text node. If one is found, the text (
theChildren[i].data
) is stored in
selText
, and the offsets of the
text node are stored in
theSel
.
If there are no child nodes, the command calls
getSelection()
and stores the beginning and ending offsets of the
selection in
theSel
. It then extracts the string between those two offsets and stores it in
selText
.
The function then checks the
uorl
variable to determine whether the user selected uppercase. If so, the function
writes the HTML code back to the document in sections: first, the beginning of the document to the beginning of
the selection; then the selected text, converting it to uppercase (
selText.toUppercase()
); and last, the end of the
selected text to the end of the document.
If the user selects lowercase, the function performs the same operation, but calls
selText.toLowerCase()
to
convert the selected text to lowercase.
Finally,
changeCase()
resets the selection and calls
window.close()
to close the UI.