eclipse中扩展点的添加和删除

ExtensionTracker是 IExtensionTracker的实现,用于跟踪插件是否为活动状态,由eclipse官方提供的工具类,eclipse的官方UI组件对 IExtensionTracker有自己的实现。如下为例子:

public void start(BundleContext context) throws Exception { 
   IExtensionRegistry reg = Platform.getExtensionRegistry(); 
   IExtensionPoint ep =  
  reg.getExtensionPoint(MY_EXTENSION_POINT_ID); 
   tracker = new ExtensionTracker(reg); 
   IFilter filter =  
  ExtensionTracker.createExtensionPointFilter(ep); 
   tracker.registerHandler(this, filter); 
   IExtension[] extensions = ep.getExtensions(); 
   for (int i = 0; i < extensions.length; ++i) 
  addExtension(tracker, extensions); 
} 
 
public void stop(BundleContext context) throws Exception { 
   if (tracker != null) { 
  tracker.close(); 
  tracker = null; 
  } 
} 
 
public void addExtension(IExtensionTracker tracker, 
  IExtension extension) { 
   IConfigurationElement[] configs =  
  extension.getConfigurationElements(); 
   for (int i = 0; i < configs.length; ++i) { 
  // use configuration properties for something 
  // ... 
  MyDelegate delegate = (MyDelegate) 
 configs.createExecutableExtension(CLASS_ATTR); 
  // do what you need to do 
  // ... 
  delegates.add(delegate); 
  // register association between object and extension 
  // with the tracker 
  tracker.registerObject(extension, delegate, 
 IExtensionTracker.REF_WEAK); 
   } 
} 
 
public void removeExtension(IExtension extension, 
Object[] objects) { 
   // stop using objects associated with 
   // the removed extension 
   for (int i = 0; i < objects.length; ++i) 
  delegates.remove(objects); 
} 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值