Search in sources :

Example 31 with ZyLineContent

use of com.google.security.zynamics.zylib.gui.zygraph.realizers.ZyLineContent 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 32 with ZyLineContent

use of com.google.security.zynamics.zylib.gui.zygraph.realizers.ZyLineContent 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 33 with ZyLineContent

use of com.google.security.zynamics.zylib.gui.zygraph.realizers.ZyLineContent 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)

Example 34 with ZyLineContent

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

the class CDelKeyBehavior method updateUndoHistory.

@Override
protected void updateUndoHistory() {
    final int x = getCaretEndPosX();
    final int y = getCaretMouseReleasedY();
    final ZyLineContent lineContent = getLineContent(y);
    final IZyEditableObject lineFragmentObject = lineContent.getLineFragmentObjectAt(x);
    String text = "";
    if (lineFragmentObject != null) {
        text = lineContent.getText().substring(lineFragmentObject.getStart(), lineFragmentObject.getEnd());
        if (isComment(x, y)) {
            text = getMultiLineComment(y);
        }
        udpateUndolist(getLabelContent(), lineContent.getLineObject().getPersistentModel(), m_editableObject, 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 35 with ZyLineContent

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

the class CDelKeyBehavior method getMultiCommentEndPoint.

private Point getMultiCommentEndPoint(final int lineXPos, final int lineYPos) {
    if (isComment(lineXPos, lineYPos)) {
        final ZyLineContent lineContent = getLineContent(lineYPos);
        int x = lineContent.getLineFragmentObjectList().get(lineContent.getLineFragmentObjectList().size() - 1).getEnd();
        int y = lineYPos;
        for (int index = lineYPos + 1; index <= getLabelContent().getLastLineIndexOfModelAt(lineYPos); ++index) {
            final ZyLineContent nextLineContent = getLineContent(index);
            final int editableObjectSize = nextLineContent.getLineFragmentObjectList().size();
            final IZyEditableObject firstEditableObject = nextLineContent.getLineFragmentObjectAt(0);
            if (firstEditableObject != null) {
                if (firstEditableObject.isCommentDelimiter()) {
                    x = nextLineContent.getLineFragmentObjectAt(editableObjectSize - 1).getEnd();
                    y = index;
                }
            } else {
                // End of above line comment
                break;
            }
        }
        return new Point(x, y);
    }
    return null;
}
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

ZyLineContent (com.google.security.zynamics.zylib.gui.zygraph.realizers.ZyLineContent)56 IZyEditableObject (com.google.security.zynamics.zylib.gui.zygraph.realizers.IZyEditableObject)24 Point (java.awt.Point)15 GraphSearcher (com.google.security.zynamics.binnavi.yfileswrap.Gui.GraphWindows.Searchers.Text.Model.GraphSearcher)8 NaviEdge (com.google.security.zynamics.binnavi.yfileswrap.zygraph.NaviEdge)8 NaviNode (com.google.security.zynamics.binnavi.yfileswrap.zygraph.NaviNode)8 ZyNormalNodeRealizer (com.google.security.zynamics.zylib.yfileswrap.gui.zygraph.realizers.ZyNormalNodeRealizer)8 Test (org.junit.Test)8 ZyLabelContent (com.google.security.zynamics.zylib.gui.zygraph.realizers.ZyLabelContent)5 CStyleRunData (com.google.security.zynamics.zylib.gui.zygraph.realizers.CStyleRunData)3 IZyNodeRealizer (com.google.security.zynamics.zylib.yfileswrap.gui.zygraph.realizers.IZyNodeRealizer)3 INaviFunction (com.google.security.zynamics.binnavi.disassembly.INaviFunction)2 UnrelocatedAddress (com.google.security.zynamics.binnavi.disassembly.UnrelocatedAddress)2 ArrayList (java.util.ArrayList)2 MockSqlProvider (com.google.security.zynamics.binnavi.Database.MockClasses.MockSqlProvider)1 MaybeNullException (com.google.security.zynamics.binnavi.Exceptions.MaybeNullException)1 IComment (com.google.security.zynamics.binnavi.Gui.GraphWindows.CommentDialogs.Interfaces.IComment)1 CTag (com.google.security.zynamics.binnavi.Tagging.CTag)1 DefaultAddressConverter (com.google.security.zynamics.binnavi.debug.debugger.DefaultAddressConverter)1 IDebugger (com.google.security.zynamics.binnavi.debug.debugger.interfaces.IDebugger)1