/******************************************************************************* * Copyright (c) 2012-2017 Codenvy, S.A. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.ide.factory.welcome; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.dom.client.Style; import com.google.gwt.user.client.ui.Frame; import com.google.inject.Inject; import com.google.inject.Singleton; import org.eclipse.che.ide.api.parts.PartStackUIResources; import org.eclipse.che.ide.api.parts.base.BaseView; /** * @author Vitaliy Guliy */ @Singleton public class GreetingPartViewImpl extends BaseView<GreetingPartView.ActionDelegate> implements GreetingPartView { private Frame frame; @Inject public GreetingPartViewImpl(PartStackUIResources resources) { super(resources); frame = new Frame(); frame.setWidth("100%"); frame.setHeight("100%"); frame.getElement().getStyle().setBorderStyle(Style.BorderStyle.NONE); frame.getElement().getStyle().setVisibility(Style.Visibility.HIDDEN); frame.getElement().setAttribute("id", "greetingFrame"); frame.getElement().setAttribute("tabindex", "0"); setContentWidget(frame); frame.addLoadHandler(event -> frame.getElement().getStyle().setVisibility(Style.Visibility.VISIBLE)); handleFrameEvents(frame.getElement()); } /** * Adds handlers to the greeting frame and window to catch mouse clicking on the frame. * * @param frame * native frame object */ private native void handleFrameEvents(final JavaScriptObject frame) /*-{ var instance = this; frame["hovered"] = false; frame.addEventListener('mouseover', function (e) { frame["hovered"] = true; }, false); frame.addEventListener('mouseout', function (e) { frame["hovered"] = false; }, false); $wnd.addEventListener('blur', function (e) { if (frame["hovered"] == true) { instance.@org.eclipse.che.ide.factory.welcome.GreetingPartViewImpl::activatePart()(); } }, false); }-*/; @Override public void showGreeting(String url) { frame.getElement().getStyle().setVisibility(Style.Visibility.HIDDEN); if (url == null || url.trim().isEmpty()) { frame.setUrl("about:blank"); } else { frame.setUrl(url); } } /** * Ensures the view is activated when clicking the mouse. */ private void activatePart() { if (!isFocused()) { setFocus(true); if (delegate != null) { delegate.onActivate(); } } } @Override protected void focusView() { frame.getElement().focus(); } }