org.uberfire.client.splash.JSNativeSplashScreen.java Source code

Java tutorial

Introduction

Here is the source code for org.uberfire.client.splash.JSNativeSplashScreen.java

Source

/*
 * Copyright 2015 Red Hat, Inc. and/or its affiliates.
 *
 * 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 org.uberfire.client.splash;

import java.util.ArrayList;
import java.util.Collection;
import javax.enterprise.context.Dependent;
import javax.inject.Inject;

import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArrayString;
import org.uberfire.client.plugin.JSNativePlugin;
import org.uberfire.client.workbench.WorkbenchServicesProxy;
import org.uberfire.workbench.model.SplashScreenFilter;
import org.uberfire.workbench.model.impl.SplashScreenFilterImpl;

import static java.util.Collections.emptyList;

@Dependent
public class JSNativeSplashScreen extends JSNativePlugin {

    private Integer bodyHeight = null;

    @Inject
    private WorkbenchServicesProxy wbServices;

    private static native boolean getDisplayNextTimeFunctionResult(final JavaScriptObject o) /*-{
                                                                                             var result = o.display_next_time();
                                                                                             if (typeof result === "boolean") {
                                                                                             return result;
                                                                                             }
                                                                                             return false;
                                                                                             }-*/;

    private static native boolean getDisplayNextTime(final JavaScriptObject o) /*-{
                                                                               return o.display_next_time;
                                                                               }-*/;

    private static native JsArrayString getInterceptionPointsFunctionResult(final JavaScriptObject o) /*-{
                                                                                                      var result = o.interception_points();
                                                                                                      if (result instanceof Array) {
                                                                                                      return result;
                                                                                                      }
                                                                                                      return [];
                                                                                                      }-*/;

    private static native JsArrayString getInterceptionPoints(final JavaScriptObject o) /*-{
                                                                                        return o.interception_points;
                                                                                        }-*/;

    private static native int getBodyHeight(final JavaScriptObject o) /*-{
                                                                      return o.body_height;
                                                                      }-*/;

    private static native boolean getIsEnabled(final JavaScriptObject o) /*-{
                                                                         return o.enabled;
                                                                         }-*/;

    public WorkbenchServicesProxy getWbServices() {
        return wbServices;
    }

    protected void buildElement() {
        super.buildElement();

        if (hasIntProperty(obj, "body_height")) {
            bodyHeight = getBodyHeight(obj);
        } else {
            bodyHeight = null;
        }
    }

    public Integer getBodyHeight() {
        return bodyHeight;
    }

    public SplashScreenFilter buildFilter() {
        boolean displayNextTime = true;
        JsArrayString interceptionPoints = null;

        if (hasMethod(obj, "display_next_time")) {
            displayNextTime = getDisplayNextTimeFunctionResult(obj);
        } else if (hasBooleanProperty(obj, "display_next_time")) {
            displayNextTime = getDisplayNextTime(obj);
        }

        if (hasMethod(obj, "interception_points")) {
            interceptionPoints = getInterceptionPointsFunctionResult(obj);
        } else {
            interceptionPoints = getInterceptionPoints(obj);
        }

        return new SplashScreenFilterImpl(getId(), displayNextTime, toCollection(interceptionPoints));
    }

    public boolean isEnabled() {
        if (hasBooleanProperty(obj, "enabled")) {
            return getIsEnabled(obj);
        }
        return true;
    }

    private Collection<String> toCollection(final JsArrayString interceptionPoints) {
        if (interceptionPoints == null || interceptionPoints.length() == 0) {
            return emptyList();
        }

        final Collection<String> result = new ArrayList<String>();
        for (int i = 0; i < interceptionPoints.length(); i++) {
            result.add(interceptionPoints.get(i));
        }

        return result;
    }
}