Example usage for com.google.gwt.user.client Event getDataTransfer

List of usage examples for com.google.gwt.user.client Event getDataTransfer

Introduction

In this page you can find the example usage for com.google.gwt.user.client Event getDataTransfer.

Prototype

public final native DataTransfer getDataTransfer() ;

Source Link

Document

Get the DataTransfer associated with the current drag event.

Usage

From source file:ch.unifr.pai.mindmap.client.mindmap.BackgroundImgRepo.java

License:Apache License

/**
 * @param bgImg/*from ww w. j  a  v a2s  .  c  om*/
 *            - the image object that shall be adapted accordingly to the chosen data-url
 */
public BackgroundImgRepo(Image bgImg) {
    super();
    add(fp);
    add(previewImage);
    getElement().getStyle().setOverflow(Overflow.VISIBLE);
    this.bgImg = bgImg;
    this.setHeight("100%");
    this.setWidth("100%");
    fp.getElement().getStyle().setBackgroundColor("grey");
    fp.setWidth("100%");
    fp.setHeight("100%");
    fp.setWidget(hp);
    hp.setWidth("100%");
    hp.setHeight("100%");
    fp.setWidget(hp);
    previewImage.getElement().getStyle().setPosition(Position.ABSOLUTE);
    previewImage.getElement().getStyle().setTop(-120, Unit.PX);
    previewImage.getElement().getStyle().setHeight(110, Unit.PX);
    previewImage.getElement().getStyle().setBorderWidth(2, Unit.PX);
    previewImage.getElement().getStyle().setBorderColor("black");
    previewImage.getElement().getStyle().setBorderStyle(BorderStyle.SOLID);
    previewImage.getElement().getStyle().setDisplay(Display.NONE);

    // Add a button for cleaning the browser as well
    PushButton emptyBg = new PushButton(new Image(GWT.getModuleBaseURL() + "images/emptyscreen.png")) {
        @Override
        public void onBrowserEvent(Event event) {
            if (MultiCursorController.isDefaultCursor(event)) {
                super.onBrowserEvent(event);
            }
        }
    };
    emptyBg.setTitle("Remove background-image");
    emptyBg.getElement().getStyle().setDisplay(Display.INLINE_BLOCK);
    emptyBg.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            if (MultiCursorController.isDefaultCursor(event.getNativeEvent())) {
                BackgroundImgRepo.this.bgImg.setVisible(false);
            }
        }
    });
    hp.add(emptyBg);
    fp.addDragOverHandler(new DragOverHandler() {

        @Override
        public void onDragOver(DragOverEvent event) {
            fp.getElement().getStyle().setBackgroundColor("darkgrey");
        }
    });
    fp.addDragLeaveHandler(new DragLeaveHandler() {

        @Override
        public void onDragLeave(DragLeaveEvent event) {
            fp.getElement().getStyle().setBackgroundColor("grey");
        }

    });
    fp.addDropHandler(new DropHandler() {

        /**
         * Prevents the default behavior of the browser (otherwise, the browser would open the image in the current tab), reads the dragged files and adds
         * them as {@link PushButton} to the panel.
         * 
         * @see com.google.gwt.event.dom.client.DropHandler#onDrop(com.google.gwt.event.dom.client.DropEvent)
         */
        /*
         * (non-Javadoc)
         * @see com.google.gwt.event.dom.client.DropHandler#onDrop(com.google.gwt.event.dom.client.DropEvent)
         */
        @Override
        public void onDrop(DropEvent event) {
            // event.stopPropagation();
            event.preventDefault();
            fp.getElement().getStyle().setBackgroundColor("grey");
            JsArray<JavaScriptObject> files = getDataTransferFiles(event.getDataTransfer());
            for (int i = 0; i < files.length(); i++) {
                final Image img = new Image();
                PushButton button = new PushButton(img) {
                    @Override
                    public void onBrowserEvent(Event event) {
                        if (MultiCursorController.isDefaultCursor(event)) {
                            super.onBrowserEvent(event);
                        }
                    }

                };
                button.setTitle("Set this image as background");
                button.addClickHandler(new ClickHandler() {

                    /**
                     * Set the image of the button as the current background image
                     * 
                     * @see com.google.gwt.event.dom.client.ClickHandler#onClick(com.google.gwt.event.dom.client.ClickEvent)
                     */
                    @Override
                    public void onClick(ClickEvent event) {
                        if (MultiCursorController.isDefaultCursor(event.getNativeEvent())) {
                            BackgroundImgRepo.this.bgImg.setVisible(true);
                            BackgroundImgRepo.this.bgImg.getElement().setAttribute("src",
                                    img.getElement().getAttribute("src"));
                        }
                    }
                });
                button.addMouseOverHandler(new MouseOverHandler() {

                    /**
                     * Show the preview image at the appropriate position and replace the data-url
                     * 
                     * @see com.google.gwt.event.dom.client.MouseOverHandler#onMouseOver(com.google.gwt.event.dom.client.MouseOverEvent)
                     */
                    @Override
                    public void onMouseOver(MouseOverEvent event) {
                        if (MultiCursorController.isDefaultCursor(event.getNativeEvent())) {
                            BackgroundImgRepo.this.previewImage.getElement().getStyle()
                                    .setDisplay(Display.BLOCK);
                            BackgroundImgRepo.this.previewImage.getElement().setAttribute("src",
                                    img.getElement().getAttribute("src"));
                            Scheduler.get().scheduleDeferred(new ScheduledCommand() {

                                @Override
                                public void execute() {
                                    previewImage.getElement().getStyle().setLeft(img.getAbsoluteLeft()
                                            - BackgroundImgRepo.this.getAbsoluteLeft()
                                            - previewImage.getOffsetWidth() / 2 + img.getOffsetWidth() / 2,
                                            Unit.PX);
                                }
                            });
                        }
                    }
                });
                button.addMouseOutHandler(new MouseOutHandler() {

                    /**
                     * Hide the preview image
                     * 
                     * @see com.google.gwt.event.dom.client.MouseOutHandler#onMouseOut(com.google.gwt.event.dom.client.MouseOutEvent)
                     */
                    @Override
                    public void onMouseOut(MouseOutEvent event) {
                        if (MultiCursorController.isDefaultCursor(event.getNativeEvent())) {

                            BackgroundImgRepo.this.previewImage.getElement().getStyle()
                                    .setDisplay(Display.NONE);
                        }
                    }
                });
                // img.getElement().getStyle().setMargin(5, Unit.PX);
                // img.getElement().getStyle().setDisplay(Display.INLINE_BLOCK);
                img.setHeight("35px");
                button.getElement().getStyle().setDisplay(Display.INLINE_BLOCK);
                hp.add(button);
                addBackgroundImage(img.getElement(), files.get(i));
            }

        }
    });
}

