亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? resourcestatement.java

?? 外國人寫的c#語法解析器
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
/**
 * Soft Gems Resource parser. Created by Mike Lischke.
 * 
 * The sourceNode code in this file can freely be used for any purpose provided this notice remains 
 * unchanged in the file.
 * 
 * Copyright 2004 by Mike Lischke, www.soft-gems.net, public@soft-gems.net. All rights reserved.
 */

package net.softgems.resourceparser.xml;

import java.util.HashMap;

import net.softgems.resourceparser.RCMainFrame;
import net.softgems.resourceparser.main.RCParserTokenTypes;

import org.jdom.Element;

import antlr.collections.AST;

/**
 * This class converts a resource statement AST to XML.
 */
public class ResourceStatement extends AST2XMLConverter
{

  /** This map allows for a quick lookup of resource types. */
  private HashMap resourceMap = new HashMap();

  //------------------------------------------------------------------------------------------------
  
  /**
   * The constructor of the class.
   * 
   * @param astNode The root node of the subtree we will working on.
   */
  public ResourceStatement(RCMainFrame owner, AST astNode)
  {
    super(owner, astNode);

    resourceMap.put("accelerators", new Integer(RCParserTokenTypes.LITERAL_accelerators));
    resourceMap.put("bitmap", new Integer(RCParserTokenTypes.LITERAL_bitmap));
    resourceMap.put("cursor", new Integer(RCParserTokenTypes.LITERAL_cursor));
    resourceMap.put("dialog", new Integer(RCParserTokenTypes.LITERAL_dialog));
    resourceMap.put("dialogex", new Integer(RCParserTokenTypes.LITERAL_dialogex));
    resourceMap.put("font", new Integer(RCParserTokenTypes.LITERAL_font));
    resourceMap.put("icon", new Integer(RCParserTokenTypes.LITERAL_icon));
    resourceMap.put("menu", new Integer(RCParserTokenTypes.LITERAL_menu));
    resourceMap.put("menuex", new Integer(RCParserTokenTypes.LITERAL_menuex));
    resourceMap.put("messagetable", new Integer(RCParserTokenTypes.LITERAL_messagetable));
    resourceMap.put("rcdata", new Integer(RCParserTokenTypes.LITERAL_rcdata));
    resourceMap.put("versioninfo", new Integer(RCParserTokenTypes.LITERAL_versioninfo));
    resourceMap.put("textinclude", new Integer(RCParserTokenTypes.LITERAL_textinclude));
    resourceMap.put("designinfo", new Integer(RCParserTokenTypes.LITERAL_designinfo));
    resourceMap.put("toolbar", new Integer(RCParserTokenTypes.LITERAL_toolbar));
    resourceMap.put("dlginit", new Integer(RCParserTokenTypes.LITERAL_dlginit));
    resourceMap.put("user defined", new Integer(RCParserTokenTypes.USER_DEFINED));
  }

  //------------------------------------------------------------------------------------------------
  
