一个方向
弄清楚 label、input、combobox、数据源、checkbox 控件等等的使用方法。
kettle 是采用 java 的 swt 来进行界面开发的
构造函数
下面是构造函数的代码:
public ObfusDialog(Shell parent, Object in, TransMeta tr, String sname)
{
super(parent, (BaseStepMeta)in, tr, sname);
meta=(ObfusMeta)in;
}
此构造函数是供 kettle 的内核来实例化插件使用的,这里只介绍in
参数,通过这个参数,kettle 的内核将 ObfusMeta 传递了进来。
顾名思义,ObfusMeta
是专门用来存放控件元数据的,其他元数据主要包括控件的配置参数。例如,下图中红色圈出的部分,都属于处理数据的元数据。
当插件运行时,主要是在 Obfus 中的processRow
方法中处理数据的,ketlte 的内核调用 Obfus 的init
方法来传入 ObfusMeta 的。请看
public boolean init( StepMetaInterface smi
, StepDataInterface sdi) {
meta =(ObfusMeta)smi;
data =(ObfusData)sdi;
super.init(smi, sdi);
return true;
}
Obfus 的processRow
方法中,kettle 的内核会将 data、meta 都传进来的,这样一来就可以得到控件的配置信息了。
元数据的组织方式
控件中的元数据是保存在 Meta 中的 private、public 的变量中的。在 Dialog 中,当用户编辑好控件的配置后,点击确定,可以在相应点击事件的方法中将配置信息保存到 Meta 中。
网友评论