Skip to content

Commit 5bb4343

Browse files
authored
Merge pull request #542 from hajdam/bined-library-update
Binary viewer library update
2 parents e8e5521 + ad61ea6 commit 5bb4343

File tree

3 files changed

+25
-21
lines changed

3 files changed

+25
-21
lines changed

pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
<annotations.version>24.1.0</annotations.version>
1717
<apktool.version>2.11.0</apktool.version>
1818
<asm.version>9.7</asm.version>
19-
<bined.version>0.2.1</bined.version>
19+
<bined.version>0.2.2</bined.version>
2020
<byteanalysis.version>1.0bcv</byteanalysis.version>
2121
<cfr.version>0.152</cfr.version>
2222
<cloning.version>1.9.12</cloning.version>
@@ -41,7 +41,7 @@
4141
<jgraphx.version>3.4.1.3</jgraphx.version>
4242
<js.version>21.2.0</js.version>
4343
<objenesis.version>3.4</objenesis.version>
44-
<binary-data.version>0.2.1</binary-data.version>
44+
<binary-data.version>0.2.2</binary-data.version>
4545
<procyon.version>0.6.0</procyon.version>
4646
<rsyntaxtextarea.version>3.5.2</rsyntaxtextarea.version> <!-- Upcoming 4.0 release will require Java 11+ -->
4747
<semantic-version.version>2.1.1</semantic-version.version>
@@ -251,7 +251,7 @@
251251
</dependency>
252252
<dependency>
253253
<groupId>org.exbin.auxiliary</groupId>
254-
<artifactId>binary_data-paged</artifactId>
254+
<artifactId>binary_data-array</artifactId>
255255
<version>${binary-data.version}</version>
256256
</dependency>
257257
<dependency>

src/main/java/the/bytecode/club/bytecodeviewer/gui/hexviewer/HexViewer.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,20 @@
1818

1919
package the.bytecode.club.bytecodeviewer.gui.hexviewer;
2020

21-
import org.exbin.auxiliary.binary_data.ByteArrayData;
21+
import org.exbin.auxiliary.binary_data.array.ByteArrayData;
2222
import org.exbin.bined.CodeAreaCaretPosition;
2323
import org.exbin.bined.CodeType;
2424
import org.exbin.bined.EditMode;
2525
import org.exbin.bined.RowWrappingMode;
26-
import org.exbin.bined.highlight.swing.HighlightNonAsciiCodeAreaPainter;
2726
import org.exbin.bined.swing.basic.CodeArea;
2827

2928
import javax.annotation.Nonnull;
3029
import javax.swing.*;
3130
import java.awt.*;
3231
import java.awt.event.ActionEvent;
3332
import java.awt.event.KeyEvent;
33+
import org.exbin.bined.highlight.swing.NonAsciiCodeAreaColorAssessor;
34+
import org.exbin.bined.swing.basic.DefaultCodeAreaPainter;
3435

3536
/**
3637
* Binary/hexadecimal viewer based on BinEd library.
@@ -57,9 +58,10 @@ public HexViewer(byte[] contentData)
5758
{
5859
super(new BorderLayout());
5960
codeArea = new CodeArea();
60-
codeArea.setFocusTraversalKeysEnabled(false);
61-
codeArea.setPainter(new HighlightNonAsciiCodeAreaPainter(codeArea));
61+
DefaultCodeAreaPainter painter = (DefaultCodeAreaPainter) codeArea.getPainter();
62+
painter.setColorAssessor(new NonAsciiCodeAreaColorAssessor(painter.getColorAssessor()));
6263
toolBar = new JToolBar();
64+
toolBar.setFloatable(false);
6365
statusPanel = new BinaryStatusPanel()
6466
{
6567
@Override
@@ -91,7 +93,7 @@ public void actionPerformed(ActionEvent e)
9193
public void actionPerformed(ActionEvent e)
9294
{
9395
final GoToBinaryPanel goToPanel = new GoToBinaryPanel();
94-
goToPanel.setCursorPosition(codeArea.getCaret().getCaretPosition().getDataPosition());
96+
goToPanel.setCursorPosition(codeArea.getActiveCaretPosition().getDataPosition());
9597
goToPanel.setMaxPosition(codeArea.getDataSize());
9698
final JDialog dialog = new JDialog((JFrame) SwingUtilities.getRoot(HexViewer.this), Dialog.ModalityType.APPLICATION_MODAL);
9799
OkCancelPanel okCancelPanel = new OkCancelPanel()
@@ -100,7 +102,7 @@ public void actionPerformed(ActionEvent e)
100102
protected void okAction()
101103
{
102104
goToPanel.acceptInput();
103-
codeArea.setCaretPosition(goToPanel.getTargetPosition());
105+
codeArea.setActiveCaretPosition(goToPanel.getTargetPosition());
104106
codeArea.revealCursor();
105107
dialog.setVisible(false);
106108
dialog.dispose();
@@ -348,10 +350,12 @@ public void actionPerformed(ActionEvent e)
348350
});
349351
viewMenu.add(showValuesPanelMenuItem);
350352
JCheckBoxMenuItem codeColorizationMenuItem = new JCheckBoxMenuItem("Code Colorization");
351-
codeColorizationMenuItem.setSelected(((HighlightNonAsciiCodeAreaPainter) codeArea.getPainter()).isNonAsciiHighlightingEnabled());
353+
DefaultCodeAreaPainter painter = (DefaultCodeAreaPainter) codeArea.getPainter();
354+
NonAsciiCodeAreaColorAssessor colorAssessor = (NonAsciiCodeAreaColorAssessor) painter.getColorAssessor();
355+
codeColorizationMenuItem.setSelected(colorAssessor.isNonAsciiHighlightingEnabled());
352356
codeColorizationMenuItem.addActionListener((event) ->
353357
{
354-
((HighlightNonAsciiCodeAreaPainter) codeArea.getPainter()).setNonAsciiHighlightingEnabled(codeColorizationMenuItem.isSelected());
358+
colorAssessor.setNonAsciiHighlightingEnabled(codeColorizationMenuItem.isSelected());
355359
menu.setVisible(false);
356360
});
357361
viewMenu.add(codeColorizationMenuItem);

src/main/java/the/bytecode/club/bytecodeviewer/gui/hexviewer/ValuesPanel.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
package the.bytecode.club.bytecodeviewer.gui.hexviewer;
2020

2121
import org.exbin.auxiliary.binary_data.BinaryData;
22-
import org.exbin.bined.CaretMovedListener;
2322
import org.exbin.bined.CodeAreaCaretPosition;
2423
import org.exbin.bined.DataChangedListener;
2524
import org.exbin.bined.swing.basic.CodeArea;
@@ -28,11 +27,13 @@
2827
import javax.swing.*;
2928
import java.awt.event.KeyEvent;
3029
import java.math.BigInteger;
30+
import java.nio.Buffer;
3131
import java.nio.ByteBuffer;
3232
import java.nio.ByteOrder;
3333
import java.util.Arrays;
3434
import java.util.InputMismatchException;
3535
import java.util.Objects;
36+
import org.exbin.bined.CodeAreaCaretListener;
3637

3738
/**
3839
* Values side panel.
@@ -56,7 +57,7 @@ public class ValuesPanel extends javax.swing.JPanel
5657
private CodeArea codeArea;
5758
private long dataPosition;
5859
private DataChangedListener dataChangedListener;
59-
private CaretMovedListener caretMovedListener;
60+
private CodeAreaCaretListener caretMovedListener;
6061

6162
private final byte[] valuesCache = new byte[CACHE_SIZE];
6263
private final ByteBuffer byteBuffer = ByteBuffer.wrap(valuesCache);
@@ -496,7 +497,7 @@ private void longTextFieldKeyReleased(java.awt.event.KeyEvent evt)
496497
{
497498
long longValue = Long.parseLong(longTextField.getText());
498499

499-
byteBuffer.rewind();
500+
((Buffer) byteBuffer).rewind();
500501
if (byteBuffer.order() != byteOrder)
501502
byteBuffer.order(byteOrder);
502503

@@ -547,7 +548,7 @@ private void floatTextFieldKeyReleased(java.awt.event.KeyEvent evt)
547548
ByteOrder byteOrder = getByteOrder();
548549
float floatValue = Float.parseFloat(floatTextField.getText());
549550

550-
byteBuffer.rewind();
551+
((Buffer) byteBuffer).rewind();
551552

552553
if (byteBuffer.order() != byteOrder)
553554
byteBuffer.order(byteOrder);
@@ -573,7 +574,7 @@ private void doubleTextFieldKeyReleased(java.awt.event.KeyEvent evt)
573574
ByteOrder byteOrder = getByteOrder();
574575
double doubleValue = Double.parseDouble(doubleTextField.getText());
575576

576-
byteBuffer.rewind();
577+
((Buffer) byteBuffer).rewind();
577578

578579
if (byteBuffer.order() != byteOrder)
579580
byteBuffer.order(byteOrder);
@@ -696,7 +697,7 @@ public void updateEditMode()
696697

697698
public void updateValues()
698699
{
699-
CodeAreaCaretPosition caretPosition = codeArea.getCaretPosition();
700+
CodeAreaCaretPosition caretPosition = codeArea.getActiveCaretPosition();
700701
dataPosition = caretPosition.getDataPosition();
701702
long dataSize = codeArea.getDataSize();
702703

@@ -800,7 +801,6 @@ private void updateValue(ValuesPanelField valuesPanelField)
800801
long dataSize = codeArea.getDataSize();
801802

802803
clearFields = dataPosition >= dataSize;
803-
byteOrder = littleEndianRadioButton.isSelected() ? ByteOrder.LITTLE_ENDIAN : ByteOrder.BIG_ENDIAN;
804804
byteOrder = getByteOrder();
805805
signed = isSigned();
806806
values = valuesCache;
@@ -913,7 +913,7 @@ private void updateField(ValuesPanelField valuesPanelField)
913913
{
914914
if (signed)
915915
{
916-
byteBuffer.rewind();
916+
((Buffer) byteBuffer).rewind();
917917

918918
if (byteBuffer.order() != byteOrder)
919919
byteBuffer.order(byteOrder);
@@ -933,7 +933,7 @@ private void updateField(ValuesPanelField valuesPanelField)
933933

934934
case FLOAT:
935935
{
936-
byteBuffer.rewind();
936+
((Buffer) byteBuffer).rewind();
937937

938938
if (byteBuffer.order() != byteOrder)
939939
byteBuffer.order(byteOrder);
@@ -944,7 +944,7 @@ private void updateField(ValuesPanelField valuesPanelField)
944944

945945
case DOUBLE:
946946
{
947-
byteBuffer.rewind();
947+
((Buffer) byteBuffer).rewind();
948948

949949
if (byteBuffer.order() != byteOrder)
950950
byteBuffer.order(byteOrder);

0 commit comments

Comments
 (0)