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);