当前位置: 代码迷 >> Web前端 >> General Interface 学习札记(事件机制、日志机制以及汉化)
  详细解决方案

General Interface 学习札记(事件机制、日志机制以及汉化)

热度:597   发布时间:2012-08-22 09:50:35.0
General Interface 学习笔记(事件机制、日志机制以及汉化)
GI事件机制
1、所有事件类型在jsx3.gui.Interactive中已定义
2、为组件添加事件响应的步骤
第一步,实现对应的事件方法,如需实现DOUBLECLICK事件的响应,则重写方法_ebDoubleClick。例如:
TextBox_prototype._ebDoubleClick = function(objEvent, objGUI) {
  alert("Double Click");
};

第二步,在组件paint()方法中注册此事件,关注this.renderHandlers(eventMap, 0)中的eventMap;
eventMap[jsx3.gui.Interactive.DOUBLECLICK] = true;

第三步,公布用户自定义Event接口,跟properties类似,首先建立对应的event属性文件,例如..\gi-3.9.1-source\GI_Builder\plugins\jsx3.ide.palette.events\templates\kingdom_RedBorderTextBox.xml
然后添加到事件属性文件的catalog.xml文件,例如..\gi-3.9.1-source\GI_Builder\plugins\jsx3.ide.palette.events\templates\catalog.xml
然后在组件paint方法中做动态注册,例如:
if (this.hasEvent(Interactive.JSXKEYDOWN))
      eventMap[Event.KEYDOWN] = true;
     
     
GI日志机制
1、所有的logger记录器在GI_HOME下的logger.xml中定义,每个logger都有自己的日志级别,以及自己的处理器,
<handler-ref name="alerter"/>是以alert的形式打出日志,<handler-ref name="console"/>是在控制台打印日志,
<handler-ref name="ide"/>是在builder打印日志,等,如下:
<!-- The global logger. -->
  <logger name="global" level="DEBUG">
    <handler-ref name="memory"/>
    <handler-ref name="console"/>
    <handler-ref name="ide"/>
    <handler-ref name="fatal"/>
    <!--<handler-ref name="appMonitor1"/>-->
  </logger>

  <logger name="jsx3" level="WARN"/>
  <logger name="jsx3.ide" level="WARN"/>
  <logger name="bench" level="WARN"/> <!-- "bench" and its descendants are used by GI benchmarking code -->

  <!-- Since an error in the logging system may mean that other handlers are not working, we'll send any error to
       a JavaScript alert with the alerter handler. -->
  <logger name="jsx3.util.Logger" level="WARN" useParent="false">
    <handler-ref name="alerter"/>
  </logger>
2、在UI组件中获取logger,对于global这样获取,以TextBox为例:
var LOG = jsx3.util.Logger.getLogger(TextBox.jsxclass.getName());
对于jsx3、jsx3.ide、jsx3.util.Logger直接通过名称获取:
var LOG = jsx3.util.Logger.getLogger("jsx3");
var LOG = jsx3.util.Logger.getLogger("jsx3.ide");
var LOG = jsx3.util.Logger.getLogger("jsx3.util.Logger");
3、写日志方法,详见jsx3.util.Logger的api,注意只有比logger级别高的日志才能看到
LOG.debug("Kingdom Textbox painted debug");
LOG.info("Kingdom Textbox painted info");
LOG.warn("Kingdom Textbox painted warn");
LOG.error("Kingdom Textbox painted error");

GI汉化方法方法
GI界面显示内容都是配置在GI_Builder/plugins下面各个目录的plugin.xml文件中
以Component Hierarchy面板为例,配置文件在GI_Builder\plugins\jsx3.ide.editor.component\plugin.xml
汉化时首先在plugin.xml文件开始加上<?xml version="1.0" encoding="UTF-8"?>设置编码格式,保存后再修改对应的label
<extension point="jsx3.ide.ui.palette" id="dom.palette">
    <palette label="组件继承" hotkey="ctrl+1"
             resource="palette_dom" default-position="q2" idegroup="per-file"/>
</extension>
  相关解决方案