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());
}
}
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());
}
}
}
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);
}
}
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());
}
}
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.");
}
}
Aggregations