Example usage for com.google.gwt.event.dom.client DragLeaveHandler DragLeaveHandler

List of usage examples for com.google.gwt.event.dom.client DragLeaveHandler DragLeaveHandler

Introduction

In this page you can find the example usage for com.google.gwt.event.dom.client DragLeaveHandler DragLeaveHandler.

Prototype

DragLeaveHandler

Source Link

Usage

From source file:com.haulmont.cuba.web.toolkit.ui.client.jqueryfileupload.JQueryFileUploadOverlay.java

License:Apache License

protected void subscribeGlobalDragDropHandlers() {
    RootPanel.get().addBitlessDomHandler(new DragOverHandler() {
        @Override/*  w w w .j  ava 2s  .  c o  m*/
        public void onDragOver(DragOverEvent event) {
            globalDocumentDragOver(event);

            if (dropZoneFileUploadMap.size() > 0) {
                event.preventDefault();
            }
        }
    }, DragOverEvent.getType());

    RootPanel.get().addBitlessDomHandler(new DragLeaveHandler() {
        @Override
        public void onDragLeave(DragLeaveEvent event) {
            globalDocumentDragLeave(event);
        }
    }, DragLeaveEvent.getType());

    RootPanel.get().addBitlessDomHandler(new DragEndHandler() {
        @Override
        public void onDragEnd(DragEndEvent event) {
            globalDocumentDragEnd(event);
        }
    }, DragEndEvent.getType());

    RootPanel.get().addBitlessDomHandler(new DropHandler() {
        @Override
        public void onDrop(DropEvent event) {
            globalDocumentDrop(event);
        }
    }, DropEvent.getType());

    // prevent misses leading to opening of file inside browser
    RootPanel.get().addBitlessDomHandler(new DropHandler() {
        @Override
        public void onDrop(DropEvent event) {
            if (dropZoneFileUploadMap.size() > 0) {
                event.preventDefault();
            }
        }
    }, DropEvent.getType());

    // CAUTION add compatibility layer with Vaadin DragDropLayouts
    HTML5Support.setGlobalDragOverHandler(new DragOverHandler() {
        @Override
        public void onDragOver(DragOverEvent event) {
            globalDocumentDragOver(event);
        }
    });

    HTML5Support.setGlobalDropHandler(new DropHandler() {
        @Override
        public void onDrop(DropEvent event) {
            globalDocumentDrop(event);
        }
    });
}

From source file:com.haulmont.cuba.web.widgets.client.jqueryfileupload.JQueryFileUploadOverlay.java

License:Apache License

protected void subscribeGlobalDragDropHandlers() {
    RootPanel.get().addBitlessDomHandler(new DragOverHandler() {
        @Override/*from  w  ww  . j  a  v  a  2 s  . com*/
        public void onDragOver(DragOverEvent event) {
            globalDocumentDragOver(event);

            if (dropZoneFileUploadMap.size() > 0) {
                event.preventDefault();
            }
        }
    }, DragOverEvent.getType());

    RootPanel.get().addBitlessDomHandler(new DragLeaveHandler() {
        @Override
        public void onDragLeave(DragLeaveEvent event) {
            globalDocumentDragLeave(event);
        }
    }, DragLeaveEvent.getType());

    RootPanel.get().addBitlessDomHandler(new DragEndHandler() {
        @Override
        public void onDragEnd(DragEndEvent event) {
            globalDocumentDragEnd(event);
        }
    }, DragEndEvent.getType());

    RootPanel.get().addBitlessDomHandler(new DropHandler() {
        @Override
        public void onDrop(DropEvent event) {
            globalDocumentDrop(event);
        }
    }, DropEvent.getType());

    // prevent misses leading to opening of file inside browser
    RootPanel.get().addBitlessDomHandler(new DropHandler() {
        @Override
        public void onDrop(DropEvent event) {
            if (dropZoneFileUploadMap.size() > 0) {
                event.preventDefault();
            }
        }
    }, DropEvent.getType());

    // CAUTION add compatibility layer with Vaadin DragDropLayouts
    /* vaadin8 implement
    HTML5Support.setGlobalDragOverHandler(new DragOverHandler() {
    @Override
    public void onDragOver(DragOverEvent event) {
        globalDocumentDragOver(event);
    }
    });
            
    HTML5Support.setGlobalDropHandler(new DropHandler() {
    @Override
    public void onDrop(DropEvent event) {
        globalDocumentDrop(event);
    }
    });
    */
}

From source file:com.ponysdk.ui.terminal.ui.PTWidget.java

License:Apache License

