Example usage for com.google.gwt.user.client DOM clone

List of usage examples for com.google.gwt.user.client DOM clone

Introduction

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

Prototype

public static Element clone(Element elem, boolean deep) 

Source Link

Document

Clones an element.

Usage

From source file:ch.unifr.pai.twice.dragndrop.client.MPDragNDrop.java

License:Apache License

/**
 * Invoked when a drag starts. This method handles the full dragging
 * // ww  w . j a v a2s .c o  m
 * @param w
 *            - the widget to be dragged
 * @param deviceId
 *            - the deviceId of the device dragging the widget
 * @param offsetX
 * @param offsetY
 * @param conf
 * @param dragProxyTemplate
 */
protected void startDrag(Widget w, String deviceId, int offsetX, int offsetY, DragConfiguration conf,
        Element dragProxyTemplate) {

    MultiCursorController.getInstance().notifyCursor(deviceId, "startDrag");
    if (conf == null)
        conf = DragConfiguration.withProxy();
    if (conf.getDragNDropHandler() != null) {
        conf.getDragNDropHandler().onStartDrag(deviceId, w);
    }
    conf.setDragProxy(DOM.clone(
            dragProxyTemplate == null ? w.getElement() : (com.google.gwt.user.client.Element) dragProxyTemplate,
            true));
    conf.getDragProxy().addClassName("drag-proxy");
    conf.getDragProxy().getStyle().setPosition(Position.ABSOLUTE);
    RootPanel.getBodyElement().appendChild(conf.getDragProxy());
    conf.getDragProxy().getStyle().setLeft(w.getElement().getAbsoluteLeft(), Unit.PX);
    conf.getDragProxy().getStyle().setTop(w.getElement().getAbsoluteTop(), Unit.PX);
    conf.getDragProxy().getStyle().setPosition(Position.ABSOLUTE);
    // DOM.eventPreventDefault((Event) event.getNativeEvent());
    if (activeHandlers.isEmpty())
        addEventPreview();
    MPDragNDrop d = createDragNDrop();
    d.initialize(w, offsetX, offsetY, conf);
    activeHandlers.put(deviceId, d);
    if (!conf.isWithProxy()) {
        w.getElement().getStyle().setDisplay(Display.BLOCK);
    } else {
        w.addStyleName(DRAGGINGSTYLENAME);
    }
}

From source file:com.google.appinventor.client.widgets.ClonedWidget.java

License:Open Source License

private ClonedWidget(Element origElement) {
    setElement(DOM.clone(origElement, true));
}

From source file:org.jahia.ajax.gwt.client.widget.edit.mainarea.SimpleModuleDragSource.java

License:Open Source License

@Override
protected void onDragStart(DNDEvent e) {
    super.onDragStart(e);

    List<GWTJahiaNode> l = new ArrayList<GWTJahiaNode>();
    MainModule mainModule = getModule().getMainModule();
    Set<Module> moduleSet = new HashSet<Module>();
    if (e.isControlKey() || mainModule.getSelections().containsKey(module)) {
        moduleSet.addAll(mainModule.getSelections().keySet());
    }//  w w w  .j  av  a 2 s . c  o  m
    moduleSet.add(module);
    for (Module m : moduleSet) {
        if (m.isDraggable()) {
            if (PermissionsUtils.isPermitted("jcr:removeNode", m.getNode()) && !m.getNode().isLocked()) {
                e.setCancelled(false);
                e.setData(this);
                e.setOperation(DND.Operation.COPY);
                if (getStatusText() == null) {
                    e.getStatus().update(DOM.clone(m.getHtml().getElement(), true));

                    e.getStatus().setData("element", m.getHtml().getElement());
                    DOM.setStyleAttribute(m.getHtml().getElement(), "display", "none");

                }
            } else {
                e.setCancelled(true);
            }
            Selection selection = mainModule.getSelections().get(m);
            if (selection != null) {
                selection.hide();
            }
            l.add(m.getNode());
        }
    }
    if (!l.isEmpty()) {
        e.getStatus().setData(EditModeDNDListener.SOURCE_TYPE, EditModeDNDListener.SIMPLEMODULE_TYPE);
        e.getStatus().setData(EditModeDNDListener.SOURCE_MODULES, moduleSet);
        e.getStatus().setData(EditModeDNDListener.SOURCE_NODES, l);
    }
}

From source file:org.nsesa.editor.gwt.an.amendments.client.handler.common.content.AkomaNtoso20AmendmentBuilder.java

License:EUPL

