下列各节假定您具有 JavaScript、工作台扩展和 SWT 的工作经验。
平台支持两种类型的脚本:
一旦创建了包含脚本的文件,就可以通过首选项对话框(窗口 -> 首选项 -> 脚本)来将该文件注册至工作台。在首选项页面中展开此条目时将显示可以编制脚本的工作台扩展点的列表。通过在首选项树中选择脚本,并按首选项页面中相应的添加按钮, 就可以将脚本添加到每个扩展点中。
首次注册每个脚本时,必须重新启动工作台。一旦注册之后,就可以修改脚本并立即执行脚本,而不需要重新启动工作台。
来自脚本的所有控制台输出,以及在运行脚本时所检测到的所有错误都会写入脚本控制台。可以将脚本控制台添加到其他任何透视图中, 或者可以始终从“脚本编制”透视图(缺省情况下包含控制台视图)来运行脚本。
添加到工作台的脚本只能访问在下列插件中定义的 API 方法:
未来的发行版将取消此限制,从而可以为任何插件编制脚本。
除了预定义的局部变量之外,JavaScript 语言还允许您创建 Java 对象并使用它们的公用 API。JavaScript 特性包可用于此目的。以下代码片段使用包特性来获取安装 URL 和显示位图对象。
var install =
Packages.org.eclipse.core.boot.BootLoader.getInstallURL();
var splash = new Packages.java.net.URL(install,"splash.bmp");
UI 脚本编辑器被注册为类型为 xhtml 的文件的缺省编辑器。
通过示例最容易了解 UI 脚本。有关特定的技术,参见脚本编制示例。以下路线图描述可以在脚本中使用的元素以及它们的受支持属性和事件块。
表行
表数据 — colspan 和 rowspan。定义表单元格。
可以通过在 UI 元素组之间插入换行符 <br /> 来开始新的布局行,以最有效地执行简单的 UI 布局。脚本呈示支持执行缺省布局,在大多数较简单的情况下这已经足够了。
通过使用表来控制 UI 元素的位置,可以获得更复杂的布局。另外,可以使用 <fieldset> 元素来将单独的 UI 元素分组 (但是,在 Web 页面设计中并不会频繁使用有效的 HTML)。
实际的脚本功能主体是使用 <script> 元素来定义的。这些功能是因为在相应的 UI 元素的“onXXX”属性(例如,onload、onreset)中指定的调用而触发的(就象在 HTML 页面中一样)。
对于 UI 脚本,toolkit 局部变量是 org.eclipse.scripting.IToolkitUI 接口的对象实例。它包含在对批处理脚本显示的工具箱对象中不可用的方法。
脚本是使用添加对话框来添加的。对话框将提示您输入以下信息:
即使在利用 Java 来进行脚本编制时,也会使用 JavaScript 事件模型。各种“onXXX”子句是如前文所述指定的。在此情况下,它们是作为对已注册的事件处理程序上的方法的反射性回调来实现的, 而不是作为对“内联” JavaScript 函数的调用来实现的。
<extension point = "org.eclipse.ui.actionSets">
<actionSet
id="scriptActionSet"
label="%S_Script_Examples"
visible="true">
...
<action id = "scriptaction1"
menubarPath =
"window/org_eclipse_scripting_examples/slot1"
toolbarPath =
"%S_Script_Examples"
label =
"%S_Scripted_Action_Example"
tooltip =
"%S_Perform_Scripted_JavaScript_Action"
icon =
"icons/full/ctool16/script_scp.gif"
class=
"org.eclipse.scripting/org.eclipse.scripting.ScriptAdapterWorkbenchAction:file=platform:/plugin/org.eclipse.scripting.examples/excalibur.js
language=javascript">
</action>
...
可以将标准脚本适配器作为任何插件的 plugin.xml 规范的部分直接引用。可以在 org.eclipse.scripting 包中找到受支持的适配器的列表。
脚本编制示例说明这些适配器的其他用途。脚本示例插件通过使用预定义的适配器来实现每个脚本扩展。有关其他详细信息,参考 plugin.xml 文件。
脚本编制示例还提供了描述和用法信息。有关进一步的信息,参见脚本编制示例。