Skip to content

Commit d99fc33

Browse files
committed
Minor fixes - 34
1 parent 59c89a6 commit d99fc33

9 files changed

Lines changed: 54 additions & 34 deletions

File tree

modules/bined-core/src/main/java/org/exbin/bined/CodeAreaUtils.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
/**
2727
* Binary editor component utilities.
2828
*
29-
* @version 0.2.0 2019/08/23
29+
* @version 0.2.0 2021/08/26
3030
* @author ExBin Project (https://exbin.org)
3131
*/
3232
@ParametersAreNonnullByDefault
@@ -37,6 +37,7 @@ public class CodeAreaUtils {
3737
private static final int CODE_BUFFER_LENGTH = 16;
3838

3939
public static final String MIME_CLIPBOARD_BINARY = "application/octet-stream";
40+
public static final String CONTENT_DATA_ERROR = "Content data is null";
4041

4142
private CodeAreaUtils() {
4243
}
@@ -475,6 +476,11 @@ public static void requireNonNull(Object... objects) {
475476
}
476477
}
477478

479+
@Nonnull
480+
public static <T> T requireNonNullContentData(@Nullable T object) {
481+
return Objects.requireNonNull(object, CONTENT_DATA_ERROR);
482+
}
483+
478484
public static void throwInvalidTypeException(Enum<?> enumObject) {
479485
throw getInvalidTypeException(enumObject);
480486
}

