JPDA 架构研究21 - JDI的Debugger的UI部分

简介:

引入:

前面揭示了JDI的Debugger如何建立连接,发送和处理请求,这里我们专注于人机交互部分,Debugger的UI,它主要负责如何把人发出的操作转为请求,以及把请求操作反映在调试器的界面上。


分析:

这个插件主要都定义在org.eclipse.jdt.debug.ui_<Version>.jar中的plugin.xml中,它提供了各种人机交互的插件功能。打的比方,我们看编辑器功能:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
< extension
          point = "org.eclipse.ui.editorActions" >
       < editorContribution
             targetID = "org.eclipse.jdt.ui.CompilationUnitEditor"
             id = "org.eclipse.jdt.debug.CompilationUnitEditor.BreakpointRulerActions" >
          < action
                label = "%AddBreakpoint.label"
                class = "org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
                actionID = "RulerDoubleClick"
                id = "org.eclipse.jdt.debug.ui.actions.ManageBreakpointRulerAction" >
          </ action >
       </ editorContribution >
       < editorContribution
             targetID = "org.eclipse.jdt.ui.ClassFileEditor"
             id = "org.eclipse.jdt.debug.ClassFileEditor.BreakpointRulerActions" >
          < action
                label = "%AddBreakpoint.label"
                class = "org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
                actionID = "RulerDoubleClick"
                id = "org.eclipse.jdt.debug.ui.actions.ManageBreakpointRulerAction" >
          </ action >
       </ editorContribution >
       < editorContribution
             targetID = "org.eclipse.jdt.debug.ui.SnippetEditor"
             id = "org.eclipse.jdt.debug.ui.JavaSnippetToolbarActions" >
          < action
                toolbarPath = "evaluationGroup"
                id = "org.eclipse.jdt.debug.ui.SnippetExecute"
                hoverIcon = "$nl$/icons/full/etool16/run_sbook.gif"
                class = "org.eclipse.jdt.internal.debug.ui.actions.ExecuteAction"
                disabledIcon = "$nl$/icons/full/dtool16/run_sbook.gif"
                enablesFor = "+"
                icon = "$nl$/icons/full/etool16/run_sbook.gif"
                helpContextId = "execute_action_context"
                label = "%Execute.label"
                tooltip = "%Execute.tooltip" >
             < selection
                   class = "org.eclipse.jface.text.ITextSelection" >
             </ selection >
          </ action >
          < action
                toolbarPath = "evaluationGroup"
                id = "org.eclipse.jdt.debug.ui.SnippetDisplay"
                hoverIcon = "$nl$/icons/full/etool16/disp_sbook.gif"
                class = "org.eclipse.jdt.internal.debug.ui.actions.PopupDisplayAction"
                disabledIcon = "$nl$/icons/full/dtool16/disp_sbook.gif"
                enablesFor = "+"
                icon = "$nl$/icons/full/etool16/disp_sbook.gif"
                helpContextId = "display_action_context"
                label = "%Display.label"
                tooltip = "%Display.tooltip" >
             < selection
                   class = "org.eclipse.jface.text.ITextSelection" >
             </ selection >
          </ action >
          < action
                toolbarPath = "evaluationGroup"
                id = "org.eclipse.jdt.debug.ui.SnippetInspect"
                hoverIcon = "$nl$/icons/full/etool16/insp_sbook.gif"
                class = "org.eclipse.jdt.internal.debug.ui.actions.PopupInspectAction"
                disabledIcon = "$nl$/icons/full/dtool16/insp_sbook.gif"
                enablesFor = "+"
                icon = "$nl$/icons/full/etool16/insp_sbook.gif"
                helpContextId = "inspect_action_context"
                label = "%Inspect.label"
                tooltip = "%Inspect.tooltip" >
             < selection
                   class = "org.eclipse.jface.text.ITextSelection" >
             </ selection >
          </ action >
       </ editorContribution >
    </ extension >

从这里看出,它支持好几个操作:如CompilationUnitEditor的打断点 ,ClassFileEditor的打断点等。


每个操作都有用到的图标,用到的action响应类等,有兴趣的可以看下。





