4-一张图解密Vector Davinci Configurator启动流程

目录

1、前言

2、启动时序图

3、程序入口

4、流程控制

5、疑问和困惑

6、总结


1、前言

事实上,只要是基于Eclipse RCP平台的桌面应用,都有相同启动流程。当然,这也包括Vector公司的Davinci Configurator工具。本文继续以hellobeijing项目为例,深入探讨Eclipse RCP平台的启动流程。

在汽车工具链软件中,大部分都是基于Eclipse RCP平台开展二次开发。如在AUTOSAR配置工具中,Vector公司的Davinci Configurator,ETAS公司的RTA-CAR ISOLAR AB,Elektrobit公司的Tresos等;在通用编译器中,HighTec公司的HighTec,NXP公司的CodeWarrior和S32Design Studio,TI公司的Code Composer Studio等。

汽车基础软件,公众号:汽车基础软件来白嫖了!基于Eclipse RCP平台的汽车工具链软件开发方法(系列教程)

2、启动时序图

不啰嗦,直接上图!

图片

这张UML时序图清晰展示hellobeijing项目的内部运行流程,而时序图中的多个参与者(participant)正是在src文件中的java文件。

图片

在前文中,笔者提到src文件夹内放置项目源码,用于实现相应的控制逻辑。

src文件夹中放置本项目的源码,实现相应的控制逻辑。

汽车基础软件,公众号:汽车基础软件从Eclipse RCP平台的hellobeijing案例开启汽车工具链软件自研之旅

3、程序入口

首先,笔者将讲解为什么在用户点击“Launch an Eclipse application”按钮后,Eclipse RCP应用自动进入HelloBeijingApplication.java文件的start()函数。

单击“Launch an Eclipse application”以开始项目运行,或者单击“Launch an Eclipse application in Debug mode”以开始项目调试。

汽车基础软件,公众号:汽车基础软件从Eclipse RCP平台的hellobeijing案例开启汽车工具链软件自研之旅

1,在菜单Run,点击Run Configurations...

图片

2,在弹出对话框中,记住红框中的Run as application选项的值是com.basicsw.hellobeijing.application,然后,关闭此对话框。

注意,勾选蓝色框中的Clear复选框,确保每次运行时都以空的工作空间启动应用。

图片

3,点击“工程浏览”栏的plugin.xml文件,并选中Extension标签。然后,在All Extensions栏目中选中org.eclipse.core.runtime.applications。注意到,此时ID的值正是application,而上步中Run as application选项的值也恰好是com.basicsw.hellobeijing.application。所以,当用户选择Run as application时,Eclipse RCP应用必然会跳转到由org.eclipse.core.runtime.applications的ID属性所描述的入口。

图片

4,点击org.eclipse.core.runtime.applications的application节点,看到run参数的class正是com.basicsw.hellobeijing.HelloBeijingApplication,也就是指向HelloBeijingApplication.java。

图片

可能读者有疑问,为什么Application的名字是HelloBeijingApplication?因为笔者在前文做了特殊设置。

6,在弹出的Single View RCP application向导对话框中,修改Application class的值为HelloBeijingApplication,其它默认保持不变,点击Finish按钮。

汽车基础软件,公众号:汽车基础软件从Eclipse RCP平台的hellobeijing案例开启汽车工具链软件自研之旅

4、流程控制

接下来,笔者将逐一介绍src文件夹中除Activator.java和View.java外的全部文件的控制逻辑。

序号类名功能
1HelloBeijingApplication程序入口
2ApplicationWorkbenchAdvisor负责工作台生命周期管理
3ApplicationWorkbenchWindowAdvisor负责工作台窗口生命周期管理
4ApplicationActionBarAdvisor负责工作台行为栏管理
5Perspective默认透视图,负责界面布局的安排

1,HelloBeijingApplication.javaHelloBeijingApplication类正是Eclipse RCP程序的入口,它实现了IApplication接口。在RCP程序启动时,会执行该接口的start()方法;在程序停止时,会执行该接口的stop()方法。PlatformUI.createAndRunWorkbench()方法用来启动工作台,打开应用程序的主窗口,并处于持续打开状态。应用程序开始处理用户的鼠标单击、鼠标移动、按键等各种事件,一直到用户关闭程序退出,这就是所谓的事件循环。

2,ApplicationWorkbenchAdvisor.java

package com.basicsw.hellobeijing;

import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
import org.eclipse.ui.application.WorkbenchAdvisor;
import org.eclipse.ui.application.WorkbenchWindowAdvisor;

public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor {

	private static final String PERSPECTIVE_ID = "com.basicsw.hellobeijing.perspective";

	@Override
	public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor(
			IWorkbenchWindowConfigurer configurer) {
		return new ApplicationWorkbenchWindowAdvisor(configurer);
	}
	
	@Override
	public String getInitialWindowPerspectiveId() {
		return PERSPECTIVE_ID;
	}

}

ApplicationWorkbenchAdvisor 继承自WorkbenchAdvisor类,类负责工作台生命周期管理,它告诉工作台如何行动,即如何做、做什么。在工作台的生命周期内可以调用一些辅助方法,这些方法可以在该类中被重写,常见的方法有initialize()、preStartup()、postStartup()、 preShutdown()、postShutdown()等,具体请参考Eclipse官方文档。

