消息动作的实现
利用 Expeditor 的 Property Broker,我们可以定义不同级别的动作实现,如果组件所运行的设备没有 SWT 或 AWT 界面,我们可以用 Eclipse 核心命令的消息处理接口(org.eclipes.core.commands.IHandler)来实现动作,其中 IHandler 接口的 execute() 方法必须实现。PropertyChangeEvent 可以作为消息的触发器并且可以通过 ExecutionEvent.getTrigger() 获得。 以下是处理数据改变时事件响应的动作处理代码:
public Object execute(ExecutionEvent event) throws ExecutionException { final Object eventTrigger = event.getTrigger(); if (eventTrigger instanceof PropertyChangeEvent){ final PropertyChangeEvent pce = (PropertyChangeEvent)eventTrigger; final PropertyValue value = pce.getPropertyValue(); //TODO implement your handler } return null; }
我们的样例是基于 Eclipse 的 Expeditor 客户端,有一个视图用以界面显示,这样我们的事件处理代码可以基于
org.eclipse.jface.action.Action
,需要实现的接口函数是 runWithEvent
, 代码如下:public class setTimeAction extends Action { public void runWithEvent(Event event) { if (event instanceof PropertyChangeEvent) { final PropertyChangeEvent pEvent = (PropertyChangeEvent)event; //System.out.println("Event received"); Thread t = new Thread() { public void run() { PropertyValue value = pEvent.getPropertyValue(); //TODO implement your handler } }; Display display = Display.getDefault(); display.asyncExec(t); } } }