/*******************************************************************************
* 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.ext.java.client.documentation;
import com.google.gwt.dom.client.Style;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.logical.shared.CloseEvent;
import com.google.gwt.event.logical.shared.CloseHandler;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.Frame;
import com.google.gwt.user.client.ui.PopupPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
import com.google.inject.Singleton;
/**
* @author Evgen Vidolob
*/
@Singleton
public class QuickDocViewImpl extends PopupPanel implements QuickDocView {
private ActionDelegate delegate;
private Frame frame;
@Inject
public QuickDocViewImpl() {
super(true, true);
addCloseHandler(new CloseHandler<PopupPanel>() {
@Override
public void onClose(CloseEvent<PopupPanel> event) {
if (delegate != null) {
delegate.onCloseView();
}
}
});
setSize("400px", "200px");
Style style = getElement().getStyle();
style.setProperty("resize", "both");
style.setPaddingBottom(0, Style.Unit.PX);
style.setPaddingTop(3, Style.Unit.PX);
style.setPaddingLeft(3, Style.Unit.PX);
style.setPaddingRight(3, Style.Unit.PX);
createFrame();
add(frame);
}
private void createFrame() {
frame = new Frame();
frame.setSize("100%", "100%");
frame.getElement().getStyle().setBorderStyle(Style.BorderStyle.NONE);
frame.getElement().setAttribute("sandbox", "allow-scripts allow-same-origin"); // empty value, not null
frame.getElement().getStyle().setProperty("resize", "both");
}
@Override
public void setDelegate(ActionDelegate delegate) {
this.delegate = delegate;
}
@Override
public Widget asWidget() {
return this;
}
@Override
public void show(String url, int x, int y) {
remove(frame);
createFrame();
add(frame);
frame.setUrl(url);
setPopupPosition(x, y);
show();
}
@Override
protected void onPreviewNativeEvent(Event.NativePreviewEvent event) {
super.onPreviewNativeEvent(event);
switch (event.getTypeInt()) {
case Event.ONKEYDOWN:
if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ESCAPE) {
hide();
}
break;
}
}
}