Example usage for com.google.gwt.dom.client Text getData

List of usage examples for com.google.gwt.dom.client Text getData

Introduction

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

Prototype

@Override
    public String getData() 

Source Link

Usage

From source file:com.bfr.client.selection.HtmlBBox.java

License:Apache License

/**
 * Create a bounding box the size of the text between the two offsets of
 * the given textNode.  Note that this temporarily modifies the document
 * to excise the sub-text into its own span element, which is then used
 * to generate the bounding box./*from w w w  .  j a va2s. c  o m*/
 *
 * @param textNode Text to create bounding box around
 * @param offset1  Starting offset to get bounding box from
 * @param offset2  Ending offset to get bounding box from
 * @return a new bounding box
 */
public static HtmlBBox getBoundingBox(Text textNode, int offset1, int offset2) {
    HtmlBBox res;

    String text = textNode.getData();
    int len = text.length();
    if ((offset1 == 0) && (offset2 == len)) {
        // Shortcut
        return getBoundingBox(textNode);
    }
    if ((offset2 > len) || (offset1 > offset2)) {
        return null;
    }

    // If this is a cursor, we still need to outline one character
    boolean isCursor = (offset1 == offset2);
    boolean posRight = false;
    if (isCursor) {
        if (offset1 == len) {
            offset1--;
            posRight = true;
        } else {
            offset2++;
        }
    }

    // Create 2 or 3 spans of this text, so we can measure
    List<Element> nodes = new ArrayList<Element>(3);
    Element tmpSpan, measureSpan;
    if (offset1 > 0) {
        // First
        tmpSpan = DOM.createSpan();
        tmpSpan.setInnerHTML(text.substring(0, offset1));
        nodes.add(tmpSpan);
    }

    // Middle, the one we measure
    measureSpan = DOM.createSpan();
    measureSpan.setInnerHTML(text.substring(offset1, offset2));
    nodes.add(measureSpan);

    if (offset2 < (len - 1)) {
        // Last
        tmpSpan = DOM.createSpan();
        tmpSpan.setInnerHTML(text.substring(offset2 + 1));
        nodes.add(tmpSpan);
    }

    Node parent = textNode.getParentNode();

    for (Node node : nodes) {
        parent.insertBefore(node, textNode);
    }

    parent.removeChild(textNode);

    if (isCursor) {
        // Just make a 0-width version, depending on left or right
        res = new HtmlBBox(measureSpan.getAbsoluteLeft() + (posRight ? measureSpan.getOffsetWidth() : 0),
                measureSpan.getAbsoluteTop(), 0, measureSpan.getOffsetHeight());
    } else {
        res = new HtmlBBox(measureSpan);
    }

    parent.insertBefore(textNode, nodes.get(0));

    for (Node node : nodes) {
        parent.removeChild(node);
    }

    return res;
}

From source file:com.bfr.client.selection.impl.RangeImplIE6.java

License:Apache License

/**
 * Since there's no good delete for an arbitrary range, simply replace it
 * with this text that nobody would use, then go find it so we can
 * delete or replace it in other functions.  This depends on IE creating a
 * single text element that includes exactly this string (and no user also
 * has this exact text on their page..)//from  w w w  .j av a2 s  .  c  o  m
 * <p/>
 * An alternative but far more complicated method would be to try to do
 * this via setting the selection, doing the delete/replace, and then
 * restoring the selection.
 *
 * @param range The range to replace with a text node
 * @return the text node that replaced the contents of range
 */
private Text placeholdRange(JSRange range) {
    // Paranoid, include a random number to reduce chance this string
    // would occur in the text..
    String replaceString = REPLACING_STRING + (int) (Integer.MAX_VALUE * Math.random());

    Element parent = getCommonAncestor(range);
    placeholdPaste(range, replaceString);

    Text res;
    for (res = Range.getAdjacentTextElement(parent, true); res != null; res = Range.getAdjacentTextElement(res,
            true)) {
        if (replaceString.equals(res.getData())) {
            break;
        }
    }
    return res;
}

From source file:com.bfr.client.selection.RangeEndPoint.java

License:Apache License

private static FindLocRes findLocation(Document doc, Text text, int relX, int relY) {
    FindLocRes res = null;//from ww  w. j a v  a  2 s  . c o m

    String str = text.getData();
    if ((str == null) || str.isEmpty()) {
        // Theoretically it could be in here still..
    } else {
        // Insert 2 spans and do a binary search to find the single
        // character that fits
        Element span1 = doc.createSpanElement();
        Element span2 = doc.createSpanElement();
        Element span3 = doc.createSpanElement();
        Element span4 = doc.createSpanElement();

        Element parent = text.getParentElement();
        parent.insertBefore(span1, text);
        parent.insertBefore(span2, text);
        parent.insertBefore(span3, text);
        parent.insertBefore(span4, text);
        parent.removeChild(text);

        try {
            int len = str.length() / 2;
            span2.setInnerText(str.substring(0, len));
            span3.setInnerText(str.substring(len));

            res = findLocation(text, span1, span2, span3, span4, relX, relY);
        } catch (Exception ex) {
        } finally {
            parent.insertAfter(text, span4);
            parent.removeChild(span1);
            parent.removeChild(span2);
            parent.removeChild(span3);
            parent.removeChild(span4);
        }
    }

    return res;
}

From source file:com.dom_distiller.client.SimpleContentHandler.java

License:Open Source License

@Override
public void textNode(Text textNode) {
    documentStringBuilder.append(textNode.getData());
}

From source file:de.l3s.boilerpipe.sax.BoilerpipeHTMLContentHandler.java

