码迷,mamicode.com
首页 > Windows程序 > 详细

RapidMiner studio之GUI源码分析

时间:2015-07-14 17:24:38      阅读:321      评论:0      收藏:0      [点我收藏+]

标签:

      以GUI方式启动RapidMiner时,其入口是类com.rapidminer.gui.RapidMinerGUI,这个类中有com.rapidminer.RapidMiner类的一个引用,RapidMiner是整个工具的主类,其完成了大多数的初始化工作,RapidMinerGUI则添加了以GUI方式启动时的相关配置的初始化功能。

     以下从com.rapidminer.gui.RapidMinerGUI的main方法开始,分析RapidMiner studio启动过程:

     RapidMiner.main

safeMode = new SafeMode();
safeMode.launchStarts();
launch(args);
safeMode.launchComplete();

     SafeMode类的主要作用是在启动的时候判断是否有一个safeMode.lock文件,如果有,则说明上次启动后RapidMiner studio进程没有正常结束,则会询问用户是否要进入安全模式(安全模式下不加载插件),如果没有这个文件,则先创建这样一个文件,然后再启动进程,这个类的源码很简单,可以自己查看。

     launch方法最终调用的是RapidMinerGUI中的run方法,run方法中,调用开源框架vldocking进行UI的设置,然后就是调用RapidMiner类中的静态方法和其它一些工具类进行参数的初始化工作,与UI相关的参数的初始化工作则在RapidMinerGUI类中完成。

    以下分析run方法中调用的各个方法完成的工作:

 1 DockingUISettings.setInstance(new DockingUISettings());
 2 DockableContainerFactory.setFactory(new TabFactory());
 3 RapidMiner.showSplash();
 4 RapidMiner.splashMessage("basic");
 5 RapidMiner.init();
 6 RapidMiner.splashMessage("workspace");
 7 RapidMiner.splashMessage("plaf");
 8 setupToolTipManager();
 9 setupGUI();
10 RapidMiner.splashMessage("history");
11 loadRecentFileList();
12 RapidMiner.splashMessage("icons");
13 SwingTools.loadIcons();
14 RepositoryManager.getInstance(null).createRepositoryIfNoneIsDefined();
15 RapidMiner.splashMessage("create_frame");
16 SwingUtilities.invokeAndWait(new Runnable() {
17     @Override
18     public void run() {
19     setMainFrame(new MainFrame(openLocation != null ? "design" : "welcome"));
20             }
21     });
22 RapidMiner.splashMessage("gui_properties");
23 loadGUIProperties(mainFrame);
24 RapidMiner.splashMessage("plugin_gui");
25 Plugin.initPluginGuis(mainFrame);
26 RapidMiner.splashMessage("show_frame");
27 mainFrame.setVisible(true);
28 UsageStatsTransmissionDialog.init();
29 RapidMiner.splashMessage("checks");
30 Plugin.initFinalChecks();
31 RapidMiner.splashMessage("ready");
32 RapidMiner.hideSplash();
33 if (openLocation != null) {
34     if(!RepositoryLocation.isAbsolute(openLocation)) {
35     SwingTools.showVerySimpleErrorMessage("malformed_repository_location", openLocation);
36             } else {
37                 OpenAction.open(openLocation, false);
38             }
39         }
40 Plugin.initPluginUpdateManager();
41 UpdateManager.checkForUpdates();
42 UpdateManager.checkForPurchasedNotInstalled();
43 AutoSave autosave = new AutoSave();
44 autosave.onLaunch();

      代码的1-2行使用的是开源框架vldocking进行GUI的设置,因为先阶段关心的是RapidMiner的核心模块(operator,process,repository),所以暂时没有研究这个ui框架,等RapidMiner研究透彻了再来关心这个框架。

      代码的3-4行是创建一个启动画面,在画面中提示当前进行的工作,这二行代码调用的方法的实现也很简单,这里就不做具体分析了,需要注意的是splashMessge方法是支持多语言环境的,其多语言支持请查看RapidMiner Studio之GUI多语言支持

      代码的第5行,是调用RapidMiner类的init方法完成一些功能的设置,这些功能包括多语言支持、rapidminer home变量设置、repository初始化、配置文件读取和访问、插件注册、operator注册、xml解析(解析operator的XML DOM)、加载JDBC驱动、渲染器初始化。

      在调用RapidMiner的init方法之前,加载RapidMiner类时,RapidMiner中的static代码块首先完成一些参数的设置,这其中就包含了对语言的设置。

      RapidMiner类的init调用的是其它工具类的方法来完成初始化工作,除了插件注册、operator注册外,其余方法都比较简单,下面分析下这插件注册和operator注册的代码:

      插件注册是由Plugin.initAll()完成的,该方法中,调用方法findAndRegisterPlugins(File pluginDir, boolean showWarningForNonPluginJars)加载插件, pluginDir默认路径是(rapidminer home变量下的lib/plugins目录), 该方法继续调用方法registerPlugins(List<File> files, boolean showWarningForNonPluginJars),

RapidMiner studio之GUI源码分析

标签:

原文地址:http://www.cnblogs.com/fairy511/p/4644618.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!