| Acknowledgments | xv |
| Introduction | xix |
| Chapter 1 | Beginning Dreamweaver Extensibility | 1 |
| What Is an Extension? | 2 |
| What Kinds of Extensions Are There? | 4 |
| Behaviors | 5 |
| Objects | 5 |
| Commands | 6 |
| Data Sources | 6 |
| Server Behaviors | 7 |
| Browser Profiles | 7 |
| Floaters | 7 |
| Inspectors | 8 |
| Menus | 8 |
| Server Models | 8 |
| Third-Party Tags | 9 |
| Translators | 9 |
| Reports | 9 |
| References | 9 |
| Building Extensions | 10 |
| The Configurations Folder | 11 |
| The User Interface | 11 |
| JavaScript Code | 13 |
| The Document Object Model | 13 |
| Selections and Offsets | 14 |
| Nodes | 16 |
| Dot Notation | 17 |
| JavaScript API Methods | 19 |
| Shared Folder Functions | 21 |
| Display Help | 21 |
| What to Take Away from this Chapter | 23 |
| Extending Dreamweaver Documents | 23 |
| Chapter 2 | Objects and Behaviors | 25 |
| Objects | 26 |
| A More Complex Object | 31 |
| Coding Your Object | 33 |
| Third-Party Tags and XML | 38 |
| Behaviors | 40 |
| Behavior Functions | 40 |
| The BUDAlert Behavior | 41 |
| A More Complex Behavior | 45 |
| Focus Field | 45 |
| Focus Field Functions | 47 |
| The onLoad Event | 49 |
| The Focus Field Behavior | 49 |
| Focus Field Behavior Functions | 52 |
| Some General Observations about Focus Field | 55 |
| What to Take Away from this Chapter | 57 |
| Exercises | 58 |
| Chapter 3 | Commands | 59 |
| Using Commands | 60 |
| The Command API | 61 |
| Menu-Location=None | 63 |
| Creating a Basic Command | 64 |
| Buttons in Command Files | 66 |
| Using Regular Expressions in Commands | 69 |
| Making History Commands | 72 |
| Copying a History Command to the Clipboard | 73 |
| Using Commands from Other Extensions | 73 |
| Recursion | 74 |
| Adding Head Code | 75 |
| Building the Extension | 76 |
| The User Interface | 80 |
| Menu Commands | 82 |
| Creating the Set Text Editor Prefs Command | 83 |
| The Design Notes Functions | 85 |
| Updating the User Interface | 86 |
| Creating the Menu Items | 87 |
| The Open With Command | 88 |
| What to Take Away from this Chapter | 91 |
| Exercises | 92 |
| Chapter 4 | Property Inspectors and Floaters | 93 |
| Property Inspectors | 94 |
| The Interface of a Property Inspector | 94 |
| Inspecting the Selection | 97 |
| Form Inspector | 98 |
| The canInspectSelection Function | 102 |
| The inspectSelection Function | 103 |
| Other Custom Support Functions | 105 |
| Floaters | 108 |
| Creating an HTML Mini Editor | 108 |
| Running Commands from a Floater | 111 |
| Creating an Extension Mini Editor | 114 |
| What to Take Away from this Chapter | 120 |
| Exercises | 120 |
| Chapter 5 | Introduction to UltraDev Extensions | 123 |
| How Is UltraDev Different from Dreamweaver? | 124 |
| Server Behaviors | 124 |
| Steps for Building a Server Behavior Extension | 126 |
| Your Final Code: The First Step | 128 |
| Accessing the Server Behavior Builder (SBB) | 129 |
| Creating the Code Blocks | 131 |
| Generating the Interface | 133 |
| Adding JavaScript to the Auto-Generated File | 136 |
| XML Files | 137 |
| Extending the Server Behavior Builder (SBB) | 141 |
| Other UltraDev Extensions | 146 |
| Data Sources | 146 |
| Connections | 146 |
| Server Formats | 147 |
| Server Models | 148 |
| What to Take Away from this Chapter | 148 |
| Exercises | 149 |
| Chapter 6 | The Dreamweaver Menus and Extension Packaging | 151 |
| The menus.xml File | 152 |
| Packaging Extensions | 152 |
| Main Tag | 153 |
| Products and Authors Tags | 153 |
| Description of the Extension | 154 |
| Putting Your Files into the Extension Package | 154 |
| Changing the Dreamweaver Menus | 156 |
| Wrapping Up the Package | 157 |
| Using Shared Files in Your Extension Package | 159 |
| Extension Organization | 161 |
| Adding Your Own Menu and Menu Items | 162 |
| Adding an Item to the Context Menus | 165 |
| Using the MXI File Creator Packager Extension | 168 |
| What to Take Away from this Chapter | 175 |
| Exercises | 175 |
| Chapter 7 | Testing and Deploying Extensions | 177 |
| Testing and Debugging the Extension | 178 |
| Using Alert Boxes | 179 |
| Using Eval and Trace Console | 182 |
| The Public Domain Extension Debugger Extension | 186 |
| Repackaging and Version Control for Extensions | 187 |
| Deploying the Extension | 188 |
| The Macromedia Exchange | 189 |
| Downloading Extensions | 190 |
| Uploading Extensions | 192 |
| Other Options | 197 |
| What to Take Away from this book | 197 |
| Appendix A | Shared Functions Reference | 199 |
| Shared CMN Folder Functions | 200 |
| Shared\MM\Scripts\CMN#Ul.js | 200 |
| Shared\MM\Scripts\CMN#doclnfo.js | 201 |
| Shared\MM\Scripts\CMN\DOM.js | 203 |
| Shared\MM\Scripts\CMN\file.js | 204 |
| Shared\MM\Scripts\CMN\form.js | 206 |
| Shared\MM\Scripts\CMN\insertion.js | 206 |
| Shared\MM\Scripts\CMN#string.js | 207 |
| Shared Class Folder | 208 |
| UltraDev Shared Files | 209 |
| Other Important Files | 210 |
| Extensions.txt | 211 |
| SourceFormat.txt | 211 |
| TagAttributeList.txt | 212 |
| localTextDW.htm and localTextUltraDev.htm | 212 |
| Summary | 213 |
| Appendix B | Further Reading | 215 |
| Web Sites | 216 |
| Books | 217 |
| Index | 123 |