private void addDomHandler(final PTInstruction addHandler, final Widget widget, final int domHandlerType,
        final UIService uiService) {

    final DomHandlerType h = DomHandlerType.values()[domHandlerType];
    switch (h) {//  www  . ja v  a 2 s  .  c om
    case CLICK:
        widget.addDomHandler(new ClickHandler() {

            @Override
            public void onClick(final ClickEvent event) {
                triggerOnClick(addHandler, widget, domHandlerType, uiService, event);
            }

        }, ClickEvent.getType());
        break;
    case MOUSE_OVER:
        widget.addDomHandler(new MouseOverHandler() {

            @Override
            public void onMouseOver(final MouseOverEvent event) {
                triggerDomEvent(addHandler, domHandlerType, uiService);
            }

        }, MouseOverEvent.getType());
        break;
    case BLUR:
        widget.addDomHandler(new BlurHandler() {

            @Override
            public void onBlur(final BlurEvent event) {
                triggerDomEvent(addHandler, domHandlerType, uiService);
            }

        }, BlurEvent.getType());
        break;
    case FOCUS:
        widget.addDomHandler(new FocusHandler() {

            @Override
            public void onFocus(final FocusEvent event) {
                triggerDomEvent(addHandler, domHandlerType, uiService);
            }

        }, FocusEvent.getType());
        break;
    case MOUSE_OUT:
        widget.addDomHandler(new MouseOutHandler() {

            @Override
            public void onMouseOut(final MouseOutEvent event) {
                triggerDomEvent(addHandler, domHandlerType, uiService);
            }

        }, MouseOutEvent.getType());
        break;
    case MOUSE_DOWN:
        widget.addDomHandler(new MouseDownHandler() {

            @Override
            public void onMouseDown(final MouseDownEvent event) {
                triggerDomEvent(addHandler, domHandlerType, uiService);
            }

        }, MouseDownEvent.getType());
        break;
    case MOUSE_UP:
        widget.addDomHandler(new MouseUpHandler() {

            @Override
            public void onMouseUp(final MouseUpEvent event) {
                triggerDomEvent(addHandler, domHandlerType, uiService);
            }

        }, MouseUpEvent.getType());
        break;
    case KEY_PRESS:
        widget.addDomHandler(new KeyPressHandler() {

            @Override
            public void onKeyPress(final KeyPressEvent event) {
                triggerOnKeyPress(addHandler, domHandlerType, uiService, event);
            }

        }, KeyPressEvent.getType());
        break;
    case KEY_UP:

        if (widget instanceof TextBoxBase) {
            final TextBoxBase textBox = (TextBoxBase) widget;
            textBox.addKeyUpHandler(new KeyUpHandler() {

                @Override
                public void onKeyUp(final KeyUpEvent event) {
                    final PTInstruction changeHandlerInstruction = new PTInstruction();
                    changeHandlerInstruction.setObjectID(addHandler.getObjectID());
                    changeHandlerInstruction.put(TYPE.KEY, TYPE.KEY_.EVENT);
                    changeHandlerInstruction.put(HANDLER.KEY, HANDLER.KEY_.STRING_VALUE_CHANGE_HANDLER);
                    changeHandlerInstruction.put(PROPERTY.VALUE, textBox.getText());

                    final PTInstruction eventInstruction = buildEventInstruction(addHandler, domHandlerType);
                    eventInstruction.put(PROPERTY.VALUE, event.getNativeEvent().getKeyCode());

                    if (addHandler.containsKey(PROPERTY.KEY_FILTER)) {
                        final JSONArray jsonArray = addHandler.get(PROPERTY.KEY_FILTER).isArray();
                        for (int i = 0; i < jsonArray.size(); i++) {
                            final JSONNumber keyCode = jsonArray.get(i).isNumber();
                            if (keyCode.doubleValue() == event.getNativeEvent().getKeyCode()) {
                                uiService.stackEvent(changeHandlerInstruction);
                                uiService.stackEvent(eventInstruction);
                                uiService.flushEvents();
                                break;
                            }
                        }
                    } else {
                        uiService.stackEvent(changeHandlerInstruction);
                        uiService.stackEvent(eventInstruction);
                        uiService.flushEvents();
                    }
                }
            });
        } else {
            widget.addDomHandler(new KeyUpHandler() {

                @Override
                public void onKeyUp(final KeyUpEvent event) {
                    final PTInstruction eventInstruction = buildEventInstruction(addHandler, domHandlerType);
                    eventInstruction.put(PROPERTY.VALUE, event.getNativeEvent().getKeyCode());
                    if (eventInstruction.containsKey(PROPERTY.KEY_FILTER)) {
                        final JSONArray jsonArray = addHandler.get(PROPERTY.KEY_FILTER).isArray();
                        for (int i = 0; i < jsonArray.size(); i++) {
                            final JSONNumber keyCode = jsonArray.get(i).isNumber();
                            if (keyCode.doubleValue() == event.getNativeEvent().getKeyCode()) {
                                uiService.triggerEvent(eventInstruction);
                                break;
                            }
                        }
                    } else {
                        uiService.triggerEvent(eventInstruction);
                    }
                }
            }, KeyUpEvent.getType());
        }
        break;
    case DRAG_START:
        widget.getElement().setDraggable(Element.DRAGGABLE_TRUE);
        widget.addBitlessDomHandler(new DragStartHandler() {

            @Override
            public void onDragStart(final DragStartEvent event) {
                event.setData("text", Long.toString(addHandler.getObjectID()));
                event.getDataTransfer().setDragImage(uiObject.getElement(), 10, 10);
                triggerDomEvent(addHandler, domHandlerType, uiService);
            }
        }, DragStartEvent.getType());
        break;
    case DRAG_END:
        widget.addBitlessDomHandler(new DragEndHandler() {

            @Override
            public void onDragEnd(final DragEndEvent event) {
                triggerDomEvent(addHandler, domHandlerType, uiService);
            }
        }, DragEndEvent.getType());
        break;
    case DRAG_ENTER:
        widget.addBitlessDomHandler(new DragEnterHandler() {

            @Override
            public void onDragEnter(final DragEnterEvent event) {
                triggerDomEvent(addHandler, domHandlerType, uiService);
            }
        }, DragEnterEvent.getType());
        break;
    case DRAG_LEAVE:
        widget.addBitlessDomHandler(new DragLeaveHandler() {

            @Override
            public void onDragLeave(final DragLeaveEvent event) {
                triggerDomEvent(addHandler, domHandlerType, uiService);
            }
        }, DragLeaveEvent.getType());
        break;
    case DROP:
        widget.addBitlessDomHandler(new DragOverHandler() {

            @Override
            public void onDragOver(final DragOverEvent event) {
                // required by GWT api
                // triggerDomEvent(addHandler, domHandlerType, uiService);
            }
        }, DragOverEvent.getType());

        widget.addBitlessDomHandler(new DropHandler() {

            @Override
            public void onDrop(final DropEvent event) {
                event.preventDefault();
                final String dragWidgetID = event.getData("text");
                final PTInstruction eventInstruction = buildEventInstruction(addHandler, domHandlerType);
                if (dragWidgetID != null)
                    eventInstruction.put(PROPERTY.DRAG_SRC, Long.parseLong(dragWidgetID));
                uiService.triggerEvent(eventInstruction);
            }
        }, DropEvent.getType());
        break;
    default:
        log.info("Handler not supported #" + h);
        break;
    }
}