3,ApplicationWorkbenchWindowAdvisor.java

package com.basicsw.hellobeijing;

import org.eclipse.swt.graphics.Point;
import org.eclipse.ui.application.ActionBarAdvisor;
import org.eclipse.ui.application.IActionBarConfigurer;
import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
import org.eclipse.ui.application.WorkbenchWindowAdvisor;

public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {

	public ApplicationWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
		super(configurer);
	}
	
	@Override
	public ActionBarAdvisor createActionBarAdvisor(
			IActionBarConfigurer configurer) {
		return new ApplicationActionBarAdvisor(configurer);
	}

	@Override
	public void preWindowOpen() {
		IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
		configurer.setInitialSize(new Point(400, 300));
		configurer.setShowCoolBar(false);
		configurer.setShowStatusLine(false);
		configurer.setTitle("RCP Application");
	}
}

ApplicationWorkbenchWindowAdvisor 类负责应用程序窗口生命周期的管理,该类扩展自WorkbenchWindowAdvisor。每个应用程序都需要一个WorkbenchWindowAdvisor来控制窗口在生命周期中的大小、标题、位置等。读者可自行替换"RCP Application"为其它字符串,并运行hellobeijing项目,查看修改效果。

4,ApplicationActionBarAdvisor.java

package com.basicsw.hellobeijing;

import org.eclipse.ui.application.ActionBarAdvisor;
import org.eclipse.ui.application.IActionBarConfigurer;

/**
 * An action bar advisor is responsible for creating, adding, and disposing of
 * the actions added to a workbench window. Each window will be populated with
 * new actions.
 */
public class ApplicationActionBarAdvisor extends ActionBarAdvisor {

	// Actions - important to allocate these only in makeActions, and then use
	// them
	// in the fill methods. This ensures that the actions aren't recreated
	// when fillActionBars is called with FILL_PROXY.

	public ApplicationActionBarAdvisor(IActionBarConfigurer configurer) {
		super(configurer);
	}

}

ApplicationActionBarAdvisor类扩展自 ActionBarAdvisor,用于构建菜单栏、工具栏和状态栏。ActionBarAdvisor的主要方法是fillActionBars(),在该方法中调用makeActions(),fillMenuBar(),fillCoolBar()和fillStatusLine()等方法实现菜单栏或工具链动作设置,菜单栏填充,工具栏填充,以及状态栏填充等功能。

5,Perspective.java

package com.basicsw.hellobeijing;

import org.eclipse.ui.IPageLayout;
import org.eclipse.ui.IPerspectiveFactory;

public class Perspective implements IPerspectiveFactory {

	@Override
	public void createInitialLayout(IPageLayout layout) {
		layout.setEditorAreaVisible(false);
		layout.setFixed(true);
		
	}

}

Perspective主要负责工作台中默认页面布局的安排。当前,编辑区域设置为不可见,读者可自行修改false为true,并运行hellobeijing项目,查看修改效果。

5、疑问和困惑

最后,读者可能有疑问,在createInitialLayout()中并没有设置页面的代码,那为什么hellobeijing项目运行后,怎么会有一个用红框圈出的“View”页面呢?笔者将在后续贴文中为读者解密。

图片

6、总结

为积极响应Eclipse软件定义汽车工作组倡导的开源精神,考虑到在中文语法环境中Eclipse RCP平台的开发资料极度稀缺,汽车基础软件公众号陆续发布一系列的原创文章,深入介绍基于Eclipse RCP平台的汽车工具链软件开发方法,敬请关注微信公众号以获取更多精彩内容。

  • 54
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vector DaVinci Configurator是一款强大的软件工具,用于配置和管理AUTOSAR(Automotive Open System Architecture)系统中的ARXML文件。ARXML(AUTOSAR XML)文件是AUTOSAR系统描述的一种XML(eXtensible Markup Language)表示。通过使用DaVinci Configurator,我们可以更轻松地创建、编辑和验证ARXML文件,以实现AUTOSAR系统的配置。 DaVinci Configurator提供了一个直观的界面,使得用户可以方便地导入、浏览和编辑ARXML文件。通过该工具,我们可以定义AUTOSAR的各个组件,包括ECU(Electronic Control Unit)、软件组件、接口等等。我们可以配置这些组件的各种属性,如名称、数据类型、接口类型等等。此外,DaVinci Configurator还提供了自动验证功能,可以帮助我们检查ARXML文件的合规性和一致性。 使用DaVinci Configurator,我们可以根据项目需求灵活地配置AUTOSAR系统,以满足不同的应用场景。无论是在汽车电子控制单元(ECU)的开发、集成和测试阶段,还是在整个AUTOSAR系统的设计和开发过程中,DaVinci Configurator都可以为工程师们提供强大的支持。 总的来说,Vector DaVinci Configurator是一款非常实用的工具,能够简化和加速AUTOSAR系统的配置过程。通过它,我们可以方便地创建和编辑ARXML文件,定义和配置各个AUTOSAR组件。它可帮助我们实现自动验证和合规性检查,提高系统的质量和可靠性。无论在汽车行业还是其他领域,DaVinci Configurator都是必不可少的工具之一。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值