From source file:org.primordion.xholon.service.svg.SvgViewBrowser.java

License:Open Source License

/**
 * This works with Google Chrome./*from  w  w w  .ja v a  2 s . c o  m*/
 */
public void handleDropEvent(Event de) {
    // Event is a wrapper for (subclass of) NativeEvent
    consoleLog("DropEvent SvgViewBrowser");
    consoleLog(de); // a MouseEvent, type: "drop"
    consoleLog(de.getDataTransfer());
    String data = de.getDataTransfer().getData("text");
    consoleLog(data);
    consoleLog(de.getEventTarget());
    Element ele = Element.as(de.getEventTarget());
    consoleLog(ele);
    de.stopPropagation();
    de.preventDefault();
    if (data == null) {
        return;
    }

    // handleDrop; paste data into node
    String svgNodeName = ele.getNodeName();
    String svgElementId = ele.getId();
    consoleLog(svgElementId);
    if (svgElementId == null) {
        return;
    }
    if (!svgElementId.startsWith(findIdScheme(svgNodeName))) {
        // the svgElementId is an XPath expression; use it to find the IXholon
        IXholon node = findXholonNode(svgElementId);
        if (node != null) {
            consoleLog(node);
            // assume this is XML content
            sendXholonHelperService(ISignal.ACTION_PASTE_LASTCHILD_FROMDROP, data, node);
            // do not refresh the SVG content
        }
    }
}