com.haulmont.cuba.gui.xml.layout.loaders.EmbeddedLoader.java Source code

Java tutorial

Introduction

Here is the source code for com.haulmont.cuba.gui.xml.layout.loaders.EmbeddedLoader.java

Source

/*
 * Copyright (c) 2008-2016 Haulmont.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */

package com.haulmont.cuba.gui.xml.layout.loaders;

import com.haulmont.cuba.gui.GuiDevelopmentException;
import com.haulmont.cuba.gui.components.Embedded;
import org.apache.commons.lang.StringUtils;

import java.net.MalformedURLException;
import java.net.URL;

public class EmbeddedLoader extends AbstractComponentLoader<Embedded> {

    protected static final String URL_PREFIX = "url://";

    protected static final String FILE_PREFIX = "file://";

    protected static final String THEME_PREFIX = "theme://";

    @Override
    public void createComponent() {
        resultComponent = (Embedded) factory.createComponent(Embedded.NAME);
        loadId(resultComponent, element);
    }

    @Override
    public void loadComponent() {
        assignFrame(resultComponent);

        String relativeSrc = element.attributeValue("relativeSrc");
        if (StringUtils.isNotEmpty(relativeSrc)) {
            resultComponent.setRelativeSource(relativeSrc);
        }

        String srcAttr = element.attributeValue("src");
        if (srcAttr != null) {
            if (srcAttr.startsWith(URL_PREFIX)) {
                String src = srcAttr.substring(URL_PREFIX.length());

                URL targetUrl;
                try {
                    targetUrl = new URL(src);
                } catch (MalformedURLException e) {
                    throw new GuiDevelopmentException("Incorrect URL in Embedded src attribute",
                            context.getFullFrameId(), "src", srcAttr);
                }

                resultComponent.setType(Embedded.Type.BROWSER);
                resultComponent.setSource(targetUrl);

            } else if (srcAttr.startsWith(THEME_PREFIX)) {
                resultComponent.setSource(srcAttr);
            } else if (srcAttr.startsWith(FILE_PREFIX)) {
                String src = srcAttr.substring(FILE_PREFIX.length());
                resultComponent.setType(Embedded.Type.OBJECT);
                resultComponent.setSource(src);
            } else {
                throw new GuiDevelopmentException(
                        "Illegal src attribute value. 'url://' or 'file://' or theme:// prefix expected",
                        context.getFullFrameId(), "src", srcAttr);
            }
        }

        String typeAttribute = element.attributeValue("type");
        if (StringUtils.isNotEmpty(typeAttribute)) {
            Embedded.Type type = Embedded.Type.valueOf(typeAttribute);
            resultComponent.setType(type);
        }

        loadVisible(resultComponent, element);
        loadEnable(resultComponent, element);
        loadStyleName(resultComponent, element);

        loadHeight(resultComponent, element);
        loadWidth(resultComponent, element);
        loadAlign(resultComponent, element);

        loadCaption(resultComponent, element);
        loadDescription(resultComponent, element);
        loadIcon(resultComponent, element);
    }
}