  /**
   * Converts a "accelerators" entry to XML.
   * 
   * @param sourceNode The node containing the AST data to convert.
   * @param resourceElement The entry to which the new nodes must be added.
   */
  private void convertAcceleratorsEntry(AST sourceNode, Element resourceElement)
  {
    resourceElement.setAttribute("type", "accelerators");

    AST currentNode = sourceNode.getFirstChild();
    if (currentNode != null)
    {
      if (currentNode.getType() == RCParserTokenTypes.RESOURCE_ATTRIBUTES)
      {
        convertResourceAttributes(resourceElement, currentNode);
        currentNode = currentNode.getNextSibling();
      }
    }    

    // Optional common resource info part.
    if (currentNode != null)
    {
      while (currentNode.getType() == RCParserTokenTypes.COMMON_RESOURCE_INFO)
      {
        convertCommonResourceInfo(currentNode, resourceElement);
        currentNode = currentNode.getNextSibling();
      }
    }

    while (currentNode != null)
    {
      AST acceleratorNode = currentNode.getFirstChild();
      
      Element acceleratorElement = new Element("entry");
      resourceElement.addContent(acceleratorElement);
      processEntryWithEvaluationAsAttribute(acceleratorNode, "key", acceleratorElement);
      acceleratorNode = acceleratorNode.getNextSibling();
      processEntryWithEvaluationAsAttribute(acceleratorNode, "id", acceleratorElement);
      acceleratorNode = acceleratorNode.getNextSibling();
      
      if ((acceleratorNode != null) && (acceleratorNode.getType() == RCParserTokenTypes.ACCELERATOR_TYPE))
      {
        acceleratorElement.setAttribute("type", acceleratorNode.getFirstChild().getText());
        acceleratorNode = acceleratorNode.getNextSibling();
      }

      while (acceleratorNode != null)
      {
        Element extraElement = new Element("option");
        acceleratorElement.addContent(extraElement);
        extraElement.setAttribute("value", acceleratorNode.getFirstChild().getText());
        
        acceleratorNode = acceleratorNode.getNextSibling();
      }
      currentNode = currentNode.getNextSibling();
    }
  }

  //------------------------------------------------------------------------------------------------
  
  /**
   * Converts a "bitamp" entry to XML.
   * 
   * @param sourceNode The node containing the AST data to convert.
   * @param resourceElement The entry to which the new nodes must be added.
   */
  private void convertBitmapEntry(AST sourceNode, Element resourceElement)
  {
    resourceElement.setAttribute("type", "bitmap");

    AST currentNode = sourceNode.getFirstChild();
    if (currentNode != null)
    {
      if (currentNode.getType() == RCParserTokenTypes.RESOURCE_ATTRIBUTES)
      {
        convertResourceAttributes(resourceElement, currentNode);
        currentNode = currentNode.getNextSibling();
      }
    }
    
    if (currentNode.getType() == RCParserTokenTypes.FILE_NAME)
    {
      String filename = currentNode.getFirstChild().getText();
      if (filename.startsWith("\""))
        filename = filename.substring(1, filename.length() - 1);
      resourceElement.setAttribute("file-name", filename);
    }
    else
    {
      // Must be raw data, e.g. single literals (string, character, integer etc.) or
      // a collection of hex numbers enclosed by single quotes.
      convertRawDataToXML(currentNode, resourceElement);
    }
  }

  //------------------------------------------------------------------------------------------------
  
  /**
   * Converts a set of common dialog resource info (e.g. characteristics, ex-styles etc.) to XML.
   * 
   * @param node The first node in the list to convert.
   * @param element The target element to add the converted stuff to.
   * @return The first node after the common info.
   */
  private AST convertCommonDialogInfo(AST node, Element element)
  {
    AST currentNode = node;
    boolean doBreak = false;
    while (currentNode != null && !doBreak)
    {
      switch (currentNode.getType())
      {
        case RCParserTokenTypes.LITERAL_characteristics:
        {
          processEntryWithEvaluation(currentNode.getFirstChild(), "characteristics", element);
          break;
        }
        case RCParserTokenTypes.LITERAL_language:
        {
          convertLanguageEntry(currentNode, element);
          break;
        }
        case RCParserTokenTypes.LITERAL_version:
        {
          processEntryWithEvaluation(currentNode.getFirstChild(), "version", element);
          break;
        }
        case RCParserTokenTypes.LITERAL_caption:
        {
          Element subElement = new Element("caption");
          element.addContent(subElement);
          subElement.setAttribute("value", convertToString(currentNode.getFirstChild()));
          break;
        }
        case RCParserTokenTypes.LITERAL_class:
        {
          processEntryWithEvaluation(currentNode.getFirstChild(), "class", element);
          break;
        }
        case RCParserTokenTypes.LITERAL_exstyle:
        {
          processEntryWithEvaluation(currentNode.getFirstChild(), "exstyle", element);
          break;
        }
        case RCParserTokenTypes.LITERAL_menu:
        {
          processEntryWithEvaluation(currentNode.getFirstChild(), "menu", element);
          break;
        }
        case RCParserTokenTypes.LITERAL_font:
        {
          Element fontElement = new Element("font");
          element.addContent(fontElement);

          AST fontDataNode = currentNode.getFirstChild();
          processEntryWithEvaluation(fontDataNode, "point-size", fontElement);
          
          fontDataNode = fontDataNode.getNextSibling();
          processEntryWithEvaluation(fontDataNode, "type-face", fontElement);
          
          fontDataNode = fontDataNode.getNextSibling();
          if (fontDataNode != null)
          {
            processEntryWithEvaluation(fontDataNode, "weight", fontElement);

            fontDataNode = fontDataNode.getNextSibling();
            processEntryWithEvaluation(fontDataNode, "italic", fontElement);

            fontDataNode = fontDataNode.getNextSibling();
            processEntryWithEvaluation(fontDataNode, "charset", fontElement);
          }
          
          break;
        }
        case RCParserTokenTypes.LITERAL_style:
        {
          processEntryWithEvaluation(currentNode.getFirstChild(), "style", element);
          break;
        }
        default:
        {
          doBreak = true;
        }
      }
      currentNode = currentNode.getNextSibling();
    }
    return currentNode;
  }

