Search in sources :

Example 16 with IZyEditableObject

use of com.google.security.zynamics.zylib.gui.zygraph.realizers.IZyEditableObject in project binnavi by google.

the class CPasteKeyBehavior method initUndoHistory.

@Override
protected void initUndoHistory() {
    final int x = getCaretEndPosX();
    final int y = getCaretMouseReleasedY();
    final ZyLineContent lineContent = getLineContent(y);
    IZyEditableObject lineFragmentObject = lineContent.getLineFragmentObjectAt(x);
    boolean isNewBehindLineComment = false;
    String text = "";
    m_isAboveComment = isAboveLineComment(y);
    m_isLabelComment = isLabelComment(y);
    if ((x == lineContent.getText().length()) && !isComment(x, y)) {
        m_isBehindComment = true;
        isNewBehindLineComment = true;
        lineFragmentObject = lineContent.getLineObject();
    } else {
        m_isBehindComment = isBehindLineComment(x, y);
    }
    m_editableObject = lineFragmentObject;
    if (lineFragmentObject != null) {
        if (!isNewBehindLineComment) {
            text = lineContent.getText().substring(lineFragmentObject.getStart(), lineFragmentObject.getEnd());
            if (isComment(x, y)) {
                text = getMultiLineComment(y);
            }
        }
        udpateUndolist(getLabelContent(), lineContent.getLineObject().getPersistentModel(), lineFragmentObject, text, m_isAboveComment, m_isBehindComment, m_isLabelComment, getCaretStartPosX(), getCaretMousePressedX(), getCaretMousePressedY(), getCaretEndPosX(), getCaretMouseReleasedX(), getCaretMouseReleasedY());
    }
}
Also used : IZyEditableObject(com.google.security.zynamics.zylib.gui.zygraph.realizers.IZyEditableObject) ZyLineContent(com.google.security.zynamics.zylib.gui.zygraph.realizers.ZyLineContent) Point(java.awt.Point)

Example 17 with IZyEditableObject

use of com.google.security.zynamics.zylib.gui.zygraph.realizers.IZyEditableObject in project binnavi by google.

the class CPasteKeyBehavior method updateUndoHistory.

@Override
protected void updateUndoHistory() {
    if (m_editableObject != null) {
        final int x = getCaretEndPosX();
        final int y = getCaretMouseReleasedY();
        final ZyLineContent lineContent = getLineContent(y);
        final IZyEditableObject lineFragmentObject = lineContent.getLineFragmentObjectAt(x);
        if (lineFragmentObject != null) {
            String text = lineContent.getText().substring(lineFragmentObject.getStart(), lineFragmentObject.getEnd());
            if (isComment(x, y)) {
                text = getMultiLineComment(y);
            }
            udpateUndolist(getLabelContent(), lineContent.getLineObject().getPersistentModel(), lineFragmentObject, text, m_isAboveComment, m_isBehindComment, m_isLabelComment, getCaretStartPosX(), getCaretMousePressedX(), getCaretMousePressedY(), getCaretEndPosX(), getCaretMouseReleasedX(), getCaretMouseReleasedY());
        }
    }
}
Also used : IZyEditableObject(com.google.security.zynamics.zylib.gui.zygraph.realizers.IZyEditableObject) ZyLineContent(com.google.security.zynamics.zylib.gui.zygraph.realizers.ZyLineContent) Point(java.awt.Point)

Example 18 with IZyEditableObject

use of com.google.security.zynamics.zylib.gui.zygraph.realizers.IZyEditableObject in project binnavi by google.

the class CReturnKeyBehavior method updateCaret.

@Override
protected void updateCaret() {
    if ((m_caretY > -1) && isComment(getCaretEndPosX(), m_caretY)) {
        final ZyLineContent nextLineContent = getLineContent(m_caretY);
        final IZyEditableObject lineObject = nextLineContent.getLineFragmentObjectList().get(0);
        int x = 0;
        if (lineObject != null) {
            x = lineObject.getEnd();
        }
        setCaret(x, x, m_caretY, x, x, m_caretY);
    }
}
Also used : IZyEditableObject(com.google.security.zynamics.zylib.gui.zygraph.realizers.IZyEditableObject) ZyLineContent(com.google.security.zynamics.zylib.gui.zygraph.realizers.ZyLineContent)

Example 19 with IZyEditableObject

use of com.google.security.zynamics.zylib.gui.zygraph.realizers.IZyEditableObject in project binnavi by google.

the class CCutKeyBehavior method initUndoHistory.