From source file:eml.studio.client.ui.panel.Uploader.FileUploader.java

License:Open Source License

private void initFacet() {
    this.getUploader().setUploadURL(GWT.getModuleBaseURL() + "fileupload").setFileSizeLimit("20 GB")
            .setButtonAction(Uploader.ButtonAction.SELECT_FILES).setFileQueueLimit(2)
            .setFileQueuedHandler(new FileQueuedHandler() {

                @Override/*  ww w.ja  v  a2 s . c om*/
                public boolean onFileQueued(final FileQueuedEvent fileQueuedEvent) {
                    // Create a Progress Bar for this file
                    if (FileUploader.this.getFileQueuedId() != null)
                        FileUploader.this.getUploader().cancelUpload(FileUploader.this.getFileQueuedId(),
                                false);// delete the last
                    FileUploader.this.getProgressBarPanel().clear();
                    FileUploader.this.getProgressBarAndButtonPanel().clear();
                    // choose file
                    FileUploader.this.setIsFileQueued(true);
                    final ProgressBar progressBar = new ProgressBar(0.0, 1.0, 0.0,
                            FileUploader.this.getCancelProgressBarTextFormatter());
                    progressBar.setTitle(fileQueuedEvent.getFile().getName());
                    FileUploader.this.setFileQueuedName(fileQueuedEvent.getFile().getName());
                    FileUploader.this.setFileQueuedId(fileQueuedEvent.getFile().getId());
                    progressBar.addStyleName("bda-fileupload-progressbar");
                    progressBar.setTextVisible(true);
                    FileUploader.this.getProgressBars().put(fileQueuedEvent.getFile().getId(), progressBar);

                    // Add Cancel Button Image
                    FileUploader.this.getCancelButton().setStyleName("cancelButton");
                    FileUploader.this.getCancelButton().addClickHandler(new ClickHandler() {
                        @Override
                        public void onClick(ClickEvent event) {
                            FileUploader.this.getUploader().cancelUpload(fileQueuedEvent.getFile().getId(),
                                    false);
                            FileUploader.this.getProgressBars().get(fileQueuedEvent.getFile().getId())
                                    .setProgress(-1.0d);
                            FileUploader.this.getCancelButton().removeFromParent();
                            FileUploader.this.setIsFileQueued(false);
                        }
                    });
                    FileUploader.this.getCancelButtons().put(fileQueuedEvent.getFile().getId(),
                            FileUploader.this.getCancelButton());
                    // Add the Bar and Button to the interface
                    progressBarAndButtonPanel.setSpacing(5);
                    Label tit = new Label(fileQueuedEvent.getFile().getName());
                    // tit.setWidth("100px");
                    progressBarAndButtonPanel.add(tit);
                    progressBarAndButtonPanel.setCellVerticalAlignment(tit, HasVerticalAlignment.ALIGN_MIDDLE);
                    progressBarAndButtonPanel.add(progressBar);
                    progressBarAndButtonPanel.setCellVerticalAlignment(progressBar,
                            HasVerticalAlignment.ALIGN_MIDDLE);
                    progressBarAndButtonPanel.add(FileUploader.this.getCancelButton());
                    progressBarAndButtonPanel.setCellVerticalAlignment(FileUploader.this.getCancelButton(),
                            HasVerticalAlignment.ALIGN_MIDDLE);
                    progressBarPanel.add(FileUploader.this.getProgressBarAndButtonPanel());
                    progressBarPanel.setCellVerticalAlignment(progressBarAndButtonPanel,
                            HasVerticalAlignment.ALIGN_MIDDLE);
                    return true;
                }
            }).setUploadProgressHandler(new UploadProgressHandler() {
                @Override
                public boolean onUploadProgress(UploadProgressEvent uploadProgressEvent) {
                    ProgressBar progressBar = FileUploader.this.getProgressBars()
                            .get(uploadProgressEvent.getFile().getId());
                    progressBar.setProgress((double) uploadProgressEvent.getBytesComplete()
                            / uploadProgressEvent.getBytesTotal());

                    return true;
                }
            }).setFileDialogStartHandler(new FileDialogStartHandler() {
                @Override
                public boolean onFileDialogStartEvent(FileDialogStartEvent fileDialogStartEvent) {
                    if (FileUploader.this.getUploader().getStats().getUploadsInProgress() <= 0) {
                        // Clear the uploads that have completed, if none are in process
                        FileUploader.this.getProgressBarPanel().clear();
                        FileUploader.this.getProgressBars().clear();
                        FileUploader.this.getCancelButtons().clear();
                    }
                    return true;
                }
            }).setFileDialogCompleteHandler(new FileDialogCompleteHandler() {
                @Override
                public boolean onFileDialogComplete(FileDialogCompleteEvent fileDialogCompleteEvent) {
                    if (fileDialogCompleteEvent.getTotalFilesInQueue() > 0) {
                        if (FileUploader.this.getUploader().getStats().getUploadsInProgress() <= 0) {
                            // uploader.startUpload();
                        }
                    }
                    return true;
                }
            }).setFileQueueErrorHandler(new FileQueueErrorHandler() {
                @Override
                public boolean onFileQueueError(FileQueueErrorEvent fileQueueErrorEvent) {
                    Window.alert("Upload of file " + fileQueueErrorEvent.getFile().getName()
                            + " failed due to [" + fileQueueErrorEvent.getErrorCode().toString() + "]: "
                            + fileQueueErrorEvent.getMessage());
                    return true;
                }
            }).setUploadErrorHandler(new UploadErrorHandler() {
                @Override
                public boolean onUploadError(UploadErrorEvent uploadErrorEvent) {
                    FileUploader.this.getCancelButtons().get(uploadErrorEvent.getFile().getId())
                            .removeFromParent();
                    Window.alert("Upload of file " + uploadErrorEvent.getFile().getName() + " failed due to ["
                            + uploadErrorEvent.getErrorCode().toString() + "]: "
                            + uploadErrorEvent.getMessage());
                    return true;
                }
            });
    FileUploader.this.getDropFilesLabel().addDragOverHandler(new DragOverHandler() {
        @Override
        public void onDragOver(DragOverEvent event) {
            if (!FileUploader.this.getUploader().getButtonDisabled()) {
                //uploader.getDropFilesLabel().addStyleName("dropFilesLabelHover");
            }
        }
    });
    FileUploader.this.getDropFilesLabel().addDragLeaveHandler(new DragLeaveHandler() {
        @Override
        public void onDragLeave(DragLeaveEvent event) {
            //uploader.getDropFilesLabel().removeStyleName("dropFilesLabelHover");
        }
    });
    FileUploader.this.getDropFilesLabel().addDropHandler(new DropHandler() {
        @Override
        public void onDrop(DropEvent event) {
            //uploader.getDropFilesLabel().removeStyleName("dropFilesLabelHover");

            if (FileUploader.this.getUploader().getStats().getUploadsInProgress() <= 0) {
                FileUploader.this.getProgressBarPanel().clear();
                FileUploader.this.getProgressBars().clear();
                FileUploader.this.getCancelButtons().clear();
            }

            FileUploader.this.getUploader().addFilesToQueue(Uploader.getDroppedFiles(event.getNativeEvent()));
            event.preventDefault();
        }
    });
}

