⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 elementparser4.java

📁 A translator that converts Qt Designer UI files into SWT java classes. Use the power of Qt Designer
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* This file is part of ui2swt.
 *
 * $Revision: 1.5 $
 * $Date: 2007/06/17 04:07:56 $
 * $Name:  $
 *
 * Copyright (C) 2006-2007 James Forbes, All Rights Reserved.
 *
 * This software is provided 'as-is', without any express or implied warranty.
 * In no event will the authors be held liable for any damages arising from the
 * use of this software.
 *
 * Permission is granted to anyone to use this software for any purpose,
 * including commercial applications, and to alter it and redistribute it
 * freely, subject to the following restrictions:
 *
 *  1. The origin of this software must not be misrepresented; you must not
 *     claim that you wrote the original software. If you use this software in
 *     a product, an acknowledgment in the product documentation would be
 *     appreciated but is not required.
 *
 *  2. Altered source versions must be plainly marked as such, and must not be
 *     misrepresented as being the original software.
 *
 *  3. This notice may not be removed or altered from any source distribution.
 */

package ui2swt;

import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;

import nanoxml.XMLElement;


public class ElementParser4 implements ElementParser
{
    public ElementParser4()
    {}

    
    //
    //
    //

    public void parse(
        XMLElement      iRootElement,
        UIDefinition    iUIDefinition )
    {
        Enumeration childEnum = iRootElement.enumerateChildren();
        
        while ( childEnum.hasMoreElements() )
        {
            XMLElement  childElement = (XMLElement)(childEnum.nextElement());
            String      childName    = childElement.getName();
            
            if ( "widget".equals(childName) )
            {
                Widget rootWidget = this.parseRootWidget(childElement, iUIDefinition);
                
                iUIDefinition.setRootWidget(rootWidget);
            }
        }
    }
    
    
    //
    //
    //
    
    private Widget parseRootWidget(
        XMLElement      iElement,
        UIDefinition    iUIDefinition )
    {
        Widget rootWidget = new Widget(iElement.getStringAttribute("class"));

        ElementParserHelper.parseAttributeProperties(iElement, rootWidget);
        
        Enumeration childEnum = iElement.enumerateChildren();

        while ( childEnum.hasMoreElements() )
        {
            XMLElement childElement = (XMLElement)(childEnum.nextElement());
            String     childName    = childElement.getName();
            
            if ( "property".equals(childName) )
            {
                ElementParserHelper.parseProperty(childElement, rootWidget);
            }
            else if ( "attribute".equals(childName) )
            {
                ElementParserHelper.parseProperty(childElement, rootWidget);
            }
            else if ( "widget".equals(childName) )
            {
                String className = childElement.getStringAttribute("class");
                
                if ( "QMenuBar".equals(className) )
                {
                    Widget menuBar = this.parseMenuBar(childElement);
                    
                    iUIDefinition.setMenuBar(menuBar);
                }
                else if ( "QToolBar".equals(className) )
                {
                    Widget toolBar = this.parseToolBar(childElement);
                    
                    iUIDefinition.addToolBar(toolBar);
                }
                else if ( "QStatusBar".equals(className) )
                {
                    // Ignore the status bar
                }
                else
                {
                    this.parseWidget(childElement, className, rootWidget);
                }
            }
            else if ( "layout".equals(childName) )
            {
                String className = childElement.getStringAttribute("class");
                
                this.parseLayout(childElement, className, rootWidget);
            }
            else if ( "item".equals(childName) )
            {
                this.parseWidgetItem(childElement, rootWidget);
            }
            else if ( "action".equals(childName) )
            {
                Action action = this.parseAction(childElement);
                
                iUIDefinition.addAction(action);
            }
            else
            {
                System.err.println("WARNING: Unknown element: "+childName);
            }
        }

        return rootWidget;
    }
    
    
    private Widget parseWidget(
        XMLElement  iElement,
        String      iClassName,
        Widget      iParent )
    {
        Widget widget = new Widget(iClassName, iParent);

        ElementParserHelper.parseAttributeProperties(iElement, widget);

        Enumeration childEnum = iElement.enumerateChildren();

        while ( childEnum.hasMoreElements() )
        {
            XMLElement childElement = (XMLElement)(childEnum.nextElement());
            String     childName    = childElement.getName();
            
            if ( "property".equals(childName) )
            {
                ElementParserHelper.parseProperty(childElement, widget);
            }
            else if ( "attribute".equals(childName) )
            {
                ElementParserHelper.parseProperty(childElement, widget);
            }
            else if ( "widget".equals(childName) )
            {
                String className = childElement.getStringAttribute("class");
                
                if ( "Line".equals(className) )
                {
                    this.parseWidget(childElement, Widget.QT_LINE, widget);
                }
                else
                {
                    this.parseWidget(childElement, className, widget);
                }
            }
            else if ( "layout".equals(childName) )
            {
                String className = childElement.getStringAttribute("class");
                
                this.parseLayout(childElement, className, widget);
            }
            else if ( "item".equals(childElement.getName()) )
            {
                this.parseWidgetItem(childElement, widget);
            }
            else
            {
                System.err.println("WARNING: Unknown element: "+childName);
            }
        }

        return widget;
    }

    
    private void parseWidgetItem(
        XMLElement  iElement,
        Widget      iParent )
    {
        Enumeration childEnum = iElement.enumerateChildren();

        while ( childEnum.hasMoreElements() )
        {
            XMLElement childElement = (XMLElement)(childEnum.nextElement());
            String     childName    = childElement.getName();
            
            if ( "widget".equals(childName) )
            {
                String className = childElement.getStringAttribute("class");
                Widget widget    = null;
                
                if ( "Line".equals(className) )
                {
                    widget = this.parseWidget(childElement, Widget.QT_LINE, iParent);
                }
                else
                {
                    widget = this.parseWidget(childElement, className, iParent);
                }
                
                ElementParserHelper.parseAttributeProperties(iElement, widget);
            }
            else if ( "layout".equals(childName) )
            {
                String className = childElement.getStringAttribute("class");
                Widget layout    = this.parseWidget(childElement, className, iParent);
                
                ElementParserHelper.parseAttributeProperties(iElement, layout);
            }
            else if ( "spacer".equals(childName) )
            {
                Widget widget = this.parseWidget(childElement, Widget.QT_SPACER, iParent);

                ElementParserHelper.parseAttributeProperties(iElement, widget);
            }
            else
            {
                System.err.println("WARNING: Unknown element: "+childName);
            }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -