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