From source file:fr.putnami.pwt.core.widget.client.InputFile.java

License:Open Source License

private void endConstruct() {

    this.progressBar.setDisplayValue(true);
    this.progressBar.setAnimated(true);
    this.progressBarWrapper.add(this.progressBar);

    StyleUtils.addStyle(this.progressBarWrapper, AbstractInput.STYLE_CONTROL);
    StyleUtils.addStyle(this.fileNameAnchor, AbstractInput.STYLE_CONTROL);
    StyleUtils.addStyle(this.placeholderText, AbstractInput.STYLE_CONTROL);
    StyleUtils.addStyle(this.placeholderText, InputFile.STYLE_MUTTED);

    this.cancelBtn.setType(Type.ICON);
    this.cancelBtn.setIconType(IconFont.ICON_CANCEL);
    this.cancelBtn.addButtonHandler(new ButtonEvent.Handler() {
        @Override/* w  w  w  .  j  a  va  2  s  .  c  o  m*/
        public void onButtonAction(ButtonEvent event) {
            if (InputFile.this.sendRequest != null) {
                InputFile.this.sendRequest.cancel();
            }
            InputFile.this.edit(null);
        }
    });
    this.uploadBtn.setType(Type.ICON);
    this.uploadBtn.setIconType(IconFont.ICON_UPLOAD);
    this.uploadBtn.addButtonHandler(new ButtonEvent.Handler() {
        @Override
        public void onButtonAction(ButtonEvent event) {
            if (InputFile.this.uploadForm == null) {
                InputFile.this.uploadForm = new UploadForm();
            }
            InputFile.this.uploadForm.openFilePicker();
        }
    });

    this.addDomHandler(new DragLeaveHandler() {
        @Override
        public void onDragLeave(DragLeaveEvent event) {
            StyleUtils.removeStyle(InputFile.this, InputFile.STYLE_DRAGOVER);
        }
    }, DragLeaveEvent.getType());
    this.addDomHandler(new DragOverHandler() {
        @Override
        public void onDragOver(DragOverEvent event) {
            StyleUtils.addStyle(InputFile.this, InputFile.STYLE_DRAGOVER);
        }
    }, DragOverEvent.getType());
    this.addDomHandler(new DropHandler() {
        @Override
        public void onDrop(DropEvent event) {
            event.preventDefault();
            event.stopPropagation();

            DataTransfer data = event.getNativeEvent().getDataTransfer();
            uploadData(data);
        }
    }, DropEvent.getType());

    this.redraw();
}

From source file:io.apiman.manager.ui.client.local.widgets.DroppableTextArea.java

License:Apache License

@PostConstruct
protected void postConstruct() {
    addDragEnterHandler(new DragEnterHandler() {
        @Override/*from w  w  w  .j av  a 2 s  . c  o m*/
        public void onDragEnter(DragEnterEvent event) {
            getElement().addClassName("dropping"); //$NON-NLS-1$
            event.preventDefault();
            event.stopPropagation();
        }
    });
    addDragLeaveHandler(new DragLeaveHandler() {
        @Override
        public void onDragLeave(DragLeaveEvent event) {
            getElement().removeClassName("dropping"); //$NON-NLS-1$
            event.preventDefault();
            event.stopPropagation();
        }
    });
    addDragOverHandler(new DragOverHandler() {
        @Override
        public void onDragOver(DragOverEvent event) {
            if (!getElement().getClassName().contains("dropping")) { //$NON-NLS-1$
                getElement().addClassName("dropping"); //$NON-NLS-1$
            }
            event.preventDefault();
            event.stopPropagation();
        }
    });
    addDropHandler(new DropHandler() {
        @Override
        public void onDrop(DropEvent event) {
            getElement().removeClassName("dropping"); //$NON-NLS-1$
            event.preventDefault();
            event.stopPropagation();
            doDrop(event);
        }
    });
}

