UTF.COM.CN

开发一个调试JSP的Eclipse插件

作者:佚名 | 来源:网络 | 添加时间:2006-06-11 21:34:15 | 人气:3781

开发一个调试JSP的Eclipse插件(4)

  在JSP编辑器中设置断点

  在编辑器中添加断点的操作方式有两种,一种是在编辑器左侧垂直标尺上双击,另一种是在左侧垂直标尺上点击鼠标右键,选择菜单"添加/删除断点"。

  在 Eclipse 的实现中,添加断点实际上就是为 IFile 添加一个marker ,类型是IBreakpoint.BREAKPOINT_MARKER,然后将断点注册到 BreakpointManager。

  BreakpointManager 将产生一个 BreakpointRequest,通知正在运行的JVM Target,如果此时还没有启动 JVM,会在 JVM 启动的时候,将所有断点一起通知 JVM Target。

  添加断点使用一个 AbstractRulerActionDelegate,重载 createAction 方法,返回一个 IAction ManageBreakpointRulerAction动作:

public class ManageBreakpointRulerActionDelegate extends AbstractRulerActionDelegate{ 
 protected IAction createAction(ITextEditor editor, IVerticalRulerInfo rulerInfo) { 
  return new ManageBreakpointRulerAction(rulerInfo, editor); 
 } 
} 

  为了将 ManageBreakpointRulerActionDelegate 添加到文本编辑器左侧标尺的鼠标右键菜单,并且能够处理左侧标尺的鼠标双击事件,在 plugin.xml 中加入定义。

  处理双击事件:

 
  
    
    
  
 
       

  添加右键菜单:

 
  
      
     
  
 

  ManageBreakpointRulerAction 是实际添加断点的Action,实现了 IUpdate 接口,这个Action的工作,就是判断当前选中行是否存在断点类型的 Marker,如果不存在创建一个,如果存在,将它删除。

public class ManageBreakpointRulerAction extends Action implements IUpdate{ 
      
     private IVerticalRulerInfo rulerInfo; 
     private ITextEditor textEditor; 
     
     private String BPmarkerType ;     //当点Marker的类型 
     private List allMarkers;       //当前鼠标点击行所有的Marker 
     private String addBP;   //Action 的显示名称 
     
public ManageBreakpointRulerAction(IVerticalRulerInfo ruler, ITextEditor editor){ 
     this.rulerInfo = ruler; 
     this.textEditor = editor; 
     BPmarkerType = IBreakpoint.BREAKPOINT_MARKER; 
     addBP = "添加/删除断点"; //$NON-NLS-1$ 
     setText(this.addBP); 
} 
     
public void update() { 
  this.allMarkers = this.fetchBPMarkerList();  
} 
     
public void run(){ 
 if(this.allMarkers.isEmpty()) 
   this.addMarker(); 
 else 
   this.removeMarkers(this.allMarkers); 
} 
} 
  

  update 方法会在点击时首先调用,这时就可以收集当前选中行是否有marker了(调用fetchBPMarkerList方法),如果有,就保存在 变量allMarkers 中。由于ManageBreakpointRulerAction每一次都产生一个新的实例,因此不会产生冲突。
责任编辑:冬天来了
【字号: 】【去论坛讨论】【发表评论】【打印本文】【告诉好友】【关闭窗口
网友评论(评论内容只代表网友观点,与本站立场无关!)

姓名:

验证码: 点击刷新