  //------------------------------------------------------------------------------------------------
  
  /**
   * Converts a common resource info entry to XML.
   * 
   * @param node The entry to convert.
   * @param element The target XML element where to add the converted stuff.
   */
  private void convertCommonResourceInfo(AST node, Element element)
  {
    AST currentNode = node.getFirstChild();
    if (currentNode != null)
    {
      Element infoElement = new Element("common-resource-info");
      element.addContent(infoElement);
      infoElement.setAttribute("name", currentNode.getText());
      if (currentNode.getType() == RCParserTokenTypes.LITERAL_language)
        convertLanguageEntry(currentNode, infoElement);
      else
        convertExpressionList(currentNode.getFirstChild(), infoElement);
    }
  }

  //------------------------------------------------------------------------------------------------
  
  /**
   * Converts the given node, which must be a control node in a dialog, to XML
   * 
   * @param node The node to convert.
   * @param element The target element where to add the result to.
   */
  private void convertConcreteControl(AST node, Element element)
  {
    Element controlElement = new Element("control");
    element.addContent(controlElement);
    controlElement.setAttribute("type", node.getText());
    switch (node.getType())
    {
      case RCParserTokenTypes.LITERAL_ltext:
      case RCParserTokenTypes.LITERAL_rtext:
      case RCParserTokenTypes.LITERAL_ctext:
      case 135: // RCParserTokenTypes.LITERAL_auto3state
      case RCParserTokenTypes.LITERAL_autocheckbox:
      case RCParserTokenTypes.LITERAL_autoradiobutton:
      case RCParserTokenTypes.LITERAL_checkbox:
      case RCParserTokenTypes.LITERAL_pushbox:
      case RCParserTokenTypes.LITERAL_pushbutton:
      case RCParserTokenTypes.LITERAL_defpushbutton:
      case RCParserTokenTypes.LITERAL_radiobutton:
      case 143: // RCParserTokenTypes.LITERAL_state3
      case RCParserTokenTypes.LITERAL_groupbox:
      case RCParserTokenTypes.LITERAL_userbutton:
      case RCParserTokenTypes.LITERAL_icon:
      case RCParserTokenTypes.LITERAL_scrollbar:
      {
        AST child = node.getFirstChild();
        processEntryWithEvaluation(child, "control-text", controlElement);
        child = child.getNextSibling();
        processEntryWithEvaluation(child, "id", controlElement);
        
        break;
      }
      case RCParserTokenTypes.LITERAL_edittext:
      case RCParserTokenTypes.LITERAL_bedit:
      case RCParserTokenTypes.LITERAL_hedit:
      case RCParserTokenTypes.LITERAL_iedit:
      case RCParserTokenTypes.LITERAL_combobox:
      case RCParserTokenTypes.LITERAL_listbox:
      {
        AST child = node.getFirstChild();
        processEntryWithEvaluation(child, "id", controlElement);
        
        break;
      }
    }
    
    // Common control trailing.
    node = node.getNextSibling();
    processEntryWithEvaluation(node, "left", controlElement);
    node = node.getNextSibling();
    processEntryWithEvaluation(node, "top", controlElement);
    node = node.getNextSibling();
    processEntryWithEvaluation(node, "width", controlElement);
    node = node.getNextSibling();
    processEntryWithEvaluation(node, "height", controlElement);
    node = node.getNextSibling();
    if (node != null)
    {
      processEntryWithEvaluation(node, "style", controlElement);
      
      // Everything after this point can only appear in DialogEx resource entries.
      node = node.getNextSibling();
      if (node != null)
      {
        processEntryWithEvaluation(node, "exstyle", controlElement);
        node = node.getNextSibling();
        if (node != null)
        {
          processEntryWithEvaluation(node, "help-id", controlElement);
  
          if (node.getNextSibling() != null)
          {
            Element dataElement = new Element("control-data");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本韩国欧美三级| 久久精品av麻豆的观看方式| 亚洲在线观看免费视频| 97久久精品人人爽人人爽蜜臀| 亚洲精品一区二区三区香蕉| 国产精品福利一区二区| 亚洲午夜日本在线观看| 亚洲一二三四久久| 国产aⅴ综合色| 国产午夜亚洲精品午夜鲁丝片| 国产精品不卡一区| 国产精品初高中害羞小美女文| 韩国成人精品a∨在线观看| 26uuu色噜噜精品一区| 亚洲综合一区二区精品导航| 捆绑紧缚一区二区三区视频| 国产白丝网站精品污在线入口| 欧美日韩精品一区二区三区| 欧美综合亚洲图片综合区| 久久人人超碰精品| 日产国产欧美视频一区精品| 亚洲欧美偷拍卡通变态| 91免费版pro下载短视频| 日本伊人精品一区二区三区观看方式| 国产女人aaa级久久久级 | 欧美高清一级片在线观看| 国产成人免费视频一区| av资源网一区| 亚洲欧美自拍偷拍色图| 在线综合+亚洲+欧美中文字幕| 日本一区二区三级电影在线观看 | 91精品国产手机| xf在线a精品一区二区视频网站| 一区二区国产视频| 风间由美性色一区二区三区| 欧美一区二区大片| 国产精品日韩精品欧美在线| 韩国视频一区二区| 日韩欧美综合在线| 国产精品美女久久久久久2018| 久久精品国产免费看久久精品| 福利一区在线观看| 国产视频不卡一区| 中文字幕在线一区| 国产99精品国产| 久久久精品一品道一区| 激情综合五月婷婷| 精品卡一卡二卡三卡四在线| 极品尤物av久久免费看| 欧美日韩午夜影院| 亚洲国产日产av| 91久久奴性调教| 亚洲精品免费看| 91一区二区三区在线观看| 亚洲视频在线一区二区| 91蜜桃婷婷狠狠久久综合9色| 亚洲精品久久久久久国产精华液| 日本韩国一区二区三区| 亚洲视频一二区| 国产高清在线精品| 一区在线中文字幕| 成人福利视频网站| 国产精品免费av| 91视频在线观看| 亚洲精品国产第一综合99久久 | 亚洲婷婷综合色高清在线| 日韩欧美一级片| 国产农村妇女精品| 在线观看中文字幕不卡| 久草中文综合在线| 亚洲三级在线免费观看| 91精品国产色综合久久不卡蜜臀| 一区二区三区四区中文字幕| 午夜精品福利在线| 成人亚洲一区二区一| 欧美精品久久久久久久久老牛影院| 国产精品无人区| 国产伦精品一区二区三区免费迷| 欧美精选一区二区| 日韩av高清在线观看| 色婷婷国产精品综合在线观看| 久久精品亚洲精品国产欧美| 美国av一区二区| 日韩精品中文字幕一区| 性欧美疯狂xxxxbbbb| 欧美喷潮久久久xxxxx| 亚洲午夜av在线| 欧美日免费三级在线| 亚洲图片有声小说| 国产欧美精品在线观看| 狠狠色综合播放一区二区| 中文字幕一区二区三区在线播放 | 日韩高清欧美激情| 国产欧美日韩视频在线观看| 精品裸体舞一区二区三区| 天天影视涩香欲综合网| 欧美在线观看你懂的| 不卡的电视剧免费网站有什么| 久久99精品久久久久久动态图| 亚洲成av人片一区二区梦乃| 亚洲天天做日日做天天谢日日欢| 国产日韩av一区| 欧美不卡一区二区三区四区| 欧美乱妇20p| 欧美精品成人一区二区三区四区| 一本大道久久a久久综合| 99在线精品免费| 粉嫩绯色av一区二区在线观看| 久久99国产精品久久| 精品系列免费在线观看| 精品亚洲免费视频| 久久se精品一区精品二区| 蜜桃一区二区三区在线| 久久精品噜噜噜成人av农村| 麻豆精品在线看| 国模一区二区三区白浆| 国产精品中文字幕一区二区三区| 韩日av一区二区| 成人永久免费视频| 波多野结衣一区二区三区| 成人毛片在线观看| 一本色道久久综合亚洲aⅴ蜜桃| 色噜噜狠狠色综合中国| 欧美日韩精品电影| 日韩一级黄色片| 国产亚洲欧美一级| 国产精品久久久久久久午夜片| 日韩美女久久久| 亚洲电影一区二区三区| 日本亚洲免费观看| 国产成人日日夜夜| 色综合激情五月| 欧美一区二区女人| 国产午夜亚洲精品理论片色戒| 1区2区3区精品视频| 亚洲va在线va天堂| 久99久精品视频免费观看| 国产91丝袜在线播放九色| 91一区在线观看| 7777精品伊人久久久大香线蕉超级流畅 | 99麻豆久久久国产精品免费| 色香色香欲天天天影视综合网| 欧美日韩一二三| 久久精品视频在线免费观看| 亚洲欧洲精品一区二区三区| 日韩精品免费专区| 风间由美一区二区三区在线观看 | 九九久久精品视频| 99精品国产99久久久久久白柏| 欧美最新大片在线看| 久久综合久久久久88| 亚洲免费在线播放| 韩国三级在线一区| 欧美日韩中文一区| 久久久99免费| 日韩制服丝袜先锋影音| jlzzjlzz欧美大全| 日韩免费一区二区| 亚洲一区二区成人在线观看| 国产伦理精品不卡| 欧美日韩大陆在线| 亚洲私人影院在线观看| 麻豆传媒一区二区三区| 欧美性猛交一区二区三区精品| 久久精品视频一区| 亚洲成人tv网| 91亚洲国产成人精品一区二区三| 精品久久人人做人人爽| 亚洲一二三区在线观看| 成人高清视频在线观看| 欧美电影免费观看高清完整版| 亚洲欧洲成人精品av97| 国产一区二区三区香蕉 | 日精品一区二区| 色综合咪咪久久| 亚洲精品伦理在线| 91免费国产在线| 亚洲无线码一区二区三区| 欧美日韩国产一级| 亚洲一区二三区| 在线不卡免费av| 激情欧美一区二区| 一区精品在线播放| aaa欧美大片| 天天操天天综合网| 日韩一区二区三区免费看 | 亚洲品质自拍视频| 91片在线免费观看| 亚洲综合一区二区精品导航| 色综合天天在线| 日韩高清电影一区| 亚洲天堂av一区| 欧美mv和日韩mv国产网站| 国内不卡的二区三区中文字幕 | 欧美高清一级片在线| 欧美日韩一区视频| 国产精品素人视频| 国产尤物一区二区在线| 日韩欧美国产三级电影视频| 蜜臀av亚洲一区中文字幕|