public OverlayWidget build() {
    final Counter idGenerator = new Counter();

    final AkomaNtoso akomaNtoso = new AkomaNtoso();
    final Amendment root = akomaNtoso.setAmendment(new Amendment());

    // meta/*from  w  w w  .j  av a 2s  . com*/
    final Identification identification = new Identification();
    //        final String formattedDate = DateTimeFormat.getFormat(DateTimeFormat.PredefinedFormat.ISO_8601).format(new Date());
    final String formattedDate = DateTimeFormat.getFormat("yyyy-MM-dd").format(new Date());
    identification.setFRBRWork(new FRBRWork() {
        {
            setFRBRthis(new FRBRthis().valueAttr(s("TODO")));
            addFRBRuri(new FRBRuri().valueAttr(s("TODO")));
            addFRBRdate(new FRBRdate().dateAttr(d(formattedDate)).nameAttr(s("instantiation")));
            addFRBRauthor(new FRBRauthor().hrefAttr(u("#refTodo")));
            setFRBRcountry(new FRBRcountry().valueAttr(s("TODO")));
        }
    });

    identification.setFRBRExpression(new FRBRExpression() {
        {
            setFRBRthis(new FRBRthis().valueAttr(s("TODO")));
            addFRBRuri(new FRBRuri().valueAttr(s("TODO")));
            addFRBRdate(new FRBRdate().dateAttr(d(formattedDate)).nameAttr(s("instantiation")));
            addFRBRauthor(new FRBRauthor().hrefAttr(u("#refTodo")));
            addFRBRauthor(new FRBRauthor().hrefAttr(u("#refTodo")));
            addFRBRlanguage(new FRBRlanguage().languageAttr(l(languageIso)));
        }
    });

    identification.setFRBRManifestation(new FRBRManifestation() {
        {
            setFRBRthis(new FRBRthis().valueAttr(s("TODO")));
            addFRBRuri(new FRBRuri().valueAttr(s("TODO")));
            addFRBRdate(new FRBRdate().dateAttr(d(formattedDate)).nameAttr(s("instantiation")));
            addFRBRauthor(new FRBRauthor().hrefAttr(u("#refTodo")));
        }
    });

    final Meta meta = new Meta();
    root.setMeta(meta);
    meta.setIdentification(identification).sourceAttr(u("http://at4am.org/"));

    References references = new References();

    references.addTLCOrganization(new TLCOrganization().idAttr(id("ep-parliament"))
            .showAsAttr(s("European Parliament")).hrefAttr(u("http://www.europarl.europa.eu")));
    // keep a reference to the amended document
    if (documentController != null) {
        String documentId = documentController.getDocument().getDocumentID();
        final boolean isRemote = documentId.startsWith("http://") || documentId.startsWith("https://");
        if (isRemote) {
            references.addActiveRef(
                    new ActiveRef(u(documentId), id(documentId.substring(documentId.lastIndexOf("/") + 1)),
                            s(documentController.getDocument().getName())));
        } else {
            references.addActiveRef(new ActiveRef(u("http://at4am.org/xml/"), id(documentId),
                    s(documentController.getDocument().getName())));
        }
    }

    for (final PersonDTO authorial : authors) {
        final IDSimpleType idSimpleType = new IDSimpleType();
        idSimpleType.setValue("person-" + authorial.getPersonID());

        final StringSimpleType stringSimpleType = new StringSimpleType();
        stringSimpleType.setValue(authorial.getDisplayName());

        final AnyURISimpleType anyURISimpleType = new AnyURISimpleType();
        anyURISimpleType.setValue("urn:lex:eu:parliament:codict:person:" + authorial.getPersonID());

        references.addTLCPerson(
                new TLCPerson().idAttr(idSimpleType).showAsAttr(stringSimpleType).hrefAttr(anyURISimpleType));
    }

    meta.addReferences(references).sourceAttr(u("http://at4am.org/"));

    // preface;
    final P p = new P();
    for (final PersonDTO authorial : authors) {
        final DocProponent docProponent = new DocProponent()
                .refersToAttr(u("#person-" + authorial.getPersonID()));
        docProponent.html(authorial.getDisplayName());
        p.addDocProponent(docProponent);
    }
    root.setPreface(new Preface()).addContainer(
            new Container().idAttr(id("container-" + idGenerator.incrementAndGet())).nameAttr(s("authors")))
            .addP(p);

    // amendment body
    final AmendmentBody amendmentBody = root.setAmendmentBody(new AmendmentBody());

    amendmentBody.addAmendmentHeading(new AmendmentHeading()).addBlock(new Block()).nameAttr(s("heading"))
            .html(TextUtils.capitalize(location));

    // amendment content
    final AmendmentContent amendmentContent = amendmentBody.addAmendmentContent(new AmendmentContent());

    amendmentContent.addBlock(new Block()).nameAttr(s("versionTitle")).html("Text proposed");
    amendmentContent.addBlock(new Block()).nameAttr(s("versionTitle")).html("Amendment");

    final Mod mod = amendmentContent.addBlock(new Block()).nameAttr(s("changeBlock")).addMod(new Mod())
            .idAttr(id("mod-" + idGenerator.incrementAndGet()));

    // original content
    final QuotedStructure quotedStructureOriginal = mod.addQuotedStructure(new QuotedStructure())
            .idAttr(id("quotedStructure-" + idGenerator.incrementAndGet()));

    final com.google.gwt.user.client.Element cloneOriginal = DOM.clone(overlayWidget.asWidget().getElement(),
            false);
    cloneOriginal.setInnerHTML(originalText);
    final OverlayWidget overlayedOriginal = overlayFactory.getAmendableWidget(cloneOriginal);
    quotedStructureOriginal.addOverlayWidget(overlayedOriginal);

    // amendment content
    final QuotedStructure quotedStructureAmendment = mod.addQuotedStructure(new QuotedStructure())
            .idAttr(id("quotedStructure-" + idGenerator.incrementAndGet()));
    final com.google.gwt.user.client.Element clone = DOM.clone(overlayWidget.asWidget().getElement(), false);
    clone.setInnerHTML(amendmentText);
    final OverlayWidget overlayed = overlayFactory.getAmendableWidget(clone);
    if (modifyIds) {
        modifyIds(overlayed);
    }
    quotedStructureAmendment.addOverlayWidget(overlayed);

    // amendment notes
    mod.addAuthorialNote(new AuthorialNote()).idAttr(id("note-" + idGenerator.incrementAndGet())).addP(new P())
            .html(notes);

    // amendment justification

    if (justification != null && !"".equalsIgnoreCase(justification.trim())) {
        final AmendmentJustification amendmentJustification = new AmendmentJustification();
        amendmentJustification.addBlock(new Block()).nameAttr(s("justificationHeading")).html("Justification");
        amendmentJustification.addP(new P()).html(justification);
        amendmentBody.addAmendmentJustification(amendmentJustification);
    }

    akomaNtoso.addOverlayWidget(root);
    return akomaNtoso;
}

