diff --git a/pom.xml b/pom.xml
index 849bbc489..1f6ece39b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,7 +16,7 @@
24.1.0
2.11.0
9.7
- 0.2.1
+ 0.2.2
1.0bcv
0.152
1.9.12
@@ -41,7 +41,7 @@
3.4.1.3
21.2.0
3.4
- 0.2.1
+ 0.2.2
0.6.0
3.5.2
2.1.1
@@ -251,7 +251,7 @@
org.exbin.auxiliary
- binary_data-paged
+ binary_data-array
${binary-data.version}
diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/gui/hexviewer/HexViewer.java b/src/main/java/the/bytecode/club/bytecodeviewer/gui/hexviewer/HexViewer.java
index 4fa9fb6fe..add4201e0 100644
--- a/src/main/java/the/bytecode/club/bytecodeviewer/gui/hexviewer/HexViewer.java
+++ b/src/main/java/the/bytecode/club/bytecodeviewer/gui/hexviewer/HexViewer.java
@@ -18,12 +18,11 @@
package the.bytecode.club.bytecodeviewer.gui.hexviewer;
-import org.exbin.auxiliary.binary_data.ByteArrayData;
+import org.exbin.auxiliary.binary_data.array.ByteArrayData;
import org.exbin.bined.CodeAreaCaretPosition;
import org.exbin.bined.CodeType;
import org.exbin.bined.EditMode;
import org.exbin.bined.RowWrappingMode;
-import org.exbin.bined.highlight.swing.HighlightNonAsciiCodeAreaPainter;
import org.exbin.bined.swing.basic.CodeArea;
import javax.annotation.Nonnull;
@@ -31,6 +30,8 @@
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
+import org.exbin.bined.highlight.swing.NonAsciiCodeAreaColorAssessor;
+import org.exbin.bined.swing.basic.DefaultCodeAreaPainter;
/**
* Binary/hexadecimal viewer based on BinEd library.
@@ -57,9 +58,10 @@ public HexViewer(byte[] contentData)
{
super(new BorderLayout());
codeArea = new CodeArea();
- codeArea.setFocusTraversalKeysEnabled(false);
- codeArea.setPainter(new HighlightNonAsciiCodeAreaPainter(codeArea));
+ DefaultCodeAreaPainter painter = (DefaultCodeAreaPainter) codeArea.getPainter();
+ painter.setColorAssessor(new NonAsciiCodeAreaColorAssessor(painter.getColorAssessor()));
toolBar = new JToolBar();
+ toolBar.setFloatable(false);
statusPanel = new BinaryStatusPanel()
{
@Override
@@ -91,7 +93,7 @@ public void actionPerformed(ActionEvent e)
public void actionPerformed(ActionEvent e)
{
final GoToBinaryPanel goToPanel = new GoToBinaryPanel();
- goToPanel.setCursorPosition(codeArea.getCaret().getCaretPosition().getDataPosition());
+ goToPanel.setCursorPosition(codeArea.getActiveCaretPosition().getDataPosition());
goToPanel.setMaxPosition(codeArea.getDataSize());
final JDialog dialog = new JDialog((JFrame) SwingUtilities.getRoot(HexViewer.this), Dialog.ModalityType.APPLICATION_MODAL);
OkCancelPanel okCancelPanel = new OkCancelPanel()
@@ -100,7 +102,7 @@ public void actionPerformed(ActionEvent e)
protected void okAction()
{
goToPanel.acceptInput();
- codeArea.setCaretPosition(goToPanel.getTargetPosition());
+ codeArea.setActiveCaretPosition(goToPanel.getTargetPosition());
codeArea.revealCursor();
dialog.setVisible(false);
dialog.dispose();
@@ -348,10 +350,12 @@ public void actionPerformed(ActionEvent e)
});
viewMenu.add(showValuesPanelMenuItem);
JCheckBoxMenuItem codeColorizationMenuItem = new JCheckBoxMenuItem("Code Colorization");
- codeColorizationMenuItem.setSelected(((HighlightNonAsciiCodeAreaPainter) codeArea.getPainter()).isNonAsciiHighlightingEnabled());
+ DefaultCodeAreaPainter painter = (DefaultCodeAreaPainter) codeArea.getPainter();
+ NonAsciiCodeAreaColorAssessor colorAssessor = (NonAsciiCodeAreaColorAssessor) painter.getColorAssessor();
+ codeColorizationMenuItem.setSelected(colorAssessor.isNonAsciiHighlightingEnabled());
codeColorizationMenuItem.addActionListener((event) ->
{
- ((HighlightNonAsciiCodeAreaPainter) codeArea.getPainter()).setNonAsciiHighlightingEnabled(codeColorizationMenuItem.isSelected());
+ colorAssessor.setNonAsciiHighlightingEnabled(codeColorizationMenuItem.isSelected());
menu.setVisible(false);
});
viewMenu.add(codeColorizationMenuItem);
diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/gui/hexviewer/ValuesPanel.java b/src/main/java/the/bytecode/club/bytecodeviewer/gui/hexviewer/ValuesPanel.java
index 4e7994884..4cc9d9224 100644
--- a/src/main/java/the/bytecode/club/bytecodeviewer/gui/hexviewer/ValuesPanel.java
+++ b/src/main/java/the/bytecode/club/bytecodeviewer/gui/hexviewer/ValuesPanel.java
@@ -19,7 +19,6 @@
package the.bytecode.club.bytecodeviewer.gui.hexviewer;
import org.exbin.auxiliary.binary_data.BinaryData;
-import org.exbin.bined.CaretMovedListener;
import org.exbin.bined.CodeAreaCaretPosition;
import org.exbin.bined.DataChangedListener;
import org.exbin.bined.swing.basic.CodeArea;
@@ -28,11 +27,13 @@
import javax.swing.*;
import java.awt.event.KeyEvent;
import java.math.BigInteger;
+import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.Arrays;
import java.util.InputMismatchException;
import java.util.Objects;
+import org.exbin.bined.CodeAreaCaretListener;
/**
* Values side panel.
@@ -56,7 +57,7 @@ public class ValuesPanel extends javax.swing.JPanel
private CodeArea codeArea;
private long dataPosition;
private DataChangedListener dataChangedListener;
- private CaretMovedListener caretMovedListener;
+ private CodeAreaCaretListener caretMovedListener;
private final byte[] valuesCache = new byte[CACHE_SIZE];
private final ByteBuffer byteBuffer = ByteBuffer.wrap(valuesCache);
@@ -496,7 +497,7 @@ private void longTextFieldKeyReleased(java.awt.event.KeyEvent evt)
{
long longValue = Long.parseLong(longTextField.getText());
- byteBuffer.rewind();
+ ((Buffer) byteBuffer).rewind();
if (byteBuffer.order() != byteOrder)
byteBuffer.order(byteOrder);
@@ -547,7 +548,7 @@ private void floatTextFieldKeyReleased(java.awt.event.KeyEvent evt)
ByteOrder byteOrder = getByteOrder();
float floatValue = Float.parseFloat(floatTextField.getText());
- byteBuffer.rewind();
+ ((Buffer) byteBuffer).rewind();
if (byteBuffer.order() != byteOrder)
byteBuffer.order(byteOrder);
@@ -573,7 +574,7 @@ private void doubleTextFieldKeyReleased(java.awt.event.KeyEvent evt)
ByteOrder byteOrder = getByteOrder();
double doubleValue = Double.parseDouble(doubleTextField.getText());
- byteBuffer.rewind();
+ ((Buffer) byteBuffer).rewind();
if (byteBuffer.order() != byteOrder)
byteBuffer.order(byteOrder);
@@ -696,7 +697,7 @@ public void updateEditMode()
public void updateValues()
{
- CodeAreaCaretPosition caretPosition = codeArea.getCaretPosition();
+ CodeAreaCaretPosition caretPosition = codeArea.getActiveCaretPosition();
dataPosition = caretPosition.getDataPosition();
long dataSize = codeArea.getDataSize();
@@ -800,7 +801,6 @@ private void updateValue(ValuesPanelField valuesPanelField)
long dataSize = codeArea.getDataSize();
clearFields = dataPosition >= dataSize;
- byteOrder = littleEndianRadioButton.isSelected() ? ByteOrder.LITTLE_ENDIAN : ByteOrder.BIG_ENDIAN;
byteOrder = getByteOrder();
signed = isSigned();
values = valuesCache;
@@ -913,7 +913,7 @@ private void updateField(ValuesPanelField valuesPanelField)
{
if (signed)
{
- byteBuffer.rewind();
+ ((Buffer) byteBuffer).rewind();
if (byteBuffer.order() != byteOrder)
byteBuffer.order(byteOrder);
@@ -933,7 +933,7 @@ private void updateField(ValuesPanelField valuesPanelField)
case FLOAT:
{
- byteBuffer.rewind();
+ ((Buffer) byteBuffer).rewind();
if (byteBuffer.order() != byteOrder)
byteBuffer.order(byteOrder);
@@ -944,7 +944,7 @@ private void updateField(ValuesPanelField valuesPanelField)
case DOUBLE:
{
- byteBuffer.rewind();
+ ((Buffer) byteBuffer).rewind();
if (byteBuffer.order() != byteOrder)
byteBuffer.order(byteOrder);