From source file:net.husoftware.client.spike.DragDropLabel.java

License:Open Source License

private void initDrop() {
    addDomHandler(new DragOverHandler() {
        @Override// w ww .  j  av  a  2s  .  c o  m
        public void onDragOver(DragOverEvent event) {
            addStyleName("dropping");
        }
    }, DragOverEvent.getType());

    addDomHandler(new DragLeaveHandler() {
        @Override
        public void onDragLeave(DragLeaveEvent event) {
            removeStyleName("dropping");
        }
    }, DragLeaveEvent.getType());

    addDomHandler(new DropHandler() {
        @Override
        public void onDrop(DropEvent event) {
            event.preventDefault();
            if (dragging != null) {
                // Target treeitem is found via 'this';
                // Dragged treeitem is found via 'dragging'.

                TreeItem dragTarget = null;
                TreeItem dragSource = null;

                // The parent of 'this' is not the TreeItem, as that's not a Widget.
                // The parent is the tree containing the treeitem.
                Tree tree = (Tree) DragDropLabel.this.getParent();

                // Visit the entire tree, searching for the drag and drop TreeItems

                List<TreeItem> stack = new ArrayList<TreeItem>();
                stack.add(tree.getItem(0));
                while (!stack.isEmpty()) {
                    TreeItem item = stack.remove(0);
                    for (int i = 0; i < item.getChildCount(); i++) {
                        stack.add(item.getChild(i));
                    }

                    Widget w = item.getWidget();
                    if (w != null) {
                        if (w == dragging) {
                            dragSource = item;
                            if (dragTarget != null) {
                                break;
                            }
                        }
                        if (w == DragDropLabel.this) {
                            dragTarget = item;
                            w.removeStyleName("dropping");
                            if (dragSource != null) {
                                break;
                            }
                        }
                    }
                }

                // Do we have a source and a target?
                if (dragSource != null && dragTarget != null) {
                    // Make sure that target is not a child of dragSource

                    TreeItem test = dragTarget;
                    while (test != null) {
                        if (test == dragSource) {
                            return;
                        }
                        test = test.getParentItem();
                    }

                    // Move the dragged item (source) under the target.
                    dragTarget.addItem(dragSource);
                    // Make sure the the target treeitem is open.
                    dragTarget.setState(true);
                }
                dragging = null;
            }
        }
    }, DropEvent.getType());
}

From source file:org.cruxframework.crux.widgets.client.uploader.FileUploaderLargeImpl.java

License:Apache License

protected FocusPanel initDropArea() {
    final FocusPanel dropArea = new FocusPanel();
    dropArea.setStyleName("dropArea");
    dropArea.addDragOverHandler(new DragOverHandler() {
        @Override//from w ww.jav  a  2s . c  o  m
        public void onDragOver(DragOverEvent event) {
            event.stopPropagation();
            event.preventDefault();
            dropArea.addStyleDependentName("hover");
        }
    });
    dropArea.addDragLeaveHandler(new DragLeaveHandler() {
        @Override
        public void onDragLeave(DragLeaveEvent event) {
            event.stopPropagation();
            event.preventDefault();
            dropArea.removeStyleDependentName("hover");
        }
    });
    dropArea.addDropHandler(new DropHandler() {
        @Override
        public void onDrop(DropEvent event) {
            event.stopPropagation();
            event.preventDefault();
            dropArea.removeStyleDependentName("hover");
            processFiles(event.getNativeEvent());
        }
    });
    return dropArea;
}

From source file:org.iplantc.de.tags.client.views.TagItemImpl.java

License:Apache License