From source file:org.nsesa.editor.gwt.an.drafting.client.ui.main.document.DraftingDocumentController.java

License:EUPL

@Override
public void registerListeners() {

    documentScrollToEventHandlerRegistration = clientFactory.getEventBus()
            .addHandler(DocumentScrollToEvent.TYPE, new DocumentScrollToEventHandler() {
                @Override/* ww  w .j  a  v  a2 s  . c  o  m*/
                public void onEvent(DocumentScrollToEvent event) {
                    sourceFileController.scrollTo(event.getTarget(), event.getOffset());
                }
            });

    // forward the resize event
    resizeEventHandlerRegistration = clientFactory.getEventBus().addHandler(ResizeEvent.TYPE,
            new ResizeEventHandler() {
                @Override
                public void onEvent(ResizeEvent event) {
                    documentEventBus.fireEvent(event);
                    view.setDocumentHeight(event.getHeight());
                }
            });

    rteStructureChangedEventHandlerRegistration = clientFactory.getEventBus()
            .addHandler(RTEStructureChangedEvent.TYPE, new RTEStructureChangedEventHandler() {
                @Override
                public void onEvent(final RTEStructureChangedEvent event) {
                    clientFactory.getScheduler().scheduleDeferred(new Scheduler.ScheduledCommand() {
                        @Override
                        public void execute() {
                            handleRTEOverlayWidgetModify(event.getOverlayWidget());
                        }
                    });

                }
            });

    selectionEventHandlerRegistration = clientFactory.getEventBus().addHandler(SelectionEvent.TYPE,
            new SelectionEventHandler() {
                @Override
                public void onEvent(SelectionEvent event) {
                    if (event.getSelection().getRange() != null
                            && !"".equalsIgnoreCase(event.getSelection().getRange().getText().trim())) {
                        setCurrentSelectionRange(event.getSelection().getRange());
                        if (LOG.isLoggable(Level.FINE)) {
                            LOG.fine("Current selection: "
                                    + (currentSelectionRange != null ? currentSelectionRange.getHtmlText()
                                            : "<<null>>"));
                        }
                    }
                }
            });

    overlayWidgetSelectEventHandlerRegistration = documentEventBus.addHandler(OverlayWidgetSelectEvent.TYPE,
            new OverlayWidgetSelectEventHandler() {
                @Override
                public void onEvent(OverlayWidgetSelectEvent event) {
                    final OverlayWidget activeOverlayWidget = event.getOverlayWidget();
                    sourceFileController.setActiveOverlayWidget(activeOverlayWidget);

                    sourceController.setOverlayWidget(activeOverlayWidget);

                    if (activeOverlayWidget != null) {

                        final OverlayWidget block = AkomaNtosoUtil.findEnclosingBlock(activeOverlayWidget);

                        if (block != null) {
                            //actionBarCreatePanelController.setOverlayWidget(block);

                            //actionBarController.attach(block, DraftingDocumentController.this);
                            // actionBarController.setLocation(locator.getLocation(block, document.getLanguageIso(), true));
                            numberingController.setOverlayWidget(block);
                        }

                        pickerController.setOverlayWidget(activeOverlayWidget);
                        pathController.setOverlayWidget(activeOverlayWidget);

                        // set the cursor
                        final Range browserRange = Selection.getBrowserRange();
                        if (browserRange != null) {

                            final OverlayWidgetHolder holder = new OverlayWidgetHolder();
                            activeOverlayWidget.walk(new OverlayWidgetWalker.DefaultOverlayWidgetVisitor() {
                                @Override
                                public boolean visit(OverlayWidget visited) {
                                    if (holder.getOverlayWidget() == null
                                            /* only find the first one */ && visited.getOverlayElement()
                                                    .getClassName().contains("caretPosition")) {
                                        holder.setOverlayWidget(visited);
                                        return false;
                                    }
                                    return true;
                                }
                            });
                            if (holder.getOverlayWidget() == null) {
                                activeOverlayWidget.walk(new OverlayWidgetWalker.DefaultOverlayWidgetVisitor() {
                                    @Override
                                    public boolean visit(OverlayWidget visited) {
                                        if (holder.getOverlayWidget() == null
                                                /* only find the first one */ && activeOverlayWidget != visited) {
                                            if (AkomaNtosoUtil.representsNum(visited)) {
                                                holder.setOverlayWidget(visited.getNextSibling(
                                                        new OverlayWidgetSelector.AnyOverlayWidgetSelector()));
                                            }
                                            return false;
                                        }
                                        return true;
                                    }
                                });
                            }
                            final OverlayWidget toFocus = holder.getOverlayWidget() != null
                                    ? holder.getOverlayWidget()
                                    : activeOverlayWidget;
                            activeOverlayWidget.getOverlayElement().focus();

                            final Text text = NodeUtil.getText(toFocus.getOverlayElement(), true);

                            if (text != null) {
                                final String trimmedContent = text.getData().trim();
                                if (toFocus.getOverlayElement().getClassName().contains("caretPosition")
                                        || (trimmedContent.startsWith("{")) && trimmedContent.endsWith("}")) {
                                    Selection.getSelection().setRange(new Range(new RangeEndPoint(text, true),
                                            new RangeEndPoint(text, false)));
                                }
                            } else {
                                // no text part found? Hmmm ...
                            }

                            // clean up the caret position
                            toFocus.getOverlayElement().removeClassName("caretPosition");
                        }
                    }

                }
            });

    numberingTypeEventHandlerRegistration = documentEventBus.addHandler(OverlayWidgetNumberingTypeEvent.TYPE,
            new OverlayWidgetNumberingTypeEventHandler() {
                @Override
                public void onEvent(OverlayWidgetNumberingTypeEvent event) {
                    event.getOverlayWidget().setOrigin(OverlayWidgetOrigin.GENERATED);
                    setNumbering(event.getOverlayWidget().getParentOverlayWidget(), event.getNumberingType());
                }
            });

    formatEventHandlerRegistration = documentEventBus.addHandler(OverlayWidgetFormatEvent.TYPE,
            new OverlayWidgetFormatEventHandler() {
                @Override
                public void onEvent(OverlayWidgetFormatEvent event) {
                    event.getOverlayWidget().setOrigin(OverlayWidgetOrigin.GENERATED);
                    setFormat(event.getOverlayWidget().getParentOverlayWidget(), event.getFormat());
                }
            });

    // forward the critical error event
    criticalEventHandlerRegistration = documentEventBus.addHandler(CriticalErrorEvent.TYPE,
            new CriticalErrorEventHandler() {
                @Override
                public void onEvent(CriticalErrorEvent event) {
                    clientFactory.getEventBus().fireEvent(event);
                }
            });

    // forward the confirmation event
    confirmationEventHandlerRegistration = documentEventBus.addHandler(ConfirmationEvent.TYPE,
            new ConfirmationEventHandler() {
                @Override
                public void onEvent(ConfirmationEvent event) {
                    clientFactory.getEventBus().fireEvent(event);
                }
            });

    // forward the notification event to the parent event bus
    notificationEventHandlerRegistration = documentEventBus.addHandler(NotificationEvent.TYPE,
            new NotificationEventHandler() {
                @Override
                public void onEvent(NotificationEvent event) {
                    clientFactory.getEventBus().fireEvent(event);
                }
            });

    // handle requests to switch the document tabs
    switchTabEventHandlerRegistration = documentEventBus.addHandler(SwitchTabEvent.TYPE,
            new SwitchTabEventHandler() {
                @Override
                public void onEvent(SwitchTabEvent event) {
                    view.switchToTab(event.getTabIndex());
                }
            });

    documentToggleStructureEventHandler = documentEventBus.addHandler(DocumentToggleStructureEvent.TYPE,
            new DocumentToggleStructureEventHandler() {
                @Override
                public void onEvent(DocumentToggleStructureEvent event) {
                    applyState(StructureViewMode.KEY, new ActiveState(event.isToggle()));
                }
            });

    overlayWidgetModifyHandlerRegistration = documentEventBus.addHandler(OverlayWidgetModifyEvent.TYPE,
            new OverlayWidgetModifyEventHandler() {
                @Override
                public void onEvent(OverlayWidgetModifyEvent event) {
                    documentEventBus.fireEvent(new OverlayWidgetSelectEvent(event.getOverlayWidget(),
                            DraftingDocumentController.this));
                }
            });

    overlayWidgetDeleteHandlerRegistration = documentEventBus.addHandler(OverlayWidgetDeleteEvent.TYPE,
            new OverlayWidgetDeleteEventHandler() {
                @Override
                public void onEvent(OverlayWidgetDeleteEvent event) {
                    handleOverlayWidgetDelete(event.getOverlayWidget());
                }
            });

    overlayWidgetNewEventHandlerRegistration = documentEventBus.addHandler(OverlayWidgetNewEvent.TYPE,
            new OverlayWidgetNewEventHandler() {
                @Override
                public void onEvent(final OverlayWidgetNewEvent event) {

                    final OverlayWidget activeOverlayWidget = sourceFileController.getActiveOverlayWidget();

                    if (AkomaNtosoUtil.representsBlock(activeOverlayWidget)) {
                        OverlayWidget result = event.getChild();
                        result.setOrigin(OverlayWidgetOrigin.GENERATED);
                        OverlaySnippet snippet = overlaySnippetFactory.getSnippet(activeOverlayWidget);
                        if (snippet != null) {
                            overlaySnippetEvaluator.addEvaluator(new DefaultNumEvaluator(clientFactory,
                                    overlayWidgetInjectionStrategy, locator, result,
                                    event.getParentOverlayWidget(), event.getReference()));

                            final String content = snippet.getContent(overlaySnippetEvaluator);
                            if (content != null) {
                                result.getOverlayElement().setInnerHTML(content);

                                result.getChildOverlayWidgets().clear();
                                result = overlayFactory.getAmendableWidget(result.getOverlayElement());

                                overlayWidgetInjectionStrategy.injectAsSibling(activeOverlayWidget, result);

                                result.walk(new OverlayWidgetWalker.DefaultOverlayWidgetVisitor() {
                                    @Override
                                    public boolean visit(OverlayWidget visited) {
                                        //if (AkomaNtosoUtil.representsBlock(visited)) {
                                        visited.setUIListener(sourceFileController);
                                        //}
                                        return super.visit(visited);
                                    }
                                });

                                // make sure we can edit this
                                result.setAmendable(true);
                                markOverlayWidgetAsAmendable(result);

                                documentEventBus.fireEvent(
                                        new OverlayWidgetSelectEvent(result, DraftingDocumentController.this));

                                reCalculateNumbering(activeOverlayWidget.getParentOverlayWidget());
                                redrawOutline(activeOverlayWidget.getRoot());
                            }
                        }
                    }
                }
            });

    // listen for keyboard combos
    keyComboHandlerRegistration = clientFactory.getEventBus().addHandler(KeyComboEvent.TYPE,
            new KeyComboEventHandler() {
                @Override
                public void onEvent(KeyComboEvent event) {
                    event.getNativeEvent().preventDefault();

                    final OverlayWidget activeOverlayWidget = sourceFileController.getActiveOverlayWidget();
                    if (ctrlEnter.equals(event.getKeyCombo())) {

                        // ------------- CTRL + ENTER -------------
                        if (!actionBarCreatePanelControllerPopup.isShowing()) {
                            if (activeOverlayWidget != null) {
                                actionBarCreatePanelController.setOverlayWidget(activeOverlayWidget);
                                actionBarCreatePanelControllerPopup
                                        .showRelativeTo(actionBarController.getView().getChildHandler());
                                actionBarCreatePanelController.getView().asWidget().setVisible(true);
                                actionBarCreatePanelControllerPopup.show();
                                actionBarCreatePanelFocusPanel.setFocus(true);
                            }
                        }

                    } else if (escape.equals(event.getKeyCombo())) {

                        // ------------- Escape -------------
                        if (actionBarCreatePanelControllerPopup.isShowing()) {
                            actionBarCreatePanelControllerPopup.hide();
                            actionBarCreatePanelFocusPanel.setFocus(false);
                        } else {
                            cancelModify();
                        }
                    } else if (ctrlS.equals(event.getKeyCombo())) {

                        // ------------- CTRL + s -------------
                        final String content = formatter
                                .format(sourceFileController.getOverlayWidgets().get(0));
                        serviceFactory.getGwtDocumentService().saveDocumentContent(
                                clientFactory.getClientContext(), document.getDocumentID(), content,
                                new AsyncCallback<Void>() {
                                    @Override
                                    public void onFailure(Throwable caught) {
                                        clientFactory.getEventBus().fireEvent(
                                                new CriticalErrorEvent("Could not save document.", caught));
                                    }

                                    @Override
                                    public void onSuccess(Void result) {
                                        // all fine!
                                        clientFactory.getEventBus().fireEvent(
                                                new NotificationEvent("Document successfully saved."));
                                    }
                                });

                    } else if (downArrow.equals(event.getKeyCombo())) {

                        // ------------- Down arrow -------------
                        if (actionBarCreatePanelControllerPopup.isShowing()) {
                            actionBarCreatePanelFocusPanel.setFocus(true);
                            actionBarCreatePanelController.highlightNext();
                        } else {

                            final OverlayWidget next = activeOverlayWidget != null
                                    ? activeOverlayWidget.next(upDownOverlayWidgetSelector)
                                    : sourceFileController.getOverlayWidgets().get(0);
                            if (next != null) {
                                documentEventBus.fireEvent(
                                        new OverlayWidgetSelectEvent(next, DraftingDocumentController.this));
                                clientFactory.getEventBus().fireEvent(new DocumentScrollToEvent(next.asWidget(),
                                        DraftingDocumentController.this, false, SCROLL_TO_OFFSET));
                            }
                        }

                    } else if (upArrow.equals(event.getKeyCombo())) {

                        // ------------- Up arrow -------------

                        if (actionBarCreatePanelControllerPopup.isShowing()) {
                            actionBarCreatePanelFocusPanel.setFocus(true);
                            actionBarCreatePanelController.highlightPrevious();
                        } else {
                            if (activeOverlayWidget != null) {
                                final OverlayWidget previous = activeOverlayWidget
                                        .previous(upDownOverlayWidgetSelector);
                                if (previous != null) {
                                    documentEventBus.fireEvent(new OverlayWidgetSelectEvent(previous,
                                            DraftingDocumentController.this));
                                    clientFactory.getEventBus()
                                            .fireEvent(new DocumentScrollToEvent(previous.asWidget(),
                                                    DraftingDocumentController.this, false, SCROLL_TO_OFFSET));
                                }
                            }
                        }

                    } else if (enter.equals(event.getKeyCombo())) {

                        // ------------- Single ENTER -------------
                        if (actionBarCreatePanelControllerPopup.isShowing()) {

                            actionBarCreatePanelControllerPopup.hide();
                            // there is no need to scroll into document
                            // clientFactory.getEventBus().fireEvent(new DocumentScrollToEvent(activeOverlayWidget.asWidget(), DraftingDocumentController.this, false, SCROLL_TO_OFFSET));

                            final OverlayWidget selectedSibling = actionBarCreatePanelController
                                    .getSelectedSibling();

                            if (selectedSibling != null) {
                                LOG.info("Selected as sibling: " + selectedSibling);

                                final com.google.gwt.user.client.Element clone = DOM
                                        .clone(selectedSibling.asWidget().getElement(), true);
                                final OverlayWidget cloneSibling = overlayFactory.getAmendableWidget(clone);

                                // number and format get given by the siblings
                                // but they need to be explicitly set to null
                                cloneSibling.setNumberingType(
                                        actionBarCreatePanelController.getSelectedSibling().getNumberingType());
                                cloneSibling.setFormat(
                                        actionBarCreatePanelController.getSelectedSibling().getFormat());

                                documentEventBus.fireEvent(
                                        new OverlayWidgetNewEvent(activeOverlayWidget.getParentOverlayWidget(),
                                                activeOverlayWidget, cloneSibling));

                            }

                            final OverlayWidget selectedChild = actionBarCreatePanelController
                                    .getSelectedChild();

                            if (selectedChild != null) {

                                LOG.info("Selected as child: " + selectedChild);
                                final com.google.gwt.user.client.Element clone = DOM
                                        .clone(selectedChild.asWidget().getElement(), true);
                                final OverlayWidget cloneChild = overlayFactory.getAmendableWidget(clone);
                                cloneChild.setNumberingType(
                                        actionBarCreatePanelController.getSelectedChild().getNumberingType());
                                cloneChild.setFormat(
                                        actionBarCreatePanelController.getSelectedChild().getFormat());

                                documentEventBus.fireEvent(new OverlayWidgetNewEvent(activeOverlayWidget,
                                        activeOverlayWidget, cloneChild));
                            }
                        } else if (activeOverlayWidget != null) {

                            // we might not have selected a block, so go up

                            final OverlayWidget block = AkomaNtosoUtil.findEnclosingBlock(activeOverlayWidget);

                            if (block != null) {
                                OverlayWidget result = overlayFactory
                                        .getAmendableWidget(block.getNamespaceURI(), block.getType());
                                result.setOrigin(OverlayWidgetOrigin.GENERATED);
                                OverlaySnippet snippet = overlaySnippetFactory.getSnippet(block);
                                if (snippet != null) {
                                    overlaySnippetEvaluator.addEvaluator(new DefaultNumEvaluator(clientFactory,
                                            overlayWidgetInjectionStrategy, locator, result,
                                            block.getParentOverlayWidget(), block));

                                    final String content = snippet.getContent(overlaySnippetEvaluator);
                                    if (content != null) {
                                        result.getOverlayElement().setInnerHTML(content);

                                        result.getChildOverlayWidgets().clear();
                                        result = overlayFactory.getAmendableWidget(result.getOverlayElement());

                                        overlayWidgetInjectionStrategy.injectAsSibling(block, result);

                                        result.walk(new OverlayWidgetWalker.DefaultOverlayWidgetVisitor() {
                                            @Override
                                            public boolean visit(OverlayWidget visited) {
                                                //                                            if (AkomaNtosoUtil.representsBlock(visited)) {
                                                visited.setUIListener(sourceFileController);
                                                //                                            }
                                                return super.visit(visited);
                                            }
                                        });

                                        // make sure we can edit this
                                        result.setAmendable(true);
                                        markOverlayWidgetAsAmendable(result);

                                        documentEventBus.fireEvent(new OverlayWidgetSelectEvent(result,
                                                DraftingDocumentController.this));

                                        reCalculateNumbering(block.getParentOverlayWidget());
                                        redrawOutline(block.getRoot());
                                    }
                                }
                            }

                        }
                    } else if (tab.equals(event.getKeyCombo())) {

                        // ------------- Single TAB -------------

                    } else if (delete.equals(event.getKeyCombo())) {

                        // ------------- DELETE -------------
                        if (activeOverlayWidget != null) {
                            handleOverlayWidgetDelete(activeOverlayWidget);
                            restoreFocusOnViewPort();
                        }
                    } else if (altUpArrow.equals(event.getKeyCombo())) {

                        // ------------- CTRL + Up arrow -------------

                        if (activeOverlayWidget != null) {
                            if (mover.canMoveUp(activeOverlayWidget)) {
                                activeOverlayWidget.moveUp();
                                clientFactory.getScheduler().scheduleDeferred(new Scheduler.ScheduledCommand() {
                                    @Override
                                    public void execute() {
                                        documentEventBus.fireEvent(new OverlayWidgetSelectEvent(
                                                activeOverlayWidget, DraftingDocumentController.this));
                                        clientFactory.getEventBus().fireEvent(new DocumentScrollToEvent(
                                                activeOverlayWidget.asWidget(), DraftingDocumentController.this,
                                                false, SCROLL_TO_OFFSET));
                                        // TODO schedule via timer
                                        reCalculateNumbering(activeOverlayWidget.getParentOverlayWidget());
                                        redrawOutline(activeOverlayWidget.getRoot());
                                    }
                                });
                            }
                        }

                    } else if (altDownArrow.equals(event.getKeyCombo())) {

                        // ------------- CTRL + Down arrow -------------

                        if (activeOverlayWidget != null) {
                            if (mover.canMoveDown(activeOverlayWidget)) {
                                activeOverlayWidget.moveDown();
                                clientFactory.getScheduler().scheduleDeferred(new Scheduler.ScheduledCommand() {
                                    @Override
                                    public void execute() {
                                        documentEventBus.fireEvent(new OverlayWidgetSelectEvent(
                                                activeOverlayWidget, DraftingDocumentController.this));
                                        clientFactory.getEventBus().fireEvent(new DocumentScrollToEvent(
                                                activeOverlayWidget.asWidget(), DraftingDocumentController.this,
                                                false, SCROLL_TO_OFFSET));
                                        // TODO schedule via timer
                                        reCalculateNumbering(activeOverlayWidget.getParentOverlayWidget());
                                        redrawOutline(activeOverlayWidget.getRoot());
                                    }
                                });
                            }
                        }

                    }
                }
            });

    draftingToggleEventHandlerRegistration = clientFactory.getEventBus()
            .addHandler(VisualStructureToggleEvent.TYPE, new VisualStructureToggleEventHandler() {
                @Override
                public void onEvent(VisualStructureToggleEvent event) {
                    //inlineEditorController.getRichTextEditor().toggleVisualStructure(event.isShown());
                }
            });
    draftingAttributesToggleEventHandlerRegistration = clientFactory.getEventBus().addHandler(
            VisualStructureAttributesToggleEvent.TYPE, new VisualStructureAttributesToggleEventHandler() {
                @Override
                public void onEvent(VisualStructureAttributesToggleEvent event) {
                    //inlineEditorController.getRichTextEditor().toggleVisualStructureAttributes(event.isShown());
                }
            });
}