License:Open Source License

@Override
public void textNode(Text textNode) {
    String text = textNode.getData();

    char[] ch = text.toCharArray();
    int start = 0;
    int length = text.length();

    if (flush) {/*from   w w w  . j av a 2s  .c om*/
        flushBlock();
        flush = false;
    }

    if (inIgnorableElement != 0) {
        return;
    }

    char c;
    boolean startWhitespace = false;
    boolean endWhitespace = false;
    if (length == 0) {
        return;
    }

    // Convert all whitespaces to spaces.
    final int end = start + length;
    for (int i = start; i < end; i++) {
        if (StringUtil.isWhitespace(ch[i])) {
            ch[i] = ' ';
        }
    }
    // Left-trim the string.
    while (start < end) {
        c = ch[start];
        if (c == ' ') {
            startWhitespace = true;
            start++;
            length--;
        } else {
            break;
        }
    }
    // Right-trim the string.
    while (length > 0) {
        c = ch[start + length - 1];
        if (c == ' ') {
            endWhitespace = true;
            length--;
        } else {
            break;
        }
    }
    // Add a space if needed.
    if (length == 0) {
        if (startWhitespace || endWhitespace) {
            if (!sbLastWasWhitespace) {
                textBuffer.append(' ');
                tokenBuffer.append(' ');
            }
            sbLastWasWhitespace = true;
        } else {
            // This appears to be unreachable since the string is 0-length
            // to start, we trimmed and it's 0-length now.
            // TODO(yfriedman): Consider ripping out this whole function
            // and simplifying with the parent div's innerText.
            sbLastWasWhitespace = false;
        }
        allTextElements.add(textNode);
        return;
    }
    if (startWhitespace) {
        if (!sbLastWasWhitespace) {
            textBuffer.append(' ');
            tokenBuffer.append(' ');
        }
    }

    if (blockTagLevel == -1) {
        blockTagLevel = tagLevel;
    }

    textBuffer.append(ch, start, length);
    tokenBuffer.append(ch, start, length);
    if (endWhitespace) {
        textBuffer.append(' ');
        tokenBuffer.append(' ');
    }

    sbLastWasWhitespace = endWhitespace;

    nonWhitespaceTextElements.add(textNode);
    allTextElements.add(textNode);
}

From source file:org.chromium.distiller.webdocument.WebTextBuilder.java

License:Open Source License

public void textNode(Text textNode, int tagLevel) {
    String text = textNode.getData();

    if (text.isEmpty()) {
        return;/*from   w w  w  . ja v a2  s  .co  m*/
    }

    textBuffer += text;
    allTextNodes.add(textNode);

    if (StringUtil.isStringAllWhitespace(text)) {
        return;
    }

    int thisWords = StringUtil.countWords(text);
    numWords += thisWords;
    if (inAnchor) {
        numAnchorWords += thisWords;
    }

    lastNonWhitespaceNode = allTextNodes.size() - 1;
    if (firstNonWhitespaceNode < firstNode) {
        firstNonWhitespaceNode = lastNonWhitespaceNode;
    }

    if (blockTagLevel == -1) {
        blockTagLevel = tagLevel;
    }
}

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//from  w  w w .  ja v a2  s. c  om
                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.nuxeo.ecm.platform.annotations.gwt.client.view.decorator.AnnoteaDecoratorVisitor.java

License:Apache License

private void processNode(Node node) {
    if (!(node.getNodeType() == Node.TEXT_NODE)) {
        if (node.getNodeName().equalsIgnoreCase("td")) {
            textToAnnotate -= 1;//from  w ww  . j  a  v a 2 s .c  o m
        }
        return;
    }
    Text text = (Text) node;
    Node parent = text.getParentNode();
    String data = text.getData();
    processDecoratedNode(node, data, parent);
    node.getParentNode().removeChild(node);
}

From source file:org.nuxeo.ecm.platform.annotations.gwt.client.view.decorator.AnnoteaDecoratorVisitor.java

License:Apache License

private void processToFirstNode(Node node) {
    if (!(node.getNodeType() == Node.TEXT_NODE)) {
        return;//from   w  ww  .ja  v  a  2  s .  c om
    }
    Text text = (Text) node;
    String data = text.getData();
    if (data.length() < offset) {
        offset -= data.length();
        return;
    }
    decorating = true;
    Node parent = text.getParentNode();
    if (data.endsWith(" ")) {
        lastCharIsSpace = true;
    }
    String notInData = data.substring(0, offset);
    text.setData(notInData);
    processDecoratedNode(node, data.substring(offset), parent);
}

From source file:org.nuxeo.ecm.platform.annotations.gwt.client.view.decorator.NuxeoDecoratorVisitor.java

License:Apache License

protected void processToFirstNode() {
    Log.debug("Decorator -- processToFirstNode: " + currentNode.getNodeName());
    if (!(currentNode.getNodeType() == Node.TEXT_NODE)) {
        return;/* w w  w. ja va2 s .  c  o  m*/
    }
    Text text = (Text) currentNode;
    String data = text.getData();
    Log.debug("Decorator -- text data before: " + data);
    data = Utils.removeWhitespaces(data, currentNode);
    Log.debug("Decorator -- text data after: " + data);
    if (data.length() < startOffset) {
        startOffset -= data.length();
        if (startNode.equals(endNode)) {
            endOffset -= data.length();
        }
        return;
    }
    decorating = true;

    String notInData = data.substring(0, startOffset);
    decorateText(data.substring(startOffset));
    text.setData(notInData);
}