当运用eclipse扩展点handler来使用command的时候,有时我们需要获取得到上下文信息,其实在org.eclipse.core.commands.IHandler这个接口中定义的execute(ExecutionEvent event)方法里面,我们可以从event这个参数获取得到全局状态(随上下文信息改变)。
我们可以通过继承org.eclipse.core.commands.AbstractHandler来定制我们需要的handler。例如说我想要获取到左侧导航器中选中的IResource的话,我会实现一个类继承自AbstractHandler,并定义方法通过ExecutionEvent来获取上下文信息。
public abstract class AbstractResourceHandler extends AbstractHandler {
/**
* 获取选择的IResource集合
*
* @param applicationContext
* @return
*/
protected List<IResource> getSelectedResources(Object applicationContext) {
if (applicationContext instanceof IEvaluationContext) {
IEvaluationContext evaluationContext = ((IEvaluationContext) applicationContext);
Object obj = evaluationContext.getDefaultVariable();
if (obj instanceof List && !((List) obj).isEmpty()) {
List<IResource> resources = new ArrayList<IResource>();
for (Object var : (List) obj) {
if (var instanceof IResource) {
resources.add((IResource) var);
} else {
return null;
}
}
return resources;
}
}
return null;
}
}
在我们最终使用handler的时候我们可以通过execute方法来调用getSelectedResources方法来获取选择的IResource集合
public class ResourceHandler extends AbstractResourceHandler{
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
List<IResource> resources = getSelectedResources(event.getApplicationContext());
/**
* do something
*/
return null;
}
}
这只是全局状态的一种运用,当使用handler的时候需要到上下文信息的时候可以先使用类似的方式来获取,也许能解决。
分享到:
相关推荐
它首先调用`getErrorAttributes`方法获取错误信息,然后根据状态码创建一个`ServerResponse`对象,并将错误信息作为Body返回。 5. **辅助方法**:`buildMessage`方法用于构建错误信息,可以根据实际需要添加更多...
在Android应用开发中,全局异常处理是至关重要的一个环节,它确保了应用程序在遇到未预期错误时能够优雅地处理,防止应用突然崩溃,提供良好的用户体验。"android全局异常处理"这个主题关注的就是如何在整个Android...
**Server.Transfer** 方法用于在服务器端实现页面跳转,并可以将当前页面的状态传递到目标页面,使得目标页面能获取到当前页面的所有状态。 - **示例代码:** - 在`a.aspx`页面中设置: ```csharp public string ...
本教程将深入探讨Vue的全局API、实例属性、全局配置以及组件进阶中的mixins概念,通过案例分析和详细图解,帮助你更好地理解和应用这些知识。 首先,我们来看全局API。Vue.directive()用于注册自定义指令,这是一种...
`handle_interrupt`是中断处理的核心,它从堆栈中获取当前运行的线程控制块(TCB)信息,然后根据中断号创建一个特殊的线程ID,用于标识中断线程。 中断线程ID的构造很有特点,其全局版本号(version)设为1,线程...
// 从session或JWT中获取用户信息,判断是否已登录 // 如果未登录,可以抛出异常或重定向到登录页面 } } ``` 或者使用拦截器: ```java public class LoginInterceptor implements HandlerInterceptor { @...
代码中,我们有两种方式发送Message到Handler:一是通过`handler.obtainMessage()`获取并发送;二是直接创建新的Message实例并使用`handler.sendMessage()`。两种方式都可以,关键在于Handler必须是消息的目标接收者...
Getters可以看作是状态的计算属性,它们是从状态中派生出来的值。当你需要根据状态计算出其他衍生数据时,getters就派上用场了。例如,你可以创建一个getter来获取双倍的计数值。 3. **Mutations**: Mutations是...
- 此函数会根据次设备号(`iminor(inode)`)从`input_table`中获取对应的`handler`。 - 获取到`handler`之后,会使用`handler->fops`中的操作替换原有文件对象的`f_op`字段,然后调用新的`f_op`中的`open`方法。 2....
例如,`GlobalMemoryStatusEx`函数可以从系统中获取全局内存状态,而`GetPerformanceInfo`函数则能提供更详细的性能信息,包括页面文件的使用情况。 在VC环境中,创建服务程序需要使用`CreateService` API函数来...
全局表的查询操作,只从一个节点获取 全局表可以跟任何一个表进行 JOIN 操作 全局表通常用于存储少量、变化不频繁的数据,如字典表、厂商表、网络设备表、设备状态表、设备类型表等。 2. ShareJoin ShareJoin...
* 默认情况下,如果全局的 `config.errorHandler` 被定义,所有的错误仍会发送它,因此这些错误仍然会向单一的分析服务的地方进行汇报。 * 如果一个组件的继承或父级从属链路中存在多个 `errorCaptured` 钩子,则...
例如,在`QueryPage.aspx`中设置公共属性,然后在`Server.Transfer("ResultPage.aspx")`时,目标页面(`ResultPage.aspx`)可以通过`Context.Handler`来访问源页面的对象,从而获取数据。 在大量参数传递的情况下,...
对于更精确的实时流量监控,我们需要监听系统广播`ACTION_DATA_CONNECTION_STATE`,在接收器中处理网络状态变化,或者利用`TrafficStats`类获取更细粒度的数据。 其次,**服务(Service)**在后台持续运行,负责...
单例模式是其中之一,它确保一个类只有一个实例,并提供一个全局访问点。在这个场景中,我们讨论的是一个使用Python实现的单例模式日志记录器。日志记录器是程序中用于记录运行时信息的重要工具,它帮助开发者追踪...
- 如果希望统一处理所有未捕获的异常,可以在`Handler`类的`register`方法中注册全局异常处理器,这使得即使在未定义`try...catch`块的地方也能处理异常。 6. **错误日志** - Laravel通过`Log` facade记录错误...
- `state` 用于存放应用的全局状态,所有组件都可以访问。 - 不能直接修改 `state`,必须通过 `mutations`。 5. ** mutations**: - `mutations` 是修改 `state` 的唯一途径,它们是同步的。 - 每个 `mutation`...
在这个demo中,`state`对象通常定义在store的配置中,包含了应用的全局数据。例如: ```javascript const store = new Vuex.Store({ state: { count: 0 } }) ``` 这里的`count`就是共享状态,可以通过`this....
在异常处理的JSP页面(例如`/error/error.jsp`)中,我们可以通过`request.getAttribute("exception")`获取到引发异常的对象,并展示异常的详细信息。`exception`是`SimpleMappingExceptionResolver`默认使用的键,...
1. **State(状态)**:Vuex中的状态就是全局的应用状态。所有的组件都可以访问,但只能通过特定的机制(如actions和mutations)来修改。这是整个应用的单一源数据。 2. **Getter(计算属性)**:类似于Vue组件的...