From source file:org.nsesa.editor.gwt.dialog.client.ui.handler.create.AmendmentDialogCreateController.java

License:EUPL

/**
 * Validates the content before saving//from w  w  w  .  j a v  a 2 s.  c  o  m
 *
 * @return True if the content is valid
 */
protected boolean validate() {
    //validate the overlay
    String content = view.getAmendmentContent();
    //replace all validation-error class names with empty
    content = content.replaceAll("validation-error", "");
    final com.google.gwt.user.client.Element clone = DOM
            .clone(dialogContext.getOverlayWidget().asWidget().getElement(), false);
    clone.setInnerHTML(content);
    OverlayWidget overlayWidget = overlayFactory.getAmendableWidget(clone);
    ValidationResult validationResult = overlayWidgetValidator.validate(overlayWidget);
    boolean isValid = validationResult.isSuccessful();
    if (!isValid) {
        OverlayWidget invalidWidget = validationResult.getInvalidWidget();
        if (invalidWidget != null) {
            //mark the widget as invalid
            invalidWidget.getOverlayElement().addClassName("validation-error");

            invalidWidget.getOverlayElement().setAttribute("error", validationResult.getErrorMessage());
        } else {
            overlayWidget.getOverlayElement().addClassName("validation-error");
            overlayWidget.getOverlayElement().setAttribute("error", validationResult.getErrorMessage());
        }
        view.setAmendmentContent(overlayWidget.getOverlayElement().getInnerHTML());
    }
    return isValid;
}

