UML 颜色绘图插件(UML Coloring 插件)概述
该插件提供了一种框架,帮助您开发可扩展的着色方案,并应用一系列最普通的规则。最初,您会创建一些不同规则的实例(例如,所有 冷色调的模型都用蓝色标示)。然后,当一个模型元素满足添加至一个图表界面的标准时,插件会根据您设定的规则自动为模型确定一种颜色。在这里提供了一系列不同的规则:
- 根据名字着色(使用一个规范的表达式来定义名字)
- 根据构造型来着色
- 根据关键字来着色
- 根据构造型属性值来着色
- 根据类型(类,界面等等)来着色
- 根据关系来着色(所有根据一个指定的关系类型与特定名字的类相关的元素)
这种方法要比手动设定程序的颜色要远远有效和有用,因为它是非常稳定的。大多数的人只考虑根据构造型来应用颜色,但是这种方法可能会提供不同的规则和创建新规则的不同能力。(用户界面和本文中显示的代码使用颜色的大不列颠拼写规则。所以在有些地方您可以使用 colour)。
怎样安装 UML Coloring 插件
UML Coloring 插件的安装是直接的:
- 下载本文中含有的 RAS 文件到您的硬盘上去(查看 下载 部分)。
- 启动 IBM? Rational? Software Modeler(或者 IBM? Rational? SoftwareArchitect),然后选择 File > Import。
- 选择 RAS > RAS Asset,然后点击 Next。
- 切换至下载的 RAS 文件处,接受关于可部署插件的警告,然后点击 Next。
- 选择特性,接受许可证协议,然后点击 Finish。
- 当弹出一个对话框时,重启内核以激活插件。
- 现在切换至 Modeling 视角,并选择 Window > Preferences > Modeling,然后您就可以看到 Color Preferences 页面了。
怎样使用 UML Coloring 插件
使用它的方法仍然是直接的,两步的过程:定义规则,然后应用规则。
定义着色规则
- 为了定义一个着色规则,您可以点击 Windows > Preferences > Modeling,然后在左边点击 Color Preferences,以打开如图 1 所示的 Color Preferences 窗格。
图 1. 选中 Color Preferences 的 Preferences 视图
点击 Add Rule 按钮,并选择一个规则类型(见于图 2)。
图 2. Choose Rule Type 窗口
- 点击 OK,然后在图 3 所示的规则对话框中定义规则(不同的规则类型拥有不同的规则创建对话框)。为了演示这一点,我们创建了一个让关键字变蓝的规则(见于图 3):
- 规则名:BlueKeyword
- 规则颜色:[light blue selected]
- 关键字名:Data
图 3. Create Rule 窗口
现在您就可以看到 Preferences 菜单中的规则。您可以在向图表添加元素的任意时刻,来使用这条规则。
应用规则
按照以下的方法来应用您在前面创建的规则:
- 首先,在模型浏览器中创建一个类。
- 然后,有了选中的类,打开 Properties 项,点击 Stereotypes 选项,例如,在 Keywords 区域中输入 Data(见于图 4)。
图 4. Class Properties 项打开了,Stereotypes 视图
- 现在将一个类从 Project Explorer 拖拉到一个 UML 表中(图 5)。它就会根据您所定义的着色规则来自动设定颜色了。
图 5. 应用的规则
注意:
如果您想对一个已存在的图表重新应用着色规则,那么您可以右击图表,或者一个元素,并选择 Re-Apply Colour Rules,这就会对图表上的所有的元素应用着色规则。
怎样扩展 UML Coloring 插件
颜色绘图插件提供了一个扩展点,这样您就可以添加自己的着色规则了。代码行 1 显示了这些扩展点是如何定义的。
代码行 1. 扩展点 XML 方案
<element name="extension">
<complexType>
<sequence>
<element ref="colour_rule_type"/>
</sequence>
<attribute name="point" type="string" use="required"> </attribute>
<attribute name="id"type="string"> </attribute>
<attribute name="name" type="string"> </attribute>
</complexType>
</element>
<element name="colour_rule_type">
<complexType>
<attribute name="class" type="string" use="required">
<annotation>
<appInfo>
<meta.attribute kind="java"
basedOn="com.ibm.uk.scripts.elementcolourer.model.IColourRuleType"/>
</appInfo>
</annotation>
</attribute>
</complexType>
</element> |
代码行 2 是一个扩展点定义的范例。
代码行 2. 扩展点范例
<extension
id="com.ibm.uk.scripts.element_colourer.StereotypeRule"
name="com.ibm.uk.scripts.element_colourer.StereotypeRule"
point="com.ibm.uk.scripts.element_colourer.colourruletype">
<colour_rule_type
class="com.ibm.uk.scripts.elementcolourer.rules.stereotyperule.StereotypeRuleKind">
</colour_rule_type>
</extension> |
在您完成定义扩展之后,您就需要执行这三个类了:
- IColourRuleType,执行这个界面以为这种类型的着色规则定义元数据
- IColourRule,执行这个界面以定义着色规则的实例
- RuleDialog,RuleDialog 的子类提供了创建和编辑规则的对话框
代码行 3 和代码行 4 显示了必须执行的界面,而 RuleDialog 的一个范例可以通过下载下面所示的代码来看到。
代码行 3. IColourRuleType
public interface IColourRuleType
{
public IColourRule createRule() ;
public void editRule(IColourRule rule);
public String getName();
public boolean understandsRuleString(String ruleString);
public IColourRule loadFromString(String ruleString);
} |
代码行 4. IColourRule
public interface IColourRule
{
public boolean matchesElement(ElementtheElement);
public void setViewColour(View view);
public String createPreferenceString();
public String getName();
public String getType();
public RGB getRGBColor();
public void setName(String name);
public void setRGBColour(RGB colour);
} |
|