modules/bined-core/src/main/java/org/exbin/bined/basic/BasicCodeAreaScrolling.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ private int recomputeScrollViewWidth(int dataViewWidth, int characterWidth, int
132132
break;
133133
}
134134
case CHARACTER: {
135-
int charsPerDataView = (dataViewWidth + characterWidth - 1) / characterWidth;
135+
int charsPerDataView = dataViewWidth / characterWidth;
136136
scrollViewWidth = dataViewWidth + (charsPerRow - charsPerDataView);
137137
changeHorizontalExtentDifference(dataViewWidth - charsPerDataView);
138138
break;
@@ -166,7 +166,7 @@ private int recomputeScrollViewHeight(int dataViewHeight, int rowHeight, long ro
166166
changeVerticalExtentDifference(0);
167167
} else {
168168
scrollBarVerticalScale = ScrollBarVerticalScale.NORMAL;
169-
int rowsPerDataView = (dataViewHeight + rowHeight - 1) / rowHeight;
169+
int rowsPerDataView = dataViewHeight / rowHeight;
170170
scrollViewHeight = (int) (dataViewHeight + (rowsPerData - rowsPerDataView));
171171
changeVerticalExtentDifference(dataViewHeight - rowsPerDataView);
172172
}

modules/bined-javafx/src/main/java/org/exbin/bined/javafx/basic/DefaultCodeAreaCommandHandler.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ private void pressedCharAsCode(char keyChar) {
300300
value = Character.toLowerCase(keyChar) - 'a' + 10;
301301
}
302302

303-
BinaryData data = CodeAreaUtils.requireNonNull(codeArea.getContentData(), "Content data is null");
303+
BinaryData data = CodeAreaUtils.requireNonNullContentData(codeArea.getContentData());
304304
EditOperation editOperation = ((EditModeCapable) codeArea).getActiveOperation();
305305
if (editMode == EditMode.EXPANDING && editOperation == EditOperation.INSERT) {
306306
if (codeOffset > 0) {
@@ -366,7 +366,7 @@ private void pressedCharInPreview(char keyChar) {
366366
deleteSelection();
367367
}
368368

369-
BinaryData data = CodeAreaUtils.requireNonNull(codeArea.getContentData(), "Content data is null");
369+
BinaryData data = CodeAreaUtils.requireNonNullContentData(codeArea.getContentData());
370370
EditOperation editOperation = ((EditModeCapable) codeArea).getActiveOperation();
371371
if ((editMode == EditMode.EXPANDING && editOperation == EditOperation.OVERWRITE) || editMode == EditMode.INPLACE) {
372372
if (dataPosition < codeArea.getDataSize()) {
@@ -389,7 +389,7 @@ private void setCodeValue(int value) {
389389
CodeAreaCaretPosition caretPosition = ((CaretCapable) codeArea).getCaret().getCaretPosition();
390390
long dataPosition = caretPosition.getDataPosition();
391391
int codeOffset = caretPosition.getCodeOffset();
392-
BinaryData data = CodeAreaUtils.requireNonNull(codeArea.getContentData(), "Content data is null");
392+
BinaryData data = CodeAreaUtils.requireNonNullContentData(codeArea.getContentData());
393393
CodeType codeType = getCodeType();
394394
byte byteValue = data.getByte(dataPosition);
395395
byte outputValue = CodeAreaUtils.setCodeValue(byteValue, value, codeOffset, codeType);
@@ -450,7 +450,7 @@ public void deletePressed() {
450450
codeArea.notifyDataChanged();
451451
revealCursor();
452452
} else {
453-
BinaryData data = CodeAreaUtils.requireNonNull(codeArea.getContentData(), "Content data is null");
453+
BinaryData data = CodeAreaUtils.requireNonNullContentData(codeArea.getContentData());
454454
DefaultCodeAreaCaret caret = (DefaultCodeAreaCaret) ((CaretCapable) codeArea).getCaret();
455455
long dataPosition = caret.getDataPosition();
456456
if (dataPosition < codeArea.getDataSize()) {
@@ -575,7 +575,7 @@ public void paste() {
575575
return;
576576
}
577577

578-
BinaryData data = CodeAreaUtils.requireNonNull(codeArea.getContentData(), "Content data is null");
578+
BinaryData data = CodeAreaUtils.requireNonNullContentData(codeArea.getContentData());
579579
EditMode editMode = ((EditModeCapable) codeArea).getEditMode();
580580
EditOperation editOperation = ((EditModeCapable) codeArea).getActiveOperation();
581581
try {

modules/bined-operation-swing/src/main/java/org/exbin/bined/operation/swing/CodeAreaOperationCommandHandler.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@
8080
/**
8181
* Command handler for undo/redo aware binary editor editing.
8282
*
83-
* @version 0.2.0 2021/07/28
83+
* @version 0.2.0 2021/08/26
8484
* @author ExBin Project (https://exbin.org)
8585
*/
8686
@ParametersAreNonnullByDefault
@@ -125,7 +125,7 @@ public CodeAreaOperationCommandHandler(CodeAreaCore codeArea, BinaryDataUndoHand
125125
try {
126126
binaryDataFlavor = new DataFlavor(CodeAreaUtils.MIME_CLIPBOARD_BINARY);
127127
} catch (ClassNotFoundException ex) {
128-
Logger.getLogger(DefaultCodeAreaCommandHandler.class.getName()).log(Level.SEVERE, null, ex);
128+
Logger.getLogger(CodeAreaOperationCommandHandler.class.getName()).log(Level.SEVERE, null, ex);
129129
}
130130
try {
131131
binedDataFlavor = new DataFlavor(BINED_CLIPBOARD_MIME);
@@ -936,8 +936,8 @@ public void selectAll() {
936936

937937
@Override
938938
public void clearSelection() {
939-
SelectionRange selection = ((SelectionCapable) codeArea).getSelection();
940-
((SelectionCapable) codeArea).setSelection(selection.getStart(), selection.getStart());
939+
long dataPosition = ((CaretCapable) codeArea).getCaretPosition().getDataPosition();
940+
((SelectionCapable) codeArea).setSelection(dataPosition, dataPosition);
941941
}
942942

943943
public void updateSelection(SelectingMode selectingMode, CodeAreaCaretPosition caretPosition) {
@@ -1018,16 +1018,16 @@ public void execute() throws BinaryDataOperationException {
10181018
@Override
10191019
public void redo() throws BinaryDataOperationException {
10201020
removeCommand.redo();
1021-
codeArea.clearSelection();
10221021
((CaretCapable) codeArea).setCaretPosition(position);
1022+
clearSelection();
10231023
((ScrollingCapable) codeArea).revealCursor();
10241024
codeArea.notifyDataChanged();
10251025
}
10261026

10271027
@Override
10281028
public void undo() throws BinaryDataOperationException {
10291029
removeCommand.undo();
1030-
codeArea.clearSelection();
1030+
clearSelection();
10311031
((CaretCapable) codeArea).setCaretPosition(position + size);
10321032
((ScrollingCapable) codeArea).revealCursor();
10331033
codeArea.notifyDataChanged();
@@ -1043,6 +1043,11 @@ public CodeAreaCommandType getType() {
10431043
public boolean canUndo() {
10441044
return true;
10451045
}
1046+
1047+
private void clearSelection() {
1048+
long dataPosition = ((CaretCapable) codeArea).getCaretPosition().getDataPosition();
1049+
((SelectionCapable) codeArea).setSelection(dataPosition, dataPosition);
1050+
}
10461051
}
10471052

10481053
@Nonnull

modules/bined-swing-extended/src/main/java/org/exbin/bined/swing/extended/ExtendedCodeAreaScrollPane.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ private void init() {
7676
setOpaque(false);
7777
setInheritsPopupMenu(true);
7878
setViewportBorder(null);
79+
// TODO: Try to use setColumnHeader and setRowHeader
80+
7981
verticalScrollBar.setIgnoreRepaint(true);
8082
verticalScrollBar.addAdjustmentListener(new VerticalAdjustmentListener());
8183
verticalScrollBar.setModel(verticalScrollBarModel);

modules/bined-swing-extended/src/main/java/org/exbin/bined/swing/extended/ExtendedCodeAreaScrolling.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,13 +141,13 @@ private int recomputeScrollViewWidth(int dataViewWidth, int characterWidth, int
141141
break;
142142
}
143143
case CHARACTER: {
144-
int charsPerDataView = (dataViewWidth + characterWidth - 1) / characterWidth;
144+
int charsPerDataView = dataViewWidth / characterWidth;
145145
scrollViewWidth = dataViewWidth + (((halfCharsPerRow + 1) / 2) - charsPerDataView);
146146
changeHorizontalExtentDifference(dataViewWidth - charsPerDataView);
147147
break;
148148
}
149149
case HALF_CHARACTER: {
150-
int halfCharsPerDataView = (dataViewWidth + (characterWidth / 2) - 1) / (characterWidth / 2);
150+
int halfCharsPerDataView = dataViewWidth / (characterWidth / 2);
151151
scrollViewWidth = dataViewWidth + (halfCharsPerRow - halfCharsPerDataView);
152152
changeHorizontalExtentDifference(dataViewWidth - halfCharsPerDataView);
153153
break;
@@ -181,7 +181,7 @@ private int recomputeScrollViewHeight(int dataViewHeight, int rowHeight, long ro
181181
changeVerticalExtentDifference(0);
182182
} else {
183183
scrollBarVerticalScale = ScrollBarVerticalScale.NORMAL;
184-
int rowsPerDataView = (dataViewHeight + rowHeight - 1) / rowHeight;
184+
int rowsPerDataView = dataViewHeight / rowHeight;
185185
scrollViewHeight = (int) (dataViewHeight + (rowsPerData - rowsPerDataView));
186186
changeVerticalExtentDifference(dataViewHeight - rowsPerDataView);
187187
}

modules/bined-swing/src/main/java/org/exbin/bined/swing/basic/DefaultCodeAreaCommandHandler.java

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
/**
6262
* Default binary editor command handler.
6363
*
64-
* @version 0.2.0 2021/07/28
64+
* @version 0.2.0 2021/08/26
6565
* @author ExBin Project (https://exbin.org)
6666
*/
6767
@ParametersAreNonnullByDefault
@@ -304,7 +304,7 @@ private void pressedCharAsCode(char keyChar) {
304304
value = Character.toLowerCase(keyChar) - 'a' + 10;
305305
}
306306

307-
BinaryData data = CodeAreaUtils.requireNonNull(codeArea.getContentData(), "Content data is null");
307+
BinaryData data = CodeAreaUtils.requireNonNullContentData(codeArea.getContentData());
308308
EditOperation editOperation = ((EditModeCapable) codeArea).getActiveOperation();
309309
if (editMode == EditMode.EXPANDING && editOperation == EditOperation.INSERT) {
310310
if (codeOffset > 0) {
@@ -370,7 +370,7 @@ private void pressedCharInPreview(char keyChar) {
370370
deleteSelection();
371371
}
372372

373-
BinaryData data = CodeAreaUtils.requireNonNull(codeArea.getContentData(), "Content data is null");
373+
BinaryData data = CodeAreaUtils.requireNonNullContentData(codeArea.getContentData());
374374
EditOperation editOperation = ((EditModeCapable) codeArea).getActiveOperation();
375375
if ((editMode == EditMode.EXPANDING && editOperation == EditOperation.OVERWRITE) || editMode == EditMode.INPLACE) {
376376
if (dataPosition < codeArea.getDataSize()) {
@@ -393,7 +393,7 @@ private void setCodeValue(int value) {
393393
CodeAreaCaretPosition caretPosition = ((CaretCapable) codeArea).getCaretPosition();
394394
long dataPosition = caretPosition.getDataPosition();
395395
int codeOffset = caretPosition.getCodeOffset();
396-
BinaryData data = CodeAreaUtils.requireNonNull(codeArea.getContentData(), "Content data is null");
396+
BinaryData data = CodeAreaUtils.requireNonNullContentData(codeArea.getContentData());
397397
CodeType codeType = getCodeType();
398398
byte byteValue = data.getByte(dataPosition);
399399
byte outputValue = CodeAreaUtils.setCodeValue(byteValue, value, codeOffset, codeType);
@@ -422,7 +422,7 @@ public void backSpacePressed() {
422422
if (!checkEditAllowed()) {
423423
return;
424424
}
425-
BinaryData data = CodeAreaUtils.requireNonNull(codeArea.getContentData(), "Content data is null");
425+
BinaryData data = CodeAreaUtils.requireNonNullContentData(codeArea.getContentData());
426426

427427
if (codeArea.hasSelection()) {
428428
deleteSelection();
@@ -438,6 +438,7 @@ public void backSpacePressed() {
438438
codeArea.notifyDataChanged();
439439
((CaretCapable) codeArea).setCaretPosition(caret.getCaretPosition());
440440
revealCursor();
441+
clearSelection();
441442
}
442443
}
443444
}
@@ -453,7 +454,7 @@ public void deletePressed() {
453454
codeArea.notifyDataChanged();
454455
revealCursor();
455456
} else {
456-
BinaryData data = CodeAreaUtils.requireNonNull(codeArea.getContentData(), "Content data is null");
457+
BinaryData data = CodeAreaUtils.requireNonNullContentData(codeArea.getContentData());
457458
DefaultCodeAreaCaret caret = (DefaultCodeAreaCaret) ((CaretCapable) codeArea).getCaret();
458459
long dataPosition = caret.getDataPosition();
459460
if (dataPosition < codeArea.getDataSize()) {
@@ -463,6 +464,7 @@ public void deletePressed() {
463464
caret.setCodeOffset(0);
464465
}
465466
((CaretCapable) codeArea).setCaretPosition(caret.getCaretPosition());
467+
clearSelection();
466468
revealCursor();
467469
}
468470
}
@@ -491,8 +493,8 @@ private void deleteSelection() {
491493
} else {
492494
((EditableBinaryData) data).remove(first, length);
493495
}
494-
codeArea.clearSelection();
495496
((CaretCapable) codeArea).setCaretPosition(first);
497+
clearSelection();
496498
revealCursor();
497499
}
498500

@@ -588,7 +590,7 @@ public void paste() {
588590
return;
589591
}
590592

591-
BinaryData data = CodeAreaUtils.requireNonNull(codeArea.getContentData(), "Content data is null");
593+
BinaryData data = CodeAreaUtils.requireNonNullContentData(codeArea.getContentData());
592594
EditMode editMode = ((EditModeCapable) codeArea).getEditMode();
593595
EditOperation editOperation = ((EditModeCapable) codeArea).getActiveOperation();
594596
try {
@@ -630,6 +632,7 @@ public void paste() {
630632
caret.setCodeOffset(0);
631633
((CaretCapable) codeArea).setCaretPosition(caret.getCaretPosition());
632634
revealCursor();
635+
clearSelection();
633636
}
634637
} catch (UnsupportedFlavorException | IOException ex) {
635638
Logger.getLogger(DefaultCodeAreaCommandHandler.class.getName()).log(Level.SEVERE, null, ex);
@@ -673,6 +676,7 @@ public void paste() {
673676
caret.setCodeOffset(0);
674677
((CaretCapable) codeArea).setCaretPosition(caret.getCaretPosition());
675678
revealCursor();
679+
clearSelection();
676680
}
677681
} catch (UnsupportedFlavorException | IOException ex) {
678682
Logger.getLogger(DefaultCodeAreaCommandHandler.class.getName()).log(Level.SEVERE, null, ex);
@@ -689,7 +693,7 @@ public void pasteFromCode() {
689693
return;
690694
}
691695

692-
BinaryData data = CodeAreaUtils.requireNonNull(codeArea.getContentData(), "Content data is null");
696+
BinaryData data = CodeAreaUtils.requireNonNullContentData(codeArea.getContentData());
693697
EditMode editMode = ((EditModeCapable) codeArea).getEditMode();
694698
EditOperation editOperation = ((EditModeCapable) codeArea).getActiveOperation();
695699
try {
@@ -743,6 +747,7 @@ public void pasteFromCode() {
743747
caret.setCodeOffset(0);
744748
((CaretCapable) codeArea).setCaretPosition(caret.getCaretPosition());
745749
revealCursor();
750+
clearSelection();
746751
}
747752
} catch (UnsupportedFlavorException | IOException ex) {
748753
Logger.getLogger(DefaultCodeAreaCommandHandler.class
@@ -769,7 +774,8 @@ public void selectAll() {
769774

770775
@Override
771776
public void clearSelection() {
772-
((SelectionCapable) codeArea).clearSelection();
777+
long dataPosition = ((CaretCapable) codeArea).getCaretPosition().getDataPosition();
778+
((SelectionCapable) codeArea).setSelection(dataPosition, dataPosition);
773779
}
774780

775781
@Nonnull

modules/bined-swing/src/main/java/org/exbin/bined/swing/basic/DefaultCodeAreaScrollPane.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ private void init() {
7575
setOpaque(false);
7676
setInheritsPopupMenu(true);
7777
setViewportBorder(null);
78+
// TODO: Try to use setColumnHeader and setRowHeader
7879

7980
verticalScrollBar.setIgnoreRepaint(true);
8081
verticalScrollBar.addAdjustmentListener(new VerticalAdjustmentListener());

modules/bined-swt/src/main/java/org/exbin/bined/swt/basic/DefaultCodeAreaCommandHandler.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ private void pressedCharAsCode(char keyChar) {
305305
value = Character.toLowerCase(keyChar) - 'a' + 10;
306306
}
307307

308-
BinaryData data = CodeAreaUtils.requireNonNull(codeArea.getContentData(), "Content data is null");
308+
BinaryData data = CodeAreaUtils.requireNonNullContentData(codeArea.getContentData());
309309
EditOperation editOperation = ((EditModeCapable) codeArea).getActiveOperation();
310310
if (editMode == EditMode.EXPANDING && editOperation == EditOperation.OVERWRITE) {
311311
if (dataPosition == codeArea.getDataSize()) {
@@ -357,7 +357,7 @@ private void pressedCharInPreview(char keyChar) {
357357
DefaultCodeAreaCaret caret = (DefaultCodeAreaCaret) ((CaretCapable) codeArea).getCaret();
358358
CodeAreaCaretPosition caretPosition = caret.getCaretPosition();
359359
EditOperation editOperation = ((EditModeCapable) codeArea).getActiveOperation();
360-
BinaryData data = CodeAreaUtils.requireNonNull(codeArea.getContentData(), "Content data is null");
360+
BinaryData data = CodeAreaUtils.requireNonNullContentData(codeArea.getContentData());
361361

362362
long dataPosition = caretPosition.getDataPosition();
363363
byte[] bytes = charToBytes(keyChar);
@@ -383,7 +383,7 @@ private void setCodeValue(int value) {
383383
CodeAreaCaretPosition caretPosition = ((CaretCapable) codeArea).getCaret().getCaretPosition();
384384
long dataPosition = caretPosition.getDataPosition();
385385
int codeOffset = caretPosition.getCodeOffset();
386-
BinaryData data = CodeAreaUtils.requireNonNull(codeArea.getContentData(), "Content data is null");
386+
BinaryData data = CodeAreaUtils.requireNonNullContentData(codeArea.getContentData());
387387
CodeType codeType = getCodeType();
388388
byte byteValue = data.getByte(dataPosition);
389389
byte outputValue = CodeAreaUtils.setCodeValue(byteValue, value, codeOffset, codeType);
@@ -413,7 +413,7 @@ public void backSpacePressed() {
413413
if (!checkEditAllowed()) {
414414
return;
415415
}
416-
BinaryData data = CodeAreaUtils.requireNonNull(codeArea.getContentData(), "Content data is null");
416+
BinaryData data = CodeAreaUtils.requireNonNullContentData(codeArea.getContentData());
417417

418418
if (codeArea.hasSelection()) {
419419
deleteSelection();
@@ -444,7 +444,7 @@ public void deletePressed() {
444444
codeArea.notifyDataChanged();
445445
revealCursor();
446446
} else {
447-
BinaryData data = CodeAreaUtils.requireNonNull(codeArea.getContentData(), "Content data is null");
447+
BinaryData data = CodeAreaUtils.requireNonNullContentData(codeArea.getContentData());
448448
DefaultCodeAreaCaret caret = (DefaultCodeAreaCaret) ((CaretCapable) codeArea).getCaret();
449449
long dataPosition = caret.getDataPosition();
450450
if (dataPosition < codeArea.getDataSize()) {
@@ -569,7 +569,7 @@ public void paste() {
569569
return;
570570
}
571571

572-
BinaryData data = CodeAreaUtils.requireNonNull(codeArea.getContentData(), "Content data is null");
572+
BinaryData data = CodeAreaUtils.requireNonNullContentData(codeArea.getContentData());
573573
EditMode editMode = ((EditModeCapable) codeArea).getEditMode();
574574
EditOperation editOperation = ((EditModeCapable) codeArea).getActiveOperation();
575575
try {
@@ -674,7 +674,7 @@ public void pasteFromCode() {
674674
return;
675675
}
676676

677-
BinaryData data = CodeAreaUtils.requireNonNull(codeArea.getContentData(), "Content data is null");
677+
BinaryData data = CodeAreaUtils.requireNonNullContentData(codeArea.getContentData());
678678
EditMode editMode = ((EditModeCapable) codeArea).getEditMode();
679679
EditOperation editOperation = ((EditModeCapable) codeArea).getActiveOperation();
680680
try {

0 commit comments

Comments
 (0)