@Override
protected void initUndoHistory() {
    final int x = getCaretEndPosX();
    final int y = getCaretMouseReleasedY();
    final ZyLineContent lineContent = getLineContent(y);
    final IZyEditableObject lineFragmentObject = lineContent.getLineFragmentObjectAt(x);
    m_editableObject = lineContent.getLineObject();
    if (lineFragmentObject != null) {
        String text = lineContent.getText().substring(lineFragmentObject.getStart(), lineFragmentObject.getEnd());
        m_isAboveComment = isAboveLineComment(y);
        m_isBehindComment = isBehindLineComment(x, y);
        m_isLabelComment = isLabelComment(y);
        if (isComment(x, y)) {
            text = getMultiLineComment(y);
        }
        udpateUndolist(getLabelContent(), lineContent.getLineObject().getPersistentModel(), m_editableObject, text, isAboveLineComment(y), isBehindLineComment(x, y), isLabelComment(y), getCaretStartPosX(), getCaretMousePressedX(), getCaretMousePressedY(), getCaretEndPosX(), getCaretMouseReleasedX(), getCaretMouseReleasedY());
    }
}
Also used : IZyEditableObject(com.google.security.zynamics.zylib.gui.zygraph.realizers.IZyEditableObject) ZyLineContent(com.google.security.zynamics.zylib.gui.zygraph.realizers.ZyLineContent)

Example 20 with IZyEditableObject

use of com.google.security.zynamics.zylib.gui.zygraph.realizers.IZyEditableObject in project binnavi by google.

the class CDelKeyBehavior method updateLabelContent.

@Override
protected void updateLabelContent() {
    if (m_wasSelection) {
        return;
    }
    final int x = getCaretEndPosX();
    final int y = getCaretMouseReleasedY();
    final ZyLineContent lineContent = getLineContent(y);
    final IZyEditableObject editableObject = lineContent.getLineFragmentObjectAt(x);
    if (editableObject == null) {
        return;
    }
    if (isComment(x, y)) {
        if (editableObject.isCommentDelimiter()) {
            return;
        }
        final Point commentEndPoint = getMultiCommentEndPoint(x, y);
        if (y == commentEndPoint.y) {
            if ((x == commentEndPoint.x) || ((x == (commentEndPoint.x - 1)) && lineContent.getText().endsWith("\n"))) {
                return;
            }
        }
        final int textCursor = x - editableObject.getStart();
        final String text = lineContent.getText().substring(editableObject.getStart(), editableObject.getEnd());
        String changedText = text;
        if (textCursor < text.length()) {
            changedText = String.format("%s%s", text.substring(0, textCursor), text.substring(textCursor + 1));
        } else if (isComment(x, y)) {
            if (y < (getLabelContent().getLineCount() - 1)) {
                final ZyLineContent nextLineContent = getLineContent(y + 1);
                if (nextLineContent.getLineObject() == lineContent.getLineObject()) {
                    final IZyEditableObject object = nextLineContent.getLineFragmentObjectAt(0);
                    if ((object != null) && object.isCommentDelimiter()) {
                        changedText = text.substring(0, textCursor - 1);
                    }
                }
            }
        }
        if (isComment(x, y)) {
            changedText = getMultilineComment(y, changedText);
            if (!changedText.endsWith("\r")) {
                changedText += "\r";
            }
        }
        editableObject.update(changedText);
        if (isLabelComment(y)) {
            lineContent.getLineObject().update(changedText);
        } else if (isAboveLineComment(y)) {
            lineContent.getLineObject().updateComment(changedText, ECommentPlacement.ABOVE_LINE);
        } else if (isBehindLineComment(x, y)) {
            lineContent.getLineObject().updateComment(changedText, ECommentPlacement.BEHIND_LINE);
        }
        getLabelContent().getLineEditor().recreateLabelLines(getLabelContent(), lineContent.getLineObject().getPersistentModel());
    } else {
        throw new RuntimeException("Not implemented yet.");
    }
}
Also used : IZyEditableObject(com.google.security.zynamics.zylib.gui.zygraph.realizers.IZyEditableObject) Point(java.awt.Point) ZyLineContent(com.google.security.zynamics.zylib.gui.zygraph.realizers.ZyLineContent) Point(java.awt.Point)

Aggregations

IZyEditableObject (com.google.security.zynamics.zylib.gui.zygraph.realizers.IZyEditableObject)27 ZyLineContent (com.google.security.zynamics.zylib.gui.zygraph.realizers.ZyLineContent)24 Point (java.awt.Point)12 ZyLabelContent (com.google.security.zynamics.zylib.gui.zygraph.realizers.ZyLabelContent)2 ECommentPlacement (com.google.security.zynamics.zylib.gui.zygraph.realizers.ECommentPlacement)1