From source file:org.nsesa.editor.gwt.dialog.client.ui.handler.modify.AmendmentDialogModifyController.java

License:EUPL

/**
 * Validates the content before saving/*from w w w.  j  a  v  a 2 s .c  om*/
 *
 * @return True if content is valid
 */
protected boolean validate() {
    //validate the overlay
    String content = view.getAmendmentContent();
    //replace all validation-error class names with empty string
    content = content.replaceAll("validation-error", "");
    final com.google.gwt.user.client.Element clone = DOM
            .clone(dialogContext.getOverlayWidget().asWidget().getElement(), false);
    clone.setInnerHTML(content);
    OverlayWidget clonedOverlayWidgetToValidate = overlayFactory.getAmendableWidget(clone);
    ValidationResult validationResult = overlayWidgetValidator.validate(clonedOverlayWidgetToValidate);
    boolean isValid = validationResult.isSuccessful();
    if (!isValid) {
        OverlayWidget invalidWidget = validationResult.getInvalidWidget();
        if (invalidWidget != null) {
            //mark the widget as invalid
            invalidWidget.getOverlayElement().addClassName("validation-error");

            invalidWidget.getOverlayElement().setAttribute("error", validationResult.getErrorMessage());
        } else {
            clonedOverlayWidgetToValidate.getOverlayElement().addClassName("validation-error");
            clonedOverlayWidgetToValidate.getOverlayElement().setAttribute("error",
                    validationResult.getErrorMessage());
        }
        view.setAmendmentContent(clonedOverlayWidgetToValidate.getOverlayElement().getInnerHTML());
        //            view.getRichTextEditor().setOverlayWidget(clonedOverlayWidgetToValidate);
    }
    return isValid;
}