private void activateDnD() {
    this.tagPanel.addStyleName(resources.style().tagEditable()); // Change cursor on hover

    // DnD//from   w ww .j  av a2 s . c o  m
    this.getElement().setDraggable(Element.DRAGGABLE_TRUE);
    this.dndHandlers.add(this.addDomHandler(new DragStartHandler() {
        @Override
        public void onDragStart(DragStartEvent event) {
            event.setData("text", "");
            draggedElement = TagItemImpl.this;
            // FIXME Fire focus cmd
            //                uiHandlers.onFocus();
        }
    }, DragStartEvent.getType()));

    this.dndHandlers.add(this.addDomHandler(new DragEnterHandler() {
        @Override
        public void onDragEnter(DragEnterEvent event) {
            if (draggedElement.equals(TagItemImpl.this))
                return;

            // Calculate the mouse's percentage X position relative to the drag over element
            // 0 = left border; 100 = right border
            int percentagePositionX = (event.getNativeEvent().getClientX() - getAbsoluteLeft()) * 100
                    / getElement().getClientWidth();
            if (percentagePositionX < 50) {
                tagPanel.addStyleName(resources.style().previewLeft());
                tagPanel.removeStyleName(resources.style().previewRight());

            } else {
                tagPanel.addStyleName(resources.style().previewRight());
                tagPanel.removeStyleName(resources.style().previewLeft());
            }
        }
    }, DragEnterEvent.getType()));

    this.dndHandlers.add(this.addDomHandler(new DragOverHandler() {
        @Override
        public void onDragOver(DragOverEvent event) {
            if (draggedElement.equals(TagItemImpl.this))
                return;

            // Calculate the mouse's percentage X position relative to the drag over element
            // 0 = left border; 100 = right border
            int percentagePositionX = (event.getNativeEvent().getClientX() - getAbsoluteLeft()) * 100
                    / getElement().getClientWidth();
            if (percentagePositionX < 50) {
                tagPanel.addStyleName(resources.style().previewLeft());
                tagPanel.removeStyleName(resources.style().previewRight());

            } else {
                tagPanel.addStyleName(resources.style().previewRight());
                tagPanel.removeStyleName(resources.style().previewLeft());
            }
        }
    }, DragOverEvent.getType()));

    this.dndHandlers.add(this.addDomHandler(new DragLeaveHandler() {
        @Override
        public void onDragLeave(DragLeaveEvent event) {
            if (draggedElement.equals(TagItemImpl.this))
                return;

            tagPanel.removeStyleName(resources.style().previewLeft());
            tagPanel.removeStyleName(resources.style().previewRight());
        }
    }, DragLeaveEvent.getType()));

    this.dndHandlers.add(this.addDomHandler(new DropHandler() {
        @Override
        public void onDrop(DropEvent event) {
            if (draggedElement.equals(TagItemImpl.this))
                return;

            event.preventDefault();
            /*uiHandlers.onRelocateTag(draggedElement,
                                     TagItemImpl.this,
                                     tagPanel.getStyleName().contains(resources.style()
                                                                               .previewLeft()) ? InsertionPoint.BEFORE
                                         : InsertionPoint.AFTER);*/
            // FIXME Fire TagRelocated Command
            tagPanel.removeStyleName(resources.style().previewLeft());
            tagPanel.removeStyleName(resources.style().previewRight());
        }
    }, DropEvent.getType()));

    this.dndHandlers.add(this.addDomHandler(new DragEndHandler() {
        @Override
        public void onDragEnd(DragEndEvent event) {
            // FIXME Fire Blur command
            //                uiHandlers.onBlur();
        }
    }, DragEndEvent.getType()));
}

From source file:org.openelis.modules.attachment.client.AttachmentScreenUI.java

License:Open Source License