本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/1588681,如需转载请自行联系原作者
目录
相关文章
|
设计模式 架构师 Java
阿里P8架构师都要学习研究的java加强版23种设计模式神级PDF文档
说在前面的话 Java作为老牌纯正的编程语言,在规范性上有着天然优势。因此本版的设计模式讲解全部用Java语言来描述,并针对Java语言的特性对讲解内容做了相当大的改动。 不知道大家是否听过编程界的一段话:掌握设计模式相当于华山派的"气宗",是程序员的内功修为,虽然在同样的学习时间下,类似Python这种"剑宗"的开发模式见效更快,但是长远来看,"气宗"才是走向软件架构师以上级别的必由之路。 所以,掌握气宗就掌握了编程命脉,然而学习设计模式有四大境界: 接下来给大家分享的就是java溢彩加强版大话设计模式包含的内容知识点。 总目录 主要内容 本文是百万销量的经典畅销书《
231 0
|
11天前
|
存储 JavaScript 开发工具
基于HarmonyOS 5.0(NEXT)与SpringCloud架构的跨平台应用开发与服务集成研究【实战】
本次的.HarmonyOS Next ,ArkTS语言,HarmonyOS的元服务和DevEco Studio 开发工具,为开发者提供了构建现代化、轻量化、高性能应用的便捷方式。这些技术和工具将帮助开发者更好地适应未来的智能设备和服务提供方式。
36 8
基于HarmonyOS 5.0(NEXT)与SpringCloud架构的跨平台应用开发与服务集成研究【实战】
|
22天前
|
机器学习/深度学习 算法 数据可视化
基于深度混合架构的智能量化交易系统研究: 融合SSDA与LSTM自编码器的特征提取与决策优化方法
本文探讨了在量化交易中结合时序特征和静态特征的混合建模方法。通过整合堆叠稀疏降噪自编码器(SSDA)和基于LSTM的自编码器(LSTM-AE),构建了一个能够全面捕捉市场动态特性的交易系统。SSDA通过降噪技术提取股票数据的鲁棒表示,LSTM-AE则专注于捕捉市场的时序依赖关系。系统采用A2C算法进行强化学习,通过多维度的奖励计算机制,实现了在可接受的风险水平下最大化收益的目标。实验结果显示,该系统在不同波动特征的股票上表现出差异化的适应能力,特别是在存在明确市场趋势的情况下,决策准确性较高。
58 5
基于深度混合架构的智能量化交易系统研究: 融合SSDA与LSTM自编码器的特征提取与决策优化方法
|
3月前
|
设计模式 前端开发 JavaScript
深入探索研究MVVM架构设计
【10月更文挑战第7天】
56 0
|
5月前
|
API Android开发
Android项目架构设计问题之选择和使用合适的UI库如何解决
Android项目架构设计问题之选择和使用合适的UI库如何解决
59 0
|
8月前
|
缓存 负载均衡 Java
基于微服务架构的后端性能优化研究
基于微服务架构的后端性能优化研究
85 0
|
2月前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
3月前
|
开发框架 JavaScript 前端开发
鸿蒙NEXT开发声明式UI是咋回事?
【10月更文挑战第15天】鸿蒙NEXT的声明式UI基于ArkTS,提供高效简洁的开发体验。ArkTS扩展了TypeScript,支持声明式UI描述、自定义组件及状态管理。ArkUI框架则提供了丰富的组件、布局计算和动画能力。开发者仅需关注数据变化,UI将自动更新,简化了开发流程。此外,其前后端分层设计与编译时优化确保了高性能运行,利于生态发展。通过组件创建、状态管理和渲染控制等方式,开发者能快速构建高质量的鸿蒙应用。
165 3
|
16天前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
1月前
|
XML 搜索推荐 前端开发
安卓开发中的自定义视图:打造个性化UI组件
在安卓应用开发中,自定义视图是一种强大的工具,它允许开发者创造独一无二的用户界面元素,从而提升应用的外观和用户体验。本文将通过一个简单的自定义视图示例,引导你了解如何在安卓项目中实现自定义组件,并探讨其背后的技术原理。我们将从基础的View类讲起,逐步深入到绘图、事件处理以及性能优化等方面。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。