From source file:org.nsesa.editor.gwt.dialog.client.ui.handler.move.action.BeforeAfterActionBarController.java

License:EUPL

protected Element createPlaceHolder(boolean before) {
    Element div = DOM.clone(toMove.asWidget().getElement(), true);
    DOM.sinkEvents(div, Event.MOUSEEVENTS | Event.BUTTON_LEFT);
    DOM.setEventListener(div, createEventListener(div, before));
    div.getStyle().setOpacity(0.2);/*ww  w .  j  a v a 2s . co m*/
    return div;
}

From source file:org.pentaho.gwt.widgets.client.listbox.DefaultListItem.java

License:Open Source License

private void formatWidget(HorizontalPanel panel) {
    panel.sinkEvents(Event.MOUSEEVENTS);

    if (img != null) {
        Image i = new Image(img.getUrl(), img.getOriginLeft(), img.getOriginTop(), img.getWidth(),
                img.getHeight());//  www  .ja va2s. c  o m
        panel.add(i);
        panel.setCellVerticalAlignment(i, HasVerticalAlignment.ALIGN_MIDDLE);
        i.getElement().getStyle().setProperty("marginRight", "5px"); //$NON-NLS-1$ //$NON-NLS-2$
    } else if (extraWidget != null) {
        Element ele = DOM.clone(extraWidget.getElement(), true);
        Widget w = new WrapperWidget(ele);
        panel.add(w);
        panel.setCellVerticalAlignment(w, HasVerticalAlignment.ALIGN_MIDDLE);
        w.getElement().getStyle().setProperty("marginRight", "5px"); //$NON-NLS-1$ //$NON-NLS-2$
    }

    Label label = new Label(text);
    label.getElement().getStyle().setProperty("cursor", "pointer"); //$NON-NLS-1$ //$NON-NLS-2$
    label.setWidth("100%"); //$NON-NLS-1$
    SimplePanel sp = new SimplePanel();
    sp.getElement().getStyle().setProperty("overflowX", "auto"); //$NON-NLS-1$ //$NON-NLS-2$
    sp.add(label);

    panel.add(sp);
    panel.setCellWidth(sp, "100%"); //$NON-NLS-1$
    panel.setCellVerticalAlignment(label, HasVerticalAlignment.ALIGN_MIDDLE);

    ElementUtils.preventTextSelection(panel.getElement());

    //    label.setStylePrimaryName("custom-list-item"); //$NON-NLS-1$
    panel.setWidth("100%"); //$NON-NLS-1$
}

From source file:org.pentaho.gwt.widgets.client.utils.ElementUtils.java

License:Open Source License

public static Rectangle getSize(com.google.gwt.user.client.Element ele) {
    Rectangle r = new Rectangle();
    r.width = ele.getOffsetWidth();//from   ww w .j a  va  2s. c  om
    r.height = ele.getOffsetHeight();

    // If the element is not on the DOM, or not visible, browsers may not be able to calculate the size
    // Clone the element and put it in the "sandbox" to grab the size.
    if (r.width == 0 && r.height == 0) {
        com.google.gwt.user.client.Element e = DOM.clone(ele, true);
        sandbox.getElement().appendChild(e);
        r.width = e.getOffsetWidth();
        r.height = e.getOffsetHeight();

        sandbox.getElement().removeChild(e);
    }
    return r;
}