protected void initialize() {
    ArrayList<Item<Integer>> model1, model2;

    screen = this;

    /*//w  w  w .  ja  v a 2  s . c  o  m
     * screen fields and widgets
     */
    addScreenHandler(description, AttachmentMeta.getDescription(), new ScreenHandler<String>() {
        public void onStateChange(StateChangeEvent event) {
            description.setEnabled(isState(QUERY, DISPLAY));
            description.setQueryMode(isState(QUERY, DISPLAY));
        }

        public Widget onTab(boolean forward) {
            return forward ? createdDate : abortButton;
        }
    });

    addScreenHandler(createdDate, AttachmentMeta.getCreatedDate(), new ScreenHandler<Datetime>() {
        public void onStateChange(StateChangeEvent event) {
            createdDate.setEnabled(isState(QUERY, DISPLAY));
            createdDate.setQueryMode(isState(QUERY, DISPLAY));
        }

        public Widget onTab(boolean forward) {
            return forward ? querySection : description;
        }
    });

    addScreenHandler(querySection, AttachmentMeta.getSectionId(), new ScreenHandler<Integer>() {
        public void onStateChange(StateChangeEvent event) {
            querySection.setEnabled(isState(QUERY, DISPLAY));
            querySection.setQueryMode(isState(QUERY, DISPLAY));
        }

        public Widget onTab(boolean forward) {
            return forward ? issueText : createdDate;
        }
    });

    addScreenHandler(issueText, AttachmentMeta.getIssueText(), new ScreenHandler<String>() {
        public void onStateChange(StateChangeEvent event) {
            issueText.setEnabled(isState(QUERY, DISPLAY));
            issueText.setQueryMode(isState(QUERY, DISPLAY));
        }

        public Widget onTab(boolean forward) {
            return forward ? searchButton : querySection;
        }
    });

    addScreenHandler(searchButton, "searchButton", new ScreenHandler<Object>() {
        public void onStateChange(StateChangeEvent event) {
            searchButton.setEnabled(isState(QUERY, DISPLAY));
        }

        public Widget onTab(boolean forward) {
            return forward ? tree : issueText;
        }
    });

    addScreenHandler(tree, "tree", new ScreenHandler<Object>() {
        public void onStateChange(StateChangeEvent event) {
            tree.setEnabled(true);
        }

        public Widget onTab(boolean forward) {
            return forward ? attachButton : searchButton;
        }
    });

    tree.addBeforeSelectionHandler(new BeforeSelectionHandler<Integer>() {
        @Override
        public void onBeforeSelection(BeforeSelectionEvent<Integer> event) {
            Integer id;
            Node node;

            if (!isState(UPDATE))
                return;

            /*
             * in Update state, only the nodes that belong to the locked
             * attachment can be selected
             */
            node = tree.getNodeAt(event.getItem());

            if (ATTACHMENT_LEAF.equals(node.getType()))
                id = node.getData();
            else if (ATTACHMENT_ITEM_LEAF.equals(node.getType()))
                id = node.getParent().getData();
            else
                id = null;

            if (!manager.getAttachment().getId().equals(id))
                event.cancel();
        }
    });

    tree.addSelectionHandler(new SelectionHandler<Integer>() {
        @Override
        public void onSelection(SelectionEvent<Integer> event) {
            nodeSelected(event.getSelectedItem());
        }
    });

    tree.addDoubleClickHandler(new DoubleClickHandler() {
        @Override
        public void onDoubleClick(DoubleClickEvent event) {
            if (!isState(UPDATE, DELETE))
                displayAttachment(tree.getNodeAt(tree.getSelectedNode()), null);
        }
    });

    tree.addBeforeCellEditedHandler(new BeforeCellEditedHandler() {
        @Override
        public void onBeforeCellEdited(BeforeCellEditedEvent event) {
            String name;
            Integer sectId;
            SystemUserPermission perm;
            Node node;

            node = tree.getNodeAt(tree.getSelectedNode());
            if (!ATTACHMENT_LEAF.equals(node.getType()) || !isState(UPDATE)
                    || (event.getCol() != 0 && event.getCol() != 2)) {
                event.cancel();
                return;
            }

            perm = UserCache.getPermission();
            sectId = manager.getAttachment().getSectionId();
            try {
                if (sectId != null) {
                    /*
                     * allow changing any field of the attachment only if
                     * the user has complete permission to the current
                     * section
                     */
                    name = SectionCache.getById(sectId).getName();
                    if (!perm.has(name, SectionFlags.COMPLETE)) {
                        event.cancel();
                        return;
                    }
                }

                /*
                 * make sure that the section can't be changed to one that
                 * the user doesn't have complete permission to
                 */
                for (Item<Integer> row : tableSection.getModel()) {
                    name = SectionCache.getById(row.getKey()).getName();
                    row.setEnabled(perm.has(name, SectionFlags.COMPLETE));
                }
            } catch (Exception e) {
                Window.alert(e.getMessage());
                logger.log(Level.SEVERE, e.getMessage(), e);
                event.cancel();
            }
        }
    });

    tree.addCellEditedHandler(new CellEditedHandler() {
        public void onCellUpdated(CellEditedEvent event) {
            Object val;
            AttachmentDO data;

            val = tree.getValueAt(event.getRow(), event.getCol());
            data = manager.getAttachment();
            switch (event.getCol()) {
            case 0:
                data.setDescription((String) val);
                break;
            case 2:
                data.setSectionId((Integer) val);
                break;
            }
        }
    });

    tree.setAllowMultipleSelection(true);

    addScreenHandler(attachButton, "attachButton", new ScreenHandler<Object>() {
        public void onStateChange(StateChangeEvent event) {
            attachButton.setEnabled(false);
        }

        public Widget onTab(boolean forward) {
            return forward ? updateButton : tree;
        }
    });

    addScreenHandler(updateButton, "updateButton", new ScreenHandler<Object>() {
        public void onStateChange(StateChangeEvent event) {
            updateButton.setEnabled(isState(DISPLAY, UPDATE) && manager != null);
            if (isState(UPDATE)) {
                updateButton.lock();
                updateButton.setPressed(true);
            }
        }

        public Widget onTab(boolean forward) {
            return forward ? deleteButton : tree;
        }
    });

    addShortcut(updateButton, 'u', CTRL);

    addScreenHandler(deleteButton, "deleteButton", new ScreenHandler<Object>() {
        public void onStateChange(StateChangeEvent event) {
            deleteButton.setEnabled(isState(DISPLAY, DELETE) && manager != null);
            if (isState(DELETE)) {
                deleteButton.lock();
                deleteButton.setPressed(true);
            }
        }

        public Widget onTab(boolean forward) {
            return forward ? commitButton : updateButton;
        }
    });

    addShortcut(deleteButton, 'd', CTRL);

    addScreenHandler(commitButton, "commitButton", new ScreenHandler<Object>() {
        public void onStateChange(StateChangeEvent event) {
            commitButton.setEnabled(isState(UPDATE, DELETE));
        }

        public Widget onTab(boolean forward) {
            return forward ? deleteButton : abortButton;
        }
    });

    addShortcut(commitButton, 'm', CTRL);

    addScreenHandler(abortButton, "abortButton", new ScreenHandler<Object>() {
        public void onStateChange(StateChangeEvent event) {
            abortButton.setEnabled(isState(UPDATE, DELETE));
        }

        public Widget onTab(boolean forward) {
            return forward ? description : commitButton;
        }
    });

    addShortcut(abortButton, 'o', CTRL);

    fileDrop = new FileDrop(screen, "openelis/upload") {
        public void onDrop(DropEvent event) {
            if (!fileDrop.isEnabled())
                return;

            if (dropIndicator != null) {
                dropIndicator.removeFromParent();
                dropIndicator = null;
            }

            super.onDrop(event);
        }

        public void onDropSuccess() {
            ArrayList<AttachmentManager> ams;

            try {
                /*
                 * don't let a file be dropped for upload if a record is
                 * locked
                 */
                if (isState(UPDATE, DELETE))
                    return;
                setBusy(Messages.get().gen_saving());
                /*
                 * create attachments for the newly uploaded files and get
                 * the managers for them
                 */
                ams = AttachmentService.get().put();
                if (managers == null)
                    managers = new HashMap<Integer, AttachmentManager>();

                for (AttachmentManager am : ams)
                    managers.put(am.getAttachment().getId(), am);
                previousManager = null;
                setState(DISPLAY);
                if (isLoadedFromQuery) {
                    /*
                     * the tree is showing the attachments returned by a
                     * previous search, so they are cleared and only the
                     * attachment created from the uploaded file is shown
                     */
                    isLoadedFromQuery = false;
                    loadTree(ams, true, false, isLoadedFromQuery);
                } else {
                    /*
                     * add the attachment created from uploaded file as the
                     * first one in the tree
                     */
                    loadTree(ams, false, false, isLoadedFromQuery);
                }
                tree.selectNodeAt(0);
                nodeSelected(0);
                setDone(Messages.get().gen_savingComplete());
            } catch (Exception e) {
                Window.alert(e.getMessage());
                logger.log(Level.SEVERE, e.getMessage(), e);
                clearStatus();
            }
        }
    };

    addStateChangeHandler(new StateChangeEvent.Handler() {
        public void onStateChange(StateChangeEvent event) {
            fileDrop.setEnabled(isState(QUERY, DISPLAY));

            if (isState(UPDATE, DELETE) && !closeHandlerAdded && window != null) {
                /*
                 * this handler is not added in initialize() because this
                 * screen can be shown in a modal window and in that case,
                 * the window is not available in initialize()
                 */
                window.addBeforeClosedHandler(new BeforeCloseHandler<WindowInt>() {
                    public void onBeforeClosed(BeforeCloseEvent<WindowInt> event) {
                        if (isState(UPDATE, DELETE)) {
                            event.cancel();
                            setError(Messages.get().gen_mustCommitOrAbort());
                        } else if (dropIndicator != null) {
                            dropIndicator.removeFromParent();
                            dropIndicator = null;
                        }
                    }
                });
                closeHandlerAdded = true;
            }
        }
    });

    fileDrop.addDragEnterHandler(new DragEnterHandler() {
        @Override
        public void onDragEnter(DragEnterEvent event) {
            LayoutPanel panel;

            if (dropIndicator == null) {
                dropIndicator = new DropIndicator();
                panel = (LayoutPanel) screen.getWidget();
                panel.add(dropIndicator);
                panel.setWidgetTopBottom(dropIndicator, 0, Unit.PX, 0, Unit.PX);
            }
        }
    });

    fileDrop.addDragLeaveHandler(new DragLeaveHandler() {
        @Override
        public void onDragLeave(DragLeaveEvent event) {
            if (dropIndicator != null) {
                dropIndicator.removeFromParent();
                dropIndicator = null;
            }
        }
    });

    /*
     * here two separate models are created for the two dropdowns to make
     * sure that any items disabled or enabled in one don't affect the other
     */
    model1 = new ArrayList<Item<Integer>>();
    model2 = new ArrayList<Item<Integer>>();
    for (SectionDO s : SectionCache.getList()) {
        model1.add(new Item<Integer>(s.getId(), s.getName()));
        model2.add(new Item<Integer>(s.getId(), s.getName()));
    }

    querySection.setModel(model1);
    tableSection.setModel(model2);

    /*
     * call for locking and fetching attachments
     */
    if (fetchForUpdateCall == null) {
        fetchForUpdateCall = new AsyncCallbackUI<AttachmentManager>() {
            public void success(AttachmentManager result) {
                Node node;

                manager = result;
                managers.put(manager.getAttachment().getId(), manager);
                setState(UPDATE);

                node = tree.getNodeAt(tree.getSelectedNode());
                if (ATTACHMENT_ITEM_LEAF.equals(node.getType()))
                    node = node.getParent();
                reloadAttachment(node);
                tree.selectNodeAt(node);
                tree.startEditing(tree.getSelectedNode(), 0);
            }

            public void failure(Throwable e) {
                Window.alert(e.getMessage());
                logger.log(Level.SEVERE, e.getMessage() != null ? e.getMessage() : "null", e);
            }

            public void finish() {
                clearStatus();
            }
        };
    }

    /*
     * call for updating an attachment
     */
    if (updateCall == null) {
        updateCall = new AsyncCallbackUI<AttachmentManager>() {
            public void success(AttachmentManager result) {
                Node node;

                manager = result;
                managers.put(manager.getAttachment().getId(), manager);
                setState(DISPLAY);

                node = tree.getNodeAt(tree.getSelectedNode());
                if (ATTACHMENT_ITEM_LEAF.equals(node.getType()))
                    node = node.getParent();
                reloadAttachment(node);
                tree.selectNodeAt(node);
                nodeSelected(tree.getSelectedNode());
                clearStatus();
            }

            public void validationErrors(ValidationErrorsList e) {
                showErrors(e);
            }

            public void failure(Throwable e) {
                Window.alert("commitUpdate(): " + e.getMessage());
                logger.log(Level.SEVERE, e.getMessage() != null ? e.getMessage() : "null", e);
                clearStatus();
            }
        };
    }

    /*
     * call for unlocking an attachment
     */
    if (unlockCall == null) {
        unlockCall = new AsyncCallbackUI<AttachmentManager>() {
            public void success(AttachmentManager result) {
                Node node;

                manager = result;
                managers.put(manager.getAttachment().getId(), manager);
                setState(DISPLAY);

                node = tree.getNodeAt(tree.getSelectedNode());
                if (ATTACHMENT_ITEM_LEAF.equals(node.getType()))
                    node = node.getParent();
                reloadAttachment(node);
                tree.selectNodeAt(node);
                nodeSelected(tree.getSelectedNode());
                setDone(Messages.get().gen_updateAborted());
            }

            public void failure(Throwable e) {
                Window.alert(e.getMessage());
                logger.log(Level.SEVERE, e.getMessage() != null ? e.getMessage() : "null", e);
                clearStatus();
            }
        };
    }

    /*
     * call for deleting attachments
     */
    if (deleteCall == null) {
        deleteCall = new AsyncCallbackUI<Void>() {
            public void success(Void result) {
                setState(DISPLAY);
                setDone(Messages.get().gen_deletingComplete());
            }

            public void validationErrors(ValidationErrorsList e) {
                showErrors(e);
            }

            public void failure(Throwable e) {
                Window.alert(e.getMessage());
                logger.log(Level.SEVERE, e.getMessage() != null ? e.getMessage() : "null", e);
                clearStatus();
            }
        };
    }
}