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

📄 elementparser3.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/01/28 06:54:34 $
 * $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 nanoxml.XMLElement;


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

    
    //
    //
    //

    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.setRootWidget(rootWidget);
            }
            else if ( "menubar".equals(childName) )
            {
                Widget menuBar = this.parseMenuBar(childElement);
                
                iUIDefinition.setMenuBar(menuBar);
            }
            else if ( "toolbars".equals(childName) )
            {
                this.parseToolBars(childElement, iUIDefinition);
            }
            else if ( "actions".equals(childName) )
            {
                this.parseActions(childElement, iUIDefinition);
            }
            else if ( "images".equals(childName) )
            {
                this.parseImages(childElement, iUIDefinition);
            }
        }
    }
    
    
    //
    //
    //
    
    private Widget parseRootWidget( XMLElement iElement )
    {
        String rootClassName = iElement.getStringAttribute("class");

        if ( "QMainWindow".equals(rootClassName) )
        {
            Widget rootWidget = new Widget(Widget.QT_MAIN_WINDOW);
            
            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 ( "widget".equals(childName) )
                {
                    String className = childElement.getStringAttribute("class");
                    
                    this.parseWidget(childElement, className, rootWidget);
                }
                else if ( "grid".equals(childName) )
                {
                    Widget widget = new Widget(Widget.QT_WIDGET, rootWidget);
                    
                    this.parseLayout(childElement, Layout.QT_GRID_LAYOUT, widget);
                }
                else if ( "hbox".equals(childName) )
                {
                    Widget widget = new Widget(Widget.QT_WIDGET, rootWidget);
                    
                    this.parseLayout(childElement, Layout.QT_HBOX_LAYOUT, widget);
                }
                else if ( "vbox".equals(childName) )
                {
                    Widget widget = new Widget(Widget.QT_WIDGET, rootWidget);
                    
                    this.parseLayout(childElement, Layout.QT_VBOX_LAYOUT, widget);
                }
                else
                {
                    System.err.println("WARNING: Unknown root widget element: "+childName);
                }
            }
            
            return rootWidget;
        }
        else
        {
            return this.parseWidget(iElement, rootClassName, null);
        }
    }
    
    
    private Widget parseWidget(
        XMLElement  iElement,
        String      iClassName,
        Widget      iParent )
    {
        Enumeration childEnum = iElement.enumerateChildren();
        Widget      widget    = new Widget(iClassName, iParent);

        ElementParserHelper.parseAttributeProperties(iElement, widget);

        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 ( "spacer".equals(childName) )
            {
                this.parseWidget(childElement, Widget.QT_SPACER, widget);
            }
            else if ( "grid".equals(childName) )
            {
                this.parseLayout(childElement, Layout.QT_GRID_LAYOUT, widget);
            }
            else if ( "hbox".equals(childName) )
            {
                this.parseLayout(childElement, Layout.QT_HBOX_LAYOUT, widget);
            }
            else if ( "vbox".equals(childName) )
            {
                this.parseLayout(childElement, Layout.QT_VBOX_LAYOUT, widget);
            }
            else if ( "column".equals(childElement.getName()) )
            {
                // TODO To be implemented 
            }
            else if ( "item".equals(childElement.getName()) )
            {
                // TODO To be implemented 
            }
            else
            {
                System.err.println("WARNING: Unknown widget element: "+childName);
            }
        }
        
        return widget;
    }
    
    
    private Layout parseLayout(
        XMLElement  iElement,
        String      iClassName,
        Widget      iParent )
    {
        Enumeration childEnum = iElement.enumerateChildren();
        Layout      layout    = new Layout(iClassName, iParent);

        ElementParserHelper.parseAttributeProperties(iElement, layout);

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

⌨️ 快捷键说明

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