use of org.exbin.deltahex.SelectionRange in project deltahex-java by exbin.
the class DeltaHexEditorBasic method postInit.
private void postInit() {
codeArea.setComponentPopupMenu(mainPopupMenu);
setIconImage(new javax.swing.ImageIcon(getClass().getResource("/org/exbin/deltahex/editor/basic/resources/icons/icon.png")).getImage());
undoHandler.addUndoUpdateListener(new BinaryDataUndoUpdateListener() {
@Override
public void undoCommandPositionChanged() {
updateUndoState();
codeArea.repaint();
}
@Override
public void undoCommandAdded(@Nonnull BinaryDataCommand command) {
updateUndoState();
codeArea.repaint();
}
});
((EditationModeCapable) codeArea.getWorker()).addEditationModeChangedListener(new EditationModeChangedListener() {
@Override
public void editationModeChanged(EditationMode editationMode) {
switch(editationMode) {
case INSERT:
{
editationModeLabel.setText("INS");
break;
}
case OVERWRITE:
{
editationModeLabel.setText("OVR");
break;
}
default:
{
throw new IllegalStateException("Unexpected editation mode " + editationMode.name());
}
}
}
});
((CaretCapable) codeArea.getWorker()).addCaretMovedListener(new CaretMovedListener() {
@Override
public void caretMoved(CaretPosition caretPosition) {
positionLabel.setText(caretPosition.getDataPosition() + ":" + caretPosition.getCodeOffset());
}
});
((SelectionCapable) codeArea.getWorker()).addSelectionChangedListener(new SelectionChangedListener() {
@Override
public void selectionChanged(SelectionRange selection) {
updateClipboardState();
}
});
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.addFlavorListener(new FlavorListener() {
@Override
public void flavorsChanged(FlavorEvent e) {
updateClipboardState();
}
});
updateUndoState();
updateClipboardState();
openFileButton.setText("Open");
}
use of org.exbin.deltahex.SelectionRange in project deltahex-java by exbin.
the class DefaultCodeAreaCommandHandler method copyAsCode.
@Override
public void copyAsCode() {
SelectionRange selection = ((SelectionCapable) codeArea.getWorker()).getSelection();
if (!selection.isEmpty()) {
BinaryData data = codeArea.getData();
if (data == null) {
return;
}
long first = selection.getFirst();
long last = selection.getLast();
BinaryData copy = data.copy(first, last - first + 1);
CodeType codeType = ((CodeTypeCapable) codeArea.getWorker()).getCodeType();
CodeCharactersCase charactersCase = ((CodeCharactersCaseCapable) codeArea.getWorker()).getCodeCharactersCase();
CodeAreaUtils.CodeDataClipboardData binaryData = new CodeAreaUtils.CodeDataClipboardData(copy, binaryDataFlavor, codeType, charactersCase);
setClipboardContent(binaryData);
}
}
use of org.exbin.deltahex.SelectionRange in project deltahex-java by exbin.
the class DefaultCodeAreaCommandHandler method updateSelection.
public void updateSelection(boolean selecting, @Nonnull CaretPosition caretPosition) {
DefaultCodeAreaCaret caret = (DefaultCodeAreaCaret) ((CaretCapable) codeArea.getWorker()).getCaret();
SelectionRange selection = ((SelectionCapable) codeArea.getWorker()).getSelection();
if (selecting) {
((SelectionCapable) codeArea.getWorker()).setSelection(selection.getStart(), caret.getDataPosition());
} else {
((SelectionCapable) codeArea.getWorker()).setSelection(caret.getDataPosition(), caret.getDataPosition());
}
}
use of org.exbin.deltahex.SelectionRange in project deltahex-java by exbin.
the class DefaultCodeAreaCommandHandler method deleteSelection.
private void deleteSelection() {
BinaryData data = codeArea.getData();
if (data == null) {
return;
}
if (!(data instanceof EditableBinaryData)) {
throw new IllegalStateException("Data is not editable");
}
SelectionRange selection = ((SelectionCapable) codeArea.getWorker()).getSelection();
if (selection.isEmpty()) {
return;
}
long first = selection.getFirst();
long last = selection.getLast();
((EditableBinaryData) data).remove(first, last - first + 1);
codeArea.clearSelection();
DefaultCodeAreaCaret caret = (DefaultCodeAreaCaret) ((CaretCapable) codeArea.getWorker()).getCaret();
caret.setCaretPosition(first);
revealCursor();
updateScrollBars();
}
use of org.exbin.deltahex.SelectionRange in project deltahex-java by exbin.
the class DefaultCodeAreaCommandHandler method copy.
@Override
public void copy() {
SelectionRange selection = ((SelectionCapable) codeArea.getWorker()).getSelection();
if (!selection.isEmpty()) {
BinaryData data = codeArea.getData();
if (data == null) {
return;
}
long first = selection.getFirst();
long last = selection.getLast();
BinaryData copy = data.copy(first, last - first + 1);
CodeAreaUtils.BinaryDataClipboardData binaryData = new CodeAreaUtils.BinaryDataClipboardData(copy, binaryDataFlavor);
setClipboardContent(binaryData);
}
}
Aggregations