From 9c779bad6f784b300c92ace9e072f5a1b916571c Mon Sep 17 00:00:00 2001 From: peterdell Date: Sun, 6 Sep 2020 21:48:05 +0200 Subject: [PATCH] Split HexEditor into own plugin --- com.wudsn.ide.asm/META-INF/MANIFEST.MF | 1 + com.wudsn.ide.asm/WUDSN-IDE.launch | 2 + .../editor/AssemblerHyperlinkDetector.java | 2 +- com.wudsn.ide.base.feature/feature.xml | 7 + com.wudsn.ide.base/META-INF/MANIFEST.MF | 8 +- com.wudsn.ide.base/plugin.properties | 36 +- com.wudsn.ide.base/plugin.xml | 320 ------------------ com.wudsn.ide.base/plugin_de_DE.properties | 36 +- .../src/com/wudsn/ide/base/Texts.java | 56 --- .../src/com/wudsn/ide/base/Texts.properties | 49 --- .../com/wudsn/ide/base/Texts_de_DE.properties | 49 --- .../ide/base/common/AbstractIDEPlugin.java | 2 +- .../{editor/hex => hardware}/Hardware.java | 5 +- .../HardwareCharacterSet.java} | 66 ++-- com.wudsn.ide.gfx/META-INF/MANIFEST.MF | 3 +- com.wudsn.ide.hex/.classpath | 1 + com.wudsn.ide.hex/META-INF/MANIFEST.MF | 16 +- com.wudsn.ide.hex/build.properties | 5 +- com.wudsn.ide.hex/fonts/atari8/ATARCC__.TTF | Bin 56192 -> 0 bytes com.wudsn.ide.hex/fonts/atari8/ReadMe.rtf | 317 ----------------- .../fonts/c64/C64_Pro_v1.0-STYLE.ttf | Bin 38952 -> 0 bytes .../fonts/c64/C64_Pro_v1.0-STYLE.txt | 6 - .../icons/copy-disabled.gif | Bin .../icons/copy-enabled.gif | Bin .../icons/cut-disabled.gif | Bin .../icons/cut-enabled.gif | Bin .../icons/delete-disabled.gif | Bin .../icons/hex-editor-16x16.gif | Bin .../icons/hex-editor-segment-16x16.gif | Bin .../icons/import-disabled.gif | Bin .../icons/import-enabled.gif | Bin .../icons/paste-disabled.gif | Bin .../icons/paste-enabled.gif | Bin .../icons/save-as-disabled.gif | Bin .../icons/save-as-enabled.gif | Bin com.wudsn.ide.hex/plugin.properties | 21 ++ com.wudsn.ide.hex/plugin.xml | 221 ++++++++++++ com.wudsn.ide.hex/plugin_de_DE.properties | 21 ++ .../src/com/wudsn/ide/hex/FileContent.java | 47 +++ .../com/wudsn/ide/hex/FileContentImpl.java | 78 +++++ .../src/com/wudsn/ide}/hex/HexEditor.java | 130 ++++--- .../hex/HexEditorClipboardCommandHandler.java | 20 +- .../HexEditorContentOutlineLabelProvider.java | 8 +- .../ide}/hex/HexEditorContentOutlinePage.java | 2 +- ...itorContentOutlineTreeContentProvider.java | 2 +- .../HexEditorContentOutlineTreeObject.java | 2 +- .../ide}/hex/HexEditorFileContentMode.java | 23 +- .../ide}/hex/HexEditorOpenCommandHandler.java | 2 +- .../com/wudsn/ide}/hex/HexEditorParser.java | 46 +-- .../ide}/hex/HexEditorParserComponent.java | 228 ++++++------- ...exEditorSaveSelectionAsCommandHandler.java | 9 +- .../wudsn/ide}/hex/HexEditorSelection.java | 2 +- .../hex/HexEditorSelectionCommandHandler.java | 2 +- .../ide}/hex/HexEditorSelectionTransfer.java | 2 +- .../src/com/wudsn/ide/hex/HexPlugin.java | 38 ++- .../src/com/wudsn/ide/hex/Texts.java | 92 +++++ .../src/com/wudsn/ide/hex/Texts.properties | 48 +++ .../com/wudsn/ide/hex/Texts_de_DE.properties | 48 +++ .../wudsn/ide}/hex/parser/AtariCOMParser.java | 4 +- .../hex/parser/AtariDiskImageKFileParser.java | 6 +- .../ide}/hex/parser/AtariDiskImageParser.java | 10 +- .../ide}/hex/parser/AtariMADSParser.java | 48 +-- .../wudsn/ide}/hex/parser/AtariParser.java | 22 +- .../wudsn/ide}/hex/parser/AtariSAPParser.java | 10 +- .../wudsn/ide}/hex/parser/AtariSDXParser.java | 45 ++- .../wudsn/ide}/hex/parser/BinaryParser.java | 8 +- .../wudsn/ide}/hex/parser/C64PRGParser.java | 12 +- .../com/wudsn/ide}/hex/parser/IFFParser.java | 23 +- 68 files changed, 982 insertions(+), 1285 deletions(-) rename com.wudsn.ide.base/src/com/wudsn/ide/base/{editor/hex => hardware}/Hardware.java (83%) rename com.wudsn.ide.base/src/com/wudsn/ide/base/{editor/hex/HexEditorCharacterSet.java => hardware/HardwareCharacterSet.java} (75%) delete mode 100644 com.wudsn.ide.hex/fonts/atari8/ATARCC__.TTF delete mode 100644 com.wudsn.ide.hex/fonts/atari8/ReadMe.rtf delete mode 100644 com.wudsn.ide.hex/fonts/c64/C64_Pro_v1.0-STYLE.ttf delete mode 100644 com.wudsn.ide.hex/fonts/c64/C64_Pro_v1.0-STYLE.txt rename {com.wudsn.ide.base => com.wudsn.ide.hex}/icons/copy-disabled.gif (100%) rename {com.wudsn.ide.base => com.wudsn.ide.hex}/icons/copy-enabled.gif (100%) rename {com.wudsn.ide.base => com.wudsn.ide.hex}/icons/cut-disabled.gif (100%) rename {com.wudsn.ide.base => com.wudsn.ide.hex}/icons/cut-enabled.gif (100%) rename {com.wudsn.ide.base => com.wudsn.ide.hex}/icons/delete-disabled.gif (100%) rename {com.wudsn.ide.base => com.wudsn.ide.hex}/icons/hex-editor-16x16.gif (100%) rename {com.wudsn.ide.base => com.wudsn.ide.hex}/icons/hex-editor-segment-16x16.gif (100%) rename {com.wudsn.ide.base => com.wudsn.ide.hex}/icons/import-disabled.gif (100%) rename {com.wudsn.ide.base => com.wudsn.ide.hex}/icons/import-enabled.gif (100%) rename {com.wudsn.ide.base => com.wudsn.ide.hex}/icons/paste-disabled.gif (100%) rename {com.wudsn.ide.base => com.wudsn.ide.hex}/icons/paste-enabled.gif (100%) rename {com.wudsn.ide.base => com.wudsn.ide.hex}/icons/save-as-disabled.gif (100%) rename {com.wudsn.ide.base => com.wudsn.ide.hex}/icons/save-as-enabled.gif (100%) create mode 100644 com.wudsn.ide.hex/plugin.properties create mode 100644 com.wudsn.ide.hex/plugin.xml create mode 100644 com.wudsn.ide.hex/plugin_de_DE.properties create mode 100644 com.wudsn.ide.hex/src/com/wudsn/ide/hex/FileContent.java create mode 100644 com.wudsn.ide.hex/src/com/wudsn/ide/hex/FileContentImpl.java rename {com.wudsn.ide.base/src/com/wudsn/ide/base/editor => com.wudsn.ide.hex/src/com/wudsn/ide}/hex/HexEditor.java (83%) rename {com.wudsn.ide.base/src/com/wudsn/ide/base/editor => com.wudsn.ide.hex/src/com/wudsn/ide}/hex/HexEditorClipboardCommandHandler.java (86%) rename {com.wudsn.ide.base/src/com/wudsn/ide/base/editor => com.wudsn.ide.hex/src/com/wudsn/ide}/hex/HexEditorContentOutlineLabelProvider.java (91%) rename {com.wudsn.ide.base/src/com/wudsn/ide/base/editor => com.wudsn.ide.hex/src/com/wudsn/ide}/hex/HexEditorContentOutlinePage.java (95%) rename {com.wudsn.ide.base/src/com/wudsn/ide/base/editor => com.wudsn.ide.hex/src/com/wudsn/ide}/hex/HexEditorContentOutlineTreeContentProvider.java (93%) rename {com.wudsn.ide.base/src/com/wudsn/ide/base/editor => com.wudsn.ide.hex/src/com/wudsn/ide}/hex/HexEditorContentOutlineTreeObject.java (95%) rename {com.wudsn.ide.base/src/com/wudsn/ide/base/editor => com.wudsn.ide.hex/src/com/wudsn/ide}/hex/HexEditorFileContentMode.java (76%) rename {com.wudsn.ide.base/src/com/wudsn/ide/base/editor => com.wudsn.ide.hex/src/com/wudsn/ide}/hex/HexEditorOpenCommandHandler.java (94%) rename {com.wudsn.ide.base/src/com/wudsn/ide/base/editor => com.wudsn.ide.hex/src/com/wudsn/ide}/hex/HexEditorParser.java (82%) rename {com.wudsn.ide.base/src/com/wudsn/ide/base/editor => com.wudsn.ide.hex/src/com/wudsn/ide}/hex/HexEditorParserComponent.java (74%) rename {com.wudsn.ide.base/src/com/wudsn/ide/base/editor => com.wudsn.ide.hex/src/com/wudsn/ide}/hex/HexEditorSaveSelectionAsCommandHandler.java (86%) rename {com.wudsn.ide.base/src/com/wudsn/ide/base/editor => com.wudsn.ide.hex/src/com/wudsn/ide}/hex/HexEditorSelection.java (95%) rename {com.wudsn.ide.base/src/com/wudsn/ide/base/editor => com.wudsn.ide.hex/src/com/wudsn/ide}/hex/HexEditorSelectionCommandHandler.java (95%) rename {com.wudsn.ide.base/src/com/wudsn/ide/base/editor => com.wudsn.ide.hex/src/com/wudsn/ide}/hex/HexEditorSelectionTransfer.java (95%) create mode 100644 com.wudsn.ide.hex/src/com/wudsn/ide/hex/Texts.java create mode 100644 com.wudsn.ide.hex/src/com/wudsn/ide/hex/Texts.properties create mode 100644 com.wudsn.ide.hex/src/com/wudsn/ide/hex/Texts_de_DE.properties rename {com.wudsn.ide.base/src/com/wudsn/ide/base/editor => com.wudsn.ide.hex/src/com/wudsn/ide}/hex/parser/AtariCOMParser.java (89%) rename {com.wudsn.ide.base/src/com/wudsn/ide/base/editor => com.wudsn.ide.hex/src/com/wudsn/ide}/hex/parser/AtariDiskImageKFileParser.java (87%) rename {com.wudsn.ide.base/src/com/wudsn/ide/base/editor => com.wudsn.ide.hex/src/com/wudsn/ide}/hex/parser/AtariDiskImageParser.java (87%) rename {com.wudsn.ide.base/src/com/wudsn/ide/base/editor => com.wudsn.ide.hex/src/com/wudsn/ide}/hex/parser/AtariMADSParser.java (81%) rename {com.wudsn.ide.base/src/com/wudsn/ide/base/editor => com.wudsn.ide.hex/src/com/wudsn/ide}/hex/parser/AtariParser.java (80%) rename {com.wudsn.ide.base/src/com/wudsn/ide/base/editor => com.wudsn.ide.hex/src/com/wudsn/ide}/hex/parser/AtariSAPParser.java (81%) rename {com.wudsn.ide.base/src/com/wudsn/ide/base/editor => com.wudsn.ide.hex/src/com/wudsn/ide}/hex/parser/AtariSDXParser.java (81%) rename {com.wudsn.ide.base/src/com/wudsn/ide/base/editor => com.wudsn.ide.hex/src/com/wudsn/ide}/hex/parser/BinaryParser.java (80%) rename {com.wudsn.ide.base/src/com/wudsn/ide/base/editor => com.wudsn.ide.hex/src/com/wudsn/ide}/hex/parser/C64PRGParser.java (82%) rename {com.wudsn.ide.base/src/com/wudsn/ide/base/editor => com.wudsn.ide.hex/src/com/wudsn/ide}/hex/parser/IFFParser.java (83%) diff --git a/com.wudsn.ide.asm/META-INF/MANIFEST.MF b/com.wudsn.ide.asm/META-INF/MANIFEST.MF index 2a8cdd52..7687c5e7 100644 --- a/com.wudsn.ide.asm/META-INF/MANIFEST.MF +++ b/com.wudsn.ide.asm/META-INF/MANIFEST.MF @@ -21,6 +21,7 @@ Require-Bundle: org.eclipse.core.runtime;visibility:=reexport, com.wudsn.ide.base;visibility:=reexport, com.wudsn.ide.dsk, com.wudsn.ide.gfx, + com.wudsn.ide.hex, org.eclipse.debug.core;visibility:=reexport, org.eclipse.debug.ui;visibility:=reexport, org.eclipse.ui.workbench diff --git a/com.wudsn.ide.asm/WUDSN-IDE.launch b/com.wudsn.ide.asm/WUDSN-IDE.launch index 516dfde9..4268d527 100644 --- a/com.wudsn.ide.asm/WUDSN-IDE.launch +++ b/com.wudsn.ide.asm/WUDSN-IDE.launch @@ -37,6 +37,8 @@ + + diff --git a/com.wudsn.ide.asm/src/com/wudsn/ide/asm/editor/AssemblerHyperlinkDetector.java b/com.wudsn.ide.asm/src/com/wudsn/ide/asm/editor/AssemblerHyperlinkDetector.java index 65d28b96..9332aafe 100644 --- a/com.wudsn.ide.asm/src/com/wudsn/ide/asm/editor/AssemblerHyperlinkDetector.java +++ b/com.wudsn.ide.asm/src/com/wudsn/ide/asm/editor/AssemblerHyperlinkDetector.java @@ -45,8 +45,8 @@ import com.wudsn.ide.asm.compiler.parser.CompilerSourceParserTreeObjectType; import com.wudsn.ide.asm.compiler.syntax.CompilerSyntax; import com.wudsn.ide.base.common.NumberUtility; import com.wudsn.ide.base.common.TextUtility; -import com.wudsn.ide.base.editor.hex.HexEditor; import com.wudsn.ide.gfx.editor.GraphicsConversionEditor; +import com.wudsn.ide.hex.HexEditor; /** * Hyperlink detector implementation for opening source or binary include files. diff --git a/com.wudsn.ide.base.feature/feature.xml b/com.wudsn.ide.base.feature/feature.xml index 3dc678ff..870fc462 100644 --- a/com.wudsn.ide.base.feature/feature.xml +++ b/com.wudsn.ide.base.feature/feature.xml @@ -318,4 +318,11 @@ POSSIBILITY OF SUCH DAMAGES. version="0.0.0" unpack="false"/> + + diff --git a/com.wudsn.ide.base/META-INF/MANIFEST.MF b/com.wudsn.ide.base/META-INF/MANIFEST.MF index de471f6e..01507af5 100644 --- a/com.wudsn.ide.base/META-INF/MANIFEST.MF +++ b/com.wudsn.ide.base/META-INF/MANIFEST.MF @@ -12,16 +12,14 @@ Require-Bundle: org.eclipse.core.runtime, org.eclipse.core.filesystem, org.eclipse.jface.text, org.eclipse.ui, - org.eclipse.ui.ide, - org.eclipse.ui.views, org.eclipse.ui.workbench.texteditor, - org.eclipse.compare + org.eclipse.ui.ide Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy Export-Package: com.wudsn.ide.base, com.wudsn.ide.base.common, com.wudsn.ide.base.editor, - com.wudsn.ide.base.editor.hex, - com.wudsn.ide.base.gui + com.wudsn.ide.base.gui, + com.wudsn.ide.base.hardware Import-Package: org.eclipse.ui.internal.editors.text Automatic-Module-Name: com.wudsn.ide.base diff --git a/com.wudsn.ide.base/plugin.properties b/com.wudsn.ide.base/plugin.properties index 05828950..1c5cd2bc 100644 --- a/com.wudsn.ide.base/plugin.properties +++ b/com.wudsn.ide.base/plugin.properties @@ -28,32 +28,10 @@ com.wudsn.ide.base.editor.text.TextEditorReverseLinesCommand.mnemonic=R com.wudsn.ide.base.editor.BinaryFile.name=Binary File -com.wudsn.ide.base.editor.hex.HexEditor.name=Hex Editor -com.wudsn.ide.base.editor.hex.HexEditorOpenCommand.name=Open With Hex Editor -com.wudsn.ide.base.editor.hex.HexEditorCopyToClipboardCommand.name=Copy -com.wudsn.ide.base.editor.hex.HexEditorCopyToClipboardAsMenu.name=Copy as -com.wudsn.ide.base.editor.hex.HexEditorCopyToClipboardAsDecimalValuesCommand.name=Copy as Decimal Values -com.wudsn.ide.base.editor.hex.HexEditorCopyToClipboardAsDecimalValuesBlockCommand.name=Copy as Decimal Values in Block Format -com.wudsn.ide.base.editor.hex.HexEditorCopyToClipboardAsHexValuesCommand.name=Copy as Hexadecimal Values -com.wudsn.ide.base.editor.hex.HexEditorCopyToClipboardAsASCIIStringCommand.name=Copy as ASCII String -com.wudsn.ide.base.editor.hex.HexEditorPasteFromClipboardCommand.name=Paste -com.wudsn.ide.base.editor.hex.HexEditorSaveSelectionAsCommand.name=Save Selection as... - -com.wudsn.ide.base.editor.hex.HexEditorFileContentMode.BINARY=Binary -com.wudsn.ide.base.editor.hex.HexEditorFileContentMode.ATARI_COM_FILE=Atari COM File -com.wudsn.ide.base.editor.hex.HexEditorFileContentMode.ATARI_DISK_IMAGE=Atari Disk Image -com.wudsn.ide.base.editor.hex.HexEditorFileContentMode.ATARI_DISK_IMAGE_K_FILE=Atari Disk Image (k-File) -com.wudsn.ide.base.editor.hex.HexEditorFileContentMode.ATARI_MADS_FILE=Atari MADS File -com.wudsn.ide.base.editor.hex.HexEditorFileContentMode.ATARI_SDX_FILE=Atari SpartaDOS X File -com.wudsn.ide.base.editor.hex.HexEditorFileContentMode.ATARI_SAP_FILE=Atari SAP File -com.wudsn.ide.base.editor.hex.HexEditorFileContentMode.C64_PRG_FILE=C64 PRG File -com.wudsn.ide.base.editor.hex.HexEditorFileContentMode.IFF_FILE=IFF File - - -com.wudsn.ide.base.editor.hex.HexEditorCharacterSet.ASCII=ASCII -com.wudsn.ide.base.editor.hex.HexEditorCharacterSet.ATARI_ATASCII=Atari ATASCII -com.wudsn.ide.base.editor.hex.HexEditorCharacterSet.ATARI_ATASCII_SCREEN_CODE=Atari ATASCII Screen Code -com.wudsn.ide.base.editor.hex.HexEditorCharacterSet.ATARI_INTERNATIONAL=Atari International -com.wudsn.ide.base.editor.hex.HexEditorCharacterSet.ATARI_INTERNATIONAL_SCREEN_CODE=Atari International Screen Code -com.wudsn.ide.base.editor.hex.HexEditorCharacterSet.C64_PETSCII_UPPER_CASE=C64 PETSCII Upper Case -com.wudsn.ide.base.editor.hex.HexEditorCharacterSet.C64_PETSCII_LOWER_CASE=C64 PETSCII Lower Case +com.wudsn.ide.base.hardware.HardwareCharacterSet.ASCII=ASCII +com.wudsn.ide.base.hardware.HardwareCharacterSet.ATARI_ATASCII=Atari ATASCII +com.wudsn.ide.base.hardware.HardwareCharacterSet.ATARI_ATASCII_SCREEN_CODE=Atari ATASCII Screen Code +com.wudsn.ide.base.hardware.HardwareCharacterSet.ATARI_INTERNATIONAL=Atari International +com.wudsn.ide.base.hardware.HardwareCharacterSet.ATARI_INTERNATIONAL_SCREEN_CODE=Atari International Screen Code +com.wudsn.ide.base.hardware.HardwareCharacterSet.CBM_PETSCII_UPPER_CASE=C64 PETSCII Upper Case +com.wudsn.ide.base.hardware.HardwareCharacterSet.CBM_PETSCII_LOWER_CASE=C64 PETSCII Lower Case diff --git a/com.wudsn.ide.base/plugin.xml b/com.wudsn.ide.base/plugin.xml index 2d6cb3e8..9a3cdde3 100644 --- a/com.wudsn.ide.base/plugin.xml +++ b/com.wudsn.ide.base/plugin.xml @@ -266,235 +266,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/com.wudsn.ide.base/plugin_de_DE.properties b/com.wudsn.ide.base/plugin_de_DE.properties index 30b5aab0..0a2ddd6c 100644 --- a/com.wudsn.ide.base/plugin_de_DE.properties +++ b/com.wudsn.ide.base/plugin_de_DE.properties @@ -28,32 +28,10 @@ com.wudsn.ide.base.editor.text.TextEditorReverseLinesCommand.mnemonic=U com.wudsn.ide.base.editor.BinaryFile.name=Binär-Datei -com.wudsn.ide.base.editor.hex.HexEditor.name=Hex Editor -com.wudsn.ide.base.editor.hex.HexEditorOpenCommand.name=Öffnen mit Hex Editor -com.wudsn.ide.base.editor.hex.HexEditorCopyToClipboardCommand.name=Kopieren -com.wudsn.ide.base.editor.hex.HexEditorCopyToClipboardAsMenu.name=Kopieren als -com.wudsn.ide.base.editor.hex.HexEditorCopyToClipboardAsDecimalValuesCommand.name=Kopieren als dezimale Werte -com.wudsn.ide.base.editor.hex.HexEditorCopyToClipboardAsDecimalValuesBlockCommand.name=Kopieren als dezimale Werte im Blocksatz -com.wudsn.ide.base.editor.hex.HexEditorCopyToClipboardAsHexValuesCommand.name=Kopieren als hexadezimale Werte -com.wudsn.ide.base.editor.hex.HexEditorCopyToClipboardAsASCIIStringCommand.name=Kopieren als ASCII Text -com.wudsn.ide.base.editor.hex.HexEditorPasteFromClipboardCommand.name=Einfügen -com.wudsn.ide.base.editor.hex.HexEditorSaveSelectionAsCommand.name=Auswahl Speichern unter... - -com.wudsn.ide.base.editor.hex.HexEditorFileContentMode.BINARY=Binär -com.wudsn.ide.base.editor.hex.HexEditorFileContentMode.ATARI_COM_FILE=Atari COM-Datei -com.wudsn.ide.base.editor.hex.HexEditorFileContentMode.ATARI_DISK_IMAGE=Atari Disk Image -com.wudsn.ide.base.editor.hex.HexEditorFileContentMode.ATARI_DISK_IMAGE_K_FILE=Atari Disk Image (k-Datei) -com.wudsn.ide.base.editor.hex.HexEditorFileContentMode.ATARI_MADS_FILE=Atari MADS-Datei -com.wudsn.ide.base.editor.hex.HexEditorFileContentMode.ATARI_SAP_FILE=Atari SAP-Datei -com.wudsn.ide.base.editor.hex.HexEditorFileContentMode.ATARI_SDX_FILE=Atari SpartaDOS X-Datei -com.wudsn.ide.base.editor.hex.HexEditorFileContentMode.C64_PRG_FILE=C64 PRG-Datei -com.wudsn.ide.base.editor.hex.HexEditorFileContentMode.IFF_FILE=IFF-Datei - -com.wudsn.ide.base.editor.hex.HexEditorCharacterSet.ASCII=ASCII -com.wudsn.ide.base.editor.hex.HexEditorCharacterSet.ATARI_ATASCII=Atari ATASCII -com.wudsn.ide.base.editor.hex.HexEditorCharacterSet.ATARI_ATASCII_SCREEN_CODE=Atari ATASCII Bildschirmcode -com.wudsn.ide.base.editor.hex.HexEditorCharacterSet.ATARI_INTERNATIONAL=Atari International -com.wudsn.ide.base.editor.hex.HexEditorCharacterSet.ATARI_INTERNATIONAL_SCREEN_CODE=Atari International Bildschirmcode -com.wudsn.ide.base.editor.hex.HexEditorCharacterSet.C64_PETSCII_UPPER_CASE=C64 PETSCII Großbuchstaben -com.wudsn.ide.base.editor.hex.HexEditorCharacterSet.C64_PETSCII_LOWER_CASE=C64 PETSCII Kleinbuchstaben - +com.wudsn.ide.base.hardware.HardwareCharacterSet.ASCII=ASCII +com.wudsn.ide.base.hardware.HardwareCharacterSet.ATARI_ATASCII=Atari ATASCII +com.wudsn.ide.base.hardware.HardwareCharacterSet.ATARI_ATASCII_SCREEN_CODE=Atari ATASCII Bildschirmcode +com.wudsn.ide.base.hardware.HardwareCharacterSet.ATARI_INTERNATIONAL=Atari International +com.wudsn.ide.base.hardware.HardwareCharacterSet.ATARI_INTERNATIONAL_SCREEN_CODE=Atari International Bildschirmcode +com.wudsn.ide.base.hardware.HardwareCharacterSet.CBM_PETSCII_UPPER_CASE=C64 PETSCII Großbuchstaben +com.wudsn.ide.base.hardware.HardwareCharacterSet.CBM_PETSCII_LOWER_CASE=C64 PETSCII Kleinbuchstaben diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/Texts.java b/com.wudsn.ide.base/src/com/wudsn/ide/base/Texts.java index e269842e..b33d5604 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/Texts.java +++ b/com.wudsn.ide.base/src/com/wudsn/ide/base/Texts.java @@ -22,7 +22,6 @@ package com.wudsn.ide.base; import org.eclipse.osgi.util.NLS; import com.wudsn.ide.base.common.FileUtility; -import com.wudsn.ide.base.editor.hex.HexEditor; /** * Class which holds the localized text constants. @@ -38,53 +37,6 @@ public final class Texts extends NLS { public static String FILE_PATH_FIELD_BROWSE_BUTTON_LABEL; public static String FILE_PATH_FIELD_DIALOG_MESSAGE; - /** - * Hex editor - */ - public static String HEX_EDITOR_FILE_SIZE; - - public static String HEX_EDITOR_ATARI_COM_BLOCK_HEADER; - public static String HEX_EDITOR_ATARI_COM_BLOCK_HEADER_PARAMETERS; - public static String HEX_EDITOR_ATARI_COM_BLOCK_ERROR; - - public static String HEX_EDITOR_ATARI_DISK_IMAGE_HEADER; - public static String HEX_EDITOR_ATARI_SECTOR_HEADER; - public static String HEX_EDITOR_ATARI_SECTOR_HEADER_PARAMETERS; - public static String HEX_EDITOR_ATARI_SECTOR_ERROR; - - public static String HEX_EDITOR_ATARI_MADS_RELOC_BLOCK_HEADER; - public static String HEX_EDITOR_ATARI_MADS_UPDATE_RELOC_BLOCK_HEADER; - public static String HEX_EDITOR_ATARI_MADS_UPDATE_SYMBOLS_BLOCK_HEADER; - public static String HEX_EDITOR_ATARI_MADS_DEFINE_SYMBOLS_BLOCK_HEADER; - public static String HEX_EDITOR_ATARI_MADS_DEFINE_SYMBOL_HEADER; - public static String HEX_EDITOR_ATARI_MADS_BLOCK_ERROR; - - public static String HEX_EDITOR_ATARI_SAP_FILE_HEADER; - - public static String HEX_EDITOR_ATARI_SDX_NON_RELOC_BLOCK_HEADER; - public static String HEX_EDITOR_ATARI_SDX_NON_RELOC_BLOCK_HEADER_PARAMETERS; - public static String HEX_EDITOR_ATARI_SDX_RELOC_BLOCK_HEADER; - public static String HEX_EDITOR_ATARI_SDX_UPDATE_RELOC_BLOCK_HEADER; - public static String HEX_EDITOR_ATARI_SDX_UPDATE_SYMBOLS_BLOCK_HEADER; - public static String HEX_EDITOR_ATARI_SDX_DEFINE_SYMBOLS_BLOCK_HEADER; - public static String HEX_EDITOR_ATARI_SDX_BLOCK_ERROR; - - public static String HEX_EDITOR_C64_PRG_HEADER; - public static String HEX_EDITOR_C64_PRG_HEADER_PARAMETERS; - public static String HEX_EDITOR_C64_PRG_ERROR; - - public static String HEX_EDITOR_IFF_CHUNK; - public static String HEX_EDITOR_IFF_FORM_CHUNK; - public static String HEX_EDITOR_IFF_FILE_ERROR; - - public static String HEX_EDITOR_FILE_CONTENT_SIZE_FIELD_LABEL; - public static String HEX_EDITOR_FILE_CONTENT_SIZE_FIELD_TEXT; - public static String HEX_EDITOR_FILE_CONTENT_MODE_FIELD_LABEL; - public static String HEX_EDITOR_CHARACTER_SET_TYPE_FIELD_LABEL; - public static String HEX_EDITOR_BYTES_PER_ROW_FIELD_LABEL; - - public static String HEX_EDITOR_SAVE_SELECTION_AS_DIALOG_TITLE; - /** * Messages for {@link FileUtility}. */ @@ -103,14 +55,6 @@ public final class Texts extends NLS { public static String MESSAGE_E212; public static String MESSAGE_E213; - /** - * Message for the {@link HexEditor} - */ - public static String MESSAGE_E300; - public static String MESSAGE_E301; - public static String MESSAGE_I302; - public static String MESSAGE_I303; - /** * Initializes the constants. */ diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/Texts.properties b/com.wudsn.ide.base/src/com/wudsn/ide/base/Texts.properties index 4a270fa2..27268711 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/Texts.properties +++ b/com.wudsn.ide.base/src/com/wudsn/ide/base/Texts.properties @@ -2,50 +2,6 @@ DIALOG_TITLE=WUDSN IDE Dialog FILE_PATH_FIELD_BROWSE_BUTTON_LABEL=Browse... FILE_PATH_FIELD_DIALOG_MESSAGE=Select {0} -HEX_EDITOR_FILE_SIZE=File contains ${0} ({1}) bytes. - -HEX_EDITOR_ATARI_COM_BLOCK_HEADER=COM block -HEX_EDITOR_ATARI_COM_BLOCK_HEADER_PARAMETERS={0}-{1} ({2}) -HEX_EDITOR_ATARI_COM_BLOCK_ERROR=COM file structure error - -HEX_EDITOR_ATARI_DISK_IMAGE_HEADER=ATR header -HEX_EDITOR_ATARI_SECTOR_HEADER=Sector -HEX_EDITOR_ATARI_SECTOR_HEADER_PARAMETERS=({2}) -HEX_EDITOR_ATARI_SECTOR_ERROR=Sector structure error - -HEX_EDITOR_ATARI_MADS_RELOC_BLOCK_HEADER=MADS RELOC block {0}-{1} {2} -HEX_EDITOR_ATARI_MADS_UPDATE_RELOC_BLOCK_HEADER=MADS UPDATE RELOC block {0} {1} -HEX_EDITOR_ATARI_MADS_UPDATE_SYMBOLS_BLOCK_HEADER=MADS UPDATE SYMBOLS block {0} {1} -HEX_EDITOR_ATARI_MADS_DEFINE_SYMBOLS_BLOCK_HEADER=MADS DEFINE SYMBOLS block {0} -HEX_EDITOR_ATARI_MADS_DEFINE_SYMBOL_HEADER=MADS DEFINE SYMBOL {0} {1} {2} {3} -HEX_EDITOR_ATARI_MADS_BLOCK_ERROR=MADS file structure error - -HEX_EDITOR_ATARI_SAP_FILE_HEADER=SAP Header - -HEX_EDITOR_ATARI_SDX_NON_RELOC_BLOCK_HEADER=SDX NON-RELOC block -HEX_EDITOR_ATARI_SDX_NON_RELOC_BLOCK_HEADER_PARAMETERS={0}-{1} ({2}) -HEX_EDITOR_ATARI_SDX_RELOC_BLOCK_HEADER=SDX RELOC block {0} {1} {2} {3} -HEX_EDITOR_ATARI_SDX_UPDATE_RELOC_BLOCK_HEADER=SDX UPDATE RELOC block {0} {1} -HEX_EDITOR_ATARI_SDX_UPDATE_SYMBOLS_BLOCK_HEADER=SDX UPDATE SYMBOLS block {0} {1} -HEX_EDITOR_ATARI_SDX_DEFINE_SYMBOLS_BLOCK_HEADER=SDX DEFINE SYMBOLS block {0} {1} {2} -HEX_EDITOR_ATARI_SDX_BLOCK_ERROR=SDX file structure error - -HEX_EDITOR_C64_PRG_HEADER=Program -HEX_EDITOR_C64_PRG_HEADER_PARAMETERS={0}-{1} ({2}) -HEX_EDITOR_C64_PRG_ERROR=PRG file structure error - -HEX_EDITOR_IFF_CHUNK=Chunk {0} contains ${1} ({2}) bytes -HEX_EDITOR_IFF_FORM_CHUNK=Chunk {0} of type {1} contains ${2} ({3}) bytes -HEX_EDITOR_IFF_FILE_ERROR=IFF file structure error - -HEX_EDITOR_FILE_CONTENT_SIZE_FIELD_LABEL=File Size -HEX_EDITOR_FILE_CONTENT_SIZE_FIELD_TEXT=${0} ({1}) bytes -HEX_EDITOR_FILE_CONTENT_MODE_FIELD_LABEL=File Mode -HEX_EDITOR_CHARACTER_SET_TYPE_FIELD_LABEL=Character Set -HEX_EDITOR_BYTES_PER_ROW_FIELD_LABEL=Bytes per Row - -HEX_EDITOR_SAVE_SELECTION_AS_DIALOG_TITLE=Save ${0} ({1}) bytes as... - MESSAGE_E200=Folder '{0}' does not exist. MESSAGE_E201='{0}' is no folder but a file. MESSAGE_E202=Cannot create folder '{0}'. @@ -60,8 +16,3 @@ MESSAGE_E210=Cannot create file '{0}'. MESSAGE_E211=Cannot open file '{0}' for writing. MESSAGE_E212=Cannot write content of file '{0}'. MESSAGE_E213=Cannot close output stream of file '{0}'. - -MESSAGE_E300=File content cannot be interpreted as '{0}'. -MESSAGE_E301=File of type '{0}' is corrupted; check the last section of the file. -MESSAGE_I302=${0} ({1}) bytes copied to clipboard. -MESSAGE_I303=${0} ({1}) bytes saved as '{2}'. \ No newline at end of file diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/Texts_de_DE.properties b/com.wudsn.ide.base/src/com/wudsn/ide/base/Texts_de_DE.properties index 5ac1e8fc..4e65cb9f 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/Texts_de_DE.properties +++ b/com.wudsn.ide.base/src/com/wudsn/ide/base/Texts_de_DE.properties @@ -2,50 +2,6 @@ DIALOG_TITLE=WUDSN IDE Dialog FILE_PATH_FIELD_BROWSE_BUTTON_LABEL=Durchsuchen... FILE_PATH_FIELD_DIALOG_MESSAGE={0} auswählen -HEX_EDITOR_FILE_SIZE=Datei enhält {0} ({1}) Bytes. - -HEX_EDITOR_ATARI_COM_BLOCK_HEADER=COM Block -HEX_EDITOR_ATARI_COM_BLOCK_HEADER_PARAMETERS={0}-{1} ({2}) -HEX_EDITOR_ATARI_COM_BLOCK_ERROR=COM Dateistruktur defekt - -HEX_EDITOR_ATARI_DISK_IMAGE_HEADER=ATR Header -HEX_EDITOR_ATARI_SECTOR_HEADER=Sektor -HEX_EDITOR_ATARI_SECTOR_HEADER_PARAMETERS=({2}) -HEX_EDITOR_ATARI_SECTOR_ERROR=Sektorfehler - -HEX_EDITOR_ATARI_MADS_RELOC_BLOCK_HEADER=MADS RELOC Block {0}-{1} {2} -HEX_EDITOR_ATARI_MADS_UPDATE_RELOC_BLOCK_HEADER=MADS UPDATE RELOC Block {0} {1} -HEX_EDITOR_ATARI_MADS_UPDATE_SYMBOLS_BLOCK_HEADER=MADS UPDATE SYMBOLS Block {0} {1} -HEX_EDITOR_ATARI_MADS_DEFINE_SYMBOLS_BLOCK_HEADER=MADS DEFINE SYMBOLS Block {0} -HEX_EDITOR_ATARI_MADS_DEFINE_SYMBOL_HEADER=MADS DEFINE SYMBOL {0} {1} {2} {3} -HEX_EDITOR_ATARI_MADS_BLOCK_ERROR=MADS Dateistruktur defekt - -HEX_EDITOR_ATARI_SAP_FILE_HEADER=SAP Header - -HEX_EDITOR_ATARI_SDX_NON_RELOC_BLOCK_HEADER=SDX NON-RELOC block -HEX_EDITOR_ATARI_SDX_NON_RELOC_BLOCK_HEADER_PARAMETERS={0}-{1} ({2}) -HEX_EDITOR_ATARI_SDX_RELOC_BLOCK_HEADER=SDX NON-RELOC Block {0} {1} {2} {3} -HEX_EDITOR_ATARI_SDX_UPDATE_RELOC_BLOCK_HEADER=SDX UPDATE RELOC Block {0} {1} -HEX_EDITOR_ATARI_SDX_UPDATE_SYMBOLS_BLOCK_HEADER=SDX UPDATE SYMBOLS Block {0} {1} -HEX_EDITOR_ATARI_SDX_DEFINE_SYMBOLS_BLOCK_HEADER=SDX DEFINE SYMBOLS Block {0} {1} {2} -HEX_EDITOR_ATARI_SDX_BLOCK_ERROR=SDX Dateistruktur defekt - -HEX_EDITOR_C64_PRG_HEADER=Programm -HEX_EDITOR_C64_PRG_HEADER_PARAMETERS={0}-{1} ({2}) -HEX_EDITOR_C64_PRG_ERROR=PRG Dateistruktur defekt - -HEX_EDITOR_IFF_CHUNK=Chunk -HEX_EDITOR_IFF_FORM_CHUNK=Chunk {0} vom Typ {1} enhl#t ${2} ({3}) Bytes -HEX_EDITOR_IFF_FILE_ERROR=IFF Dateistruktur defekt - -HEX_EDITOR_FILE_CONTENT_SIZE_FIELD_LABEL=Dateigröße -HEX_EDITOR_FILE_CONTENT_SIZE_FIELD_TEXT=${0} ({1}) Bytes -HEX_EDITOR_FILE_CONTENT_MODE_FIELD_LABEL=Datei-Modus -HEX_EDITOR_CHARACTER_SET_TYPE_FIELD_LABEL=Zeichensatz -HEX_EDITOR_BYTES_PER_ROW_FIELD_LABEL=Bytes pro Zeile - -HEX_EDITOR_SAVE_SELECTION_AS_DIALOG_TITLE=Speichere ${0} ({1}) Bytes unter... - MESSAGE_E200=Ordner '{0}' existiert nicht. MESSAGE_E201='{0}' ist kein Ordner sondern eine Datei. MESSAGE_E202=Ordner '{0}' kann nicht erstellt werden. @@ -60,8 +16,3 @@ MESSAGE_E210=Datei '{0}' kann nicht erstellt werden. MESSAGE_E211=Datei '{0}' kann nicht zum Schreiben geöffnet werden. MESSAGE_E212=Inhalt der Datei '{0}' kann nicht geschrieben werden. MESSAGE_E213=Ausgabedatenstrom der Datei '{0}' kann geschlossen werden. - -MESSAGE_E300=Inhalt der Datei kann nicht als '{0}' interpretiert werden. -MESSAGE_E301=Datei vom Typ '{0}' ist korrupt; überprüfen Sie den letzten Abschnitt der Datei -MESSAGE_I302=${0} ({1}) Bytes in die Zwischenablage kopiert. -MESSAGE_I303=${0} ({1}) Bytes gespeichert unter '{2}'. \ No newline at end of file diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/common/AbstractIDEPlugin.java b/com.wudsn.ide.base/src/com/wudsn/ide/base/common/AbstractIDEPlugin.java index 069a1b80..878ce70b 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/common/AbstractIDEPlugin.java +++ b/com.wudsn.ide.base/src/com/wudsn/ide/base/common/AbstractIDEPlugin.java @@ -94,7 +94,7 @@ public abstract class AbstractIDEPlugin extends AbstractUIPlugin { } message = format(message, parameters); getLog().log(new Status(IStatus.INFO, getPluginId(), IStatus.OK, message, null)); - // System.out.println(message); +// System.out.println(message); } /** diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/Hardware.java b/com.wudsn.ide.base/src/com/wudsn/ide/base/hardware/Hardware.java similarity index 83% rename from com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/Hardware.java rename to com.wudsn.ide.base/src/com/wudsn/ide/base/hardware/Hardware.java index 2c9beb24..76a4640c 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/Hardware.java +++ b/com.wudsn.ide.base/src/com/wudsn/ide/base/hardware/Hardware.java @@ -16,11 +16,10 @@ * You should have received a copy of the GNU General Public License * along with WUDSN IDE. If not, see . */ -package com.wudsn.ide.base.editor.hex; +package com.wudsn.ide.base.hardware; /** - * Enum for the supported hardware platforms. Used for file content modes and - * character sets. + * Enum for the hardware platforms. * * @author Peter Dell * diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorCharacterSet.java b/com.wudsn.ide.base/src/com/wudsn/ide/base/hardware/HardwareCharacterSet.java similarity index 75% rename from com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorCharacterSet.java rename to com.wudsn.ide.base/src/com/wudsn/ide/base/hardware/HardwareCharacterSet.java index dd742a59..84a7ca10 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorCharacterSet.java +++ b/com.wudsn.ide.base/src/com/wudsn/ide/base/hardware/HardwareCharacterSet.java @@ -17,7 +17,7 @@ * along with WUDSN IDE. If not, see . */ -package com.wudsn.ide.base.editor.hex; +package com.wudsn.ide.base.hardware; import java.io.File; import java.util.Map; @@ -35,11 +35,12 @@ import com.wudsn.ide.base.common.ResourceUtility; /** * Logical character set with physical font and character mapping. + * TODO Generalize C64 to CBM ASCII * * @since 1.7.0 */ -enum HexEditorCharacterSet { - ASCII, ATARI_ATASCII, ATARI_ATASCII_SCREEN_CODE, ATARI_INTERNATIONAL, ATARI_INTERNATIONAL_SCREEN_CODE, C64_PETSCII_UPPER_CASE, C64_PETSCII_LOWER_CASE; +public enum HardwareCharacterSet { + ASCII, ATARI_ATASCII, ATARI_ATASCII_SCREEN_CODE, ATARI_INTERNATIONAL, ATARI_INTERNATIONAL_SCREEN_CODE, CBM_PETSCII_UPPER_CASE, CBM_PETSCII_LOWER_CASE; /** * Data class to encapsulate lazy loading and reuse of SWT fonts. @@ -54,20 +55,20 @@ enum HexEditorCharacterSet { private final static int ATARI_FONT_BASE = 0xe000; private final static int ATARI_INT_FONT_BASE = 0xe100; - private final static String C64_FONT_PATH = "fonts/c64/C64Classic-Regular.ttf"; - private final static String C64_FONT_NAME = "C64 Classic"; - private final static int C64_FONT_SIZE = 6; - private final static int C64_UPPER_FONT_BASE = 0x0100; - private final static int C64_LOWER_FONT_BASE = 0x0200; + private final static String CBM_FONT_PATH = "fonts/c64/C64Classic-Regular.ttf"; + private final static String CBM_FONT_NAME = "C64 Classic"; + private final static int CBM_FONT_SIZE = 6; + private final static int CBM_UPPER_FONT_BASE = 0x0100; + private final static int CBM_LOWER_FONT_BASE = 0x0200; - private static Map instanceMap; + private static Map instanceMap; private static Map fontMap; Font font; char[] characterMapping; static { - instanceMap = new TreeMap(); + instanceMap = new TreeMap(); fontMap = new TreeMap(); } @@ -79,7 +80,7 @@ enum HexEditorCharacterSet { * * @return The instance, not null. */ - public static Data getInstance(HexEditorCharacterSet type) { + public static Data getInstance(HardwareCharacterSet type) { if (type == null) { throw new IllegalArgumentException("Parameter 'type' must not be null."); } @@ -131,17 +132,17 @@ enum HexEditorCharacterSet { fontSize = ATARI_FONT_SIZE; result.setAtariScreenCodeMapping(ATARI_INT_FONT_BASE); break; - case C64_PETSCII_UPPER_CASE: - fontPath = C64_FONT_PATH; - fontName = C64_FONT_NAME; - fontSize = C64_FONT_SIZE; - result.setIdentityMapping(C64_UPPER_FONT_BASE); + case CBM_PETSCII_UPPER_CASE: + fontPath = CBM_FONT_PATH; + fontName = CBM_FONT_NAME; + fontSize = CBM_FONT_SIZE; + result.setIdentityMapping(CBM_UPPER_FONT_BASE); break; - case C64_PETSCII_LOWER_CASE: - fontPath = C64_FONT_PATH; - fontName = C64_FONT_NAME; - fontSize = C64_FONT_SIZE; - result.setIdentityMapping(C64_LOWER_FONT_BASE); + case CBM_PETSCII_LOWER_CASE: + fontPath = CBM_FONT_PATH; + fontName = CBM_FONT_NAME; + fontSize = CBM_FONT_SIZE; + result.setIdentityMapping(CBM_LOWER_FONT_BASE); break; default: throw new IllegalArgumentException("Unsupported font type " + type + "."); @@ -225,29 +226,6 @@ enum HexEditorCharacterSet { } - /** - * Determines the default character set for a given file content mode. - * - * @param fileContentMode - * The file content mode, not null. - * @return The default character set, not null. - */ - public static HexEditorCharacterSet getDefaultCharacterSet(HexEditorFileContentMode fileContentMode) { - if (fileContentMode == null) { - throw new IllegalArgumentException("Parameter 'fileContentMode' must not be null."); - } - switch (fileContentMode.getHardware()) { - case GENERIC: - return ASCII; - case ATARI8BIT: - return ATARI_ATASCII; - case C64: - return C64_PETSCII_UPPER_CASE; - } - throw new IllegalArgumentException("File content mode " + fileContentMode + " has an unknown hardware " - + fileContentMode.getHardware()); - } - /** * Gets the SWT font. * diff --git a/com.wudsn.ide.gfx/META-INF/MANIFEST.MF b/com.wudsn.ide.gfx/META-INF/MANIFEST.MF index ad06deef..5dfbc3df 100644 --- a/com.wudsn.ide.gfx/META-INF/MANIFEST.MF +++ b/com.wudsn.ide.gfx/META-INF/MANIFEST.MF @@ -11,7 +11,8 @@ Require-Bundle: com.wudsn.ide.base, org.eclipse.ui, org.eclipse.ui.editors, org.eclipse.ui.ide, - org.eclipse.ui.console + org.eclipse.ui.console, + org.eclipse.ui.views Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy Bundle-Localization: plugin diff --git a/com.wudsn.ide.hex/.classpath b/com.wudsn.ide.hex/.classpath index 6e16b23d..0745e339 100644 --- a/com.wudsn.ide.hex/.classpath +++ b/com.wudsn.ide.hex/.classpath @@ -3,5 +3,6 @@ + diff --git a/com.wudsn.ide.hex/META-INF/MANIFEST.MF b/com.wudsn.ide.hex/META-INF/MANIFEST.MF index c150f5ef..b386c4c8 100644 --- a/com.wudsn.ide.hex/META-INF/MANIFEST.MF +++ b/com.wudsn.ide.hex/META-INF/MANIFEST.MF @@ -1,12 +1,18 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 -Bundle-Name: Hex Editor Test -Bundle-SymbolicName: com.wudsn.ide.hex -Bundle-Version: 1.7.1 +Bundle-Name: WUDSN IDE Hex Editor Plugin +Bundle-SymbolicName: com.wudsn.ide.hex;singleton:=true +Bundle-Version: 1.7.1.qualifier Bundle-Activator: com.wudsn.ide.hex.HexPlugin -Bundle-Vendor: WUDSN +Bundle-Localization: plugin +Bundle-Vendor: Peter Dell Require-Bundle: org.eclipse.ui, - org.eclipse.core.runtime + org.eclipse.core.runtime, + org.eclipse.core.resources, + org.eclipse.ui.ide, + org.eclipse.ui.views, + com.wudsn.ide.base Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy Automatic-Module-Name: com.wudsn.ide.hex +Export-Package: com.wudsn.ide.hex diff --git a/com.wudsn.ide.hex/build.properties b/com.wudsn.ide.hex/build.properties index 415df9d1..3ec7b4a9 100644 --- a/com.wudsn.ide.hex/build.properties +++ b/com.wudsn.ide.hex/build.properties @@ -2,5 +2,8 @@ source.. = src/ output.. = bin/ bin.includes = META-INF/,\ .,\ - fonts/ + icons/,\ + plugin.properties,\ + plugin_de_DE.properties,\ + plugin.xml diff --git a/com.wudsn.ide.hex/fonts/atari8/ATARCC__.TTF b/com.wudsn.ide.hex/fonts/atari8/ATARCC__.TTF deleted file mode 100644 index 4a69e6decf2dce3fe3689af112c007a612031cf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56192 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 z

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 diff --git a/com.wudsn.ide.hex/fonts/atari8/ReadMe.rtf b/com.wudsn.ide.hex/fonts/atari8/ReadMe.rtf deleted file mode 100644 index a36354c3..00000000 --- a/com.wudsn.ide.hex/fonts/atari8/ReadMe.rtf +++ /dev/null @@ -1,317 +0,0 @@ -{\rtf1\ansi\deff0\deftab720{\fonttbl{\f0\fswiss MS Sans Serif;}{\f1\froman\fcharset2 Symbol;}{\f2\fmodern\fprq1 Atari Classic Chunky;}{\f3\froman Times New Roman;}{\f4\fswiss\fprq2 Arial;}} -{\colortbl\red0\green0\blue0;\red0\green0\blue255;} -\deflang1033\pard\plain\f2\fs24\cf1 Atari Classic TrueType Fonts \plain\f2\fs24\cf0 -\par \plain\f4\fs16\cf0 (Windows Version 1.1) -\par Created by Mark Simonson (v.1.0-1998, v.1.1-2001) -\par marksim@bitstream.net -\par Website: Mac/Atari Fusion--Atari Home Computer Resources for Mac Users -\par http://www2.bitstream.net/~marksim/atarimac/ -\par Macintosh version also available. -\par -\par With these fonts installed, you can view and print Atari text files in any text editor that allows you to change fonts (WordPad, for example). Tip: In order to get the correct line breaks, you will need to change the ATASCII return character (155) to the DOS LF character. (In the Character Map accessory, the ATASCII return is the blank character that comes just before the inverse up-arrow.) -\par -\par There are three different fonts. \plain\f4\fs16\cf0\b Atari Classic Chunky \plain\f4\fs16\cf0 is a pixel-for-pixel copy of the original ATASCII character set. \plain\f4\fs16\cf0\b Atari Classic Smooth \plain\f4\fs16\cf0 interprets the pixel aliasing (stair steps) as diagonal lines. \plain\f4\fs16\cf0\b Atari Classic Extrasmooth \plain\f4\fs16\cf0 refines this idea further with the addition of curves. \plain\f4\fs16\cf0\b Smooth\plain\f4\fs16\cf0 and \plain\f4\fs16\cf0\b Extrasmooth\plain\f4\fs16\cf0 were designed for better appearance and legibility at larger sizes and on print-outs. Use the one that looks best to you. -\par -\par These fonts will tend to look uneven at font sizes that do not correspond to the 8-by-8 pixel grid that the characters are based on. Because Windows assumes 96ppi screen resolution, they will look best in a font size that is a multiple of 6 (i.e., 6pt, 12pt, 18pt, etc.). (In Windows, 6 points = 8 pixels.) -\par -\par The Atari Classic TrueType fonts duplicate the ATASCII character set on a low-level basis. Unlike a normal Windows font, ATASCII utilizes all character codes from $00 to $FF (0 to 255). The lower half are normal characters; the upper half are inverse versions of the lower half. The basic ASCII characters ($00 to $7F) correspond fairly closely except for the first 32, which don't normally contain characters in a Windows font. -\par -\par Due to differences between the way Windows and the Atari use character codes, not all characters will display properly in Windows. In fact, some characters will not display at all (though they do exist in the font). Unfortunately, this is due to certain character codes being reserved in Windows and there doesn't appear to be any way to work around it. The character codes affected are: $00-$1F (0-31), $7F-$81 (127-129), $8D-$90 (141-144), $9D (157), and $9F (158). -\par -\par Not all characters can be typed from the keyboard. You can however copy characters as needed from this document (see tables below). The Character Map desk accessory can help also. -\par -\par \plain\f4\fs16\cf0\b ATASCII CHARACTER SET TABLES -\par \plain\f4\fs16\cf0 -\par In order to see the ATASCII character set with these tables, the Atari Classic TrueType fonts must be installed. Characters that are not displayed properly are due to character code usage differences between ATASCII and Windows (see above). -\par -\par -\par \plain\f4\fs16\cf0\b TABLE 1: ATASCII Character Dump Block -\par \plain\f4\fs16\cf0 -\par All characters (ATASCII $00 thru $FF) 16 characters per -\par line. -\par -\par -\par \plain\f2\fs12\cf0 \'01\'02\'03\'04\'05\'06\'07\'08\tab -\par \'0b\'0c -\par \'0e\'0f -\par \'10\'11\'12\'13\'14\'15\'16\'17\'18\'19\'1a\'1b\'1c\'1d\'1e\'1f -\par !"#$%&'()*+,-./ -\par 0123456789:;<=>? -\par @ABCDEFGHIJKLMNO -\par PQRSTUVWXYZ[\\]^_ -\par `abcdefghijklmno -\par pqrstuvwxyz\{|\}~ -\par \'80\'81\'82\'83\'84\'85\'86\'87\'88\'89\'8a\'8b\'8c\'8d\'8e\'8f -\par \'90''""\bullet \endash \emdash \'98\'99\'9a \'9c\'9d\'9e\'9f -\par \~\'a1\'a2\'a3\'a4\'a5\'a6\'a7\'a8\'a9\'aa\'ab\'ac\'ad\'ae\'af -\par \'b0\'b1\'b2\'b3\'b4\'b5\'b6\'b7\'b8\'b9\'ba\'bb\'bc\'bd\'be\'bf -\par \'c0\'c1\'c2\'c3\'c4\'c5\'c6\'c7\'c8\'c9\'ca\'cb\'cc\'cd\'ce\'cf -\par \'d0\'d1\'d2\'d3\'d4\'d5\'d6\'d7\'d8\'d9\'da\'db\'dc\'dd\'de\'df -\par \'e0\'e1\'e2\'e3\'e4\'e5\'e6\'e7\'e8\'e9\'ea\'eb\'ec\'ed\'ee\'ef -\par \'f0\'f1\'f2\'f3\'f4\'f5\'f6\'f7\'f8\'f9\'fa\'fb\'fc\'fd\'fe\'ff -\par \plain\f4\fs16\cf0 -\par -\par \plain\f4\fs16\cf0\b TABLE 2: ATASCII Character Dump List -\par \plain\f4\fs16\cf0 -\par All characters (ATASCII $00 thru $FF) one character per -\par line with hexadecimal value indicated on the left. -\par -\par \plain\f2\fs12\cf0 00= -\par 01=\'01 -\par 02=\'02 -\par 03=\'03 -\par 04=\'04 -\par 05=\'05 -\par 06=\'06 -\par 07=\'07 -\par 08=\'08 -\par 09=\tab -\par 0A= -\par -\par 0B=\'0b -\par 0C=\'0c -\par 0D= -\par 0E=\'0e -\par 0F=\'0f -\par 10=\'10 -\par 11=\'11 -\par 12=\'12 -\par 13=\'13 -\par 14=\'14 -\par 15=\'15 -\par 16=\'16 -\par 17=\'17 -\par 18=\'18 -\par 19=\'19 -\par 1A=\'1a -\par 1B=\'1b -\par 1C=\'1c -\par 1D=\'1d -\par 1E=\'1e -\par 1F=\'1f -\par 20= -\par 21=! -\par 22=" -\par 23=# -\par 24=$ -\par 25=% -\par 26=& -\par 27=' -\par 28=( -\par 29=) -\par 2A=* -\par 2B=+ -\par 2C=, -\par 2D=- -\par 2E=. -\par 2F=/ -\par 30=0 -\par 31=1 -\par 32=2 -\par 33=3 -\par 34=4 -\par 35=5 -\par 36=6 -\par 37=7 -\par 38=8 -\par 39=9 -\par 3A=: -\par 3B=; -\par 3C=< -\par 3D== -\par 3E=> -\par 3F=? -\par 40=@ -\par 41=A -\par 42=B -\par 43=C -\par 44=D -\par 45=E -\par 46=F -\par 47=G -\par 48=H -\par 49=I -\par 4A=J -\par 4B=K -\par 4C=L -\par 4D=M -\par 4E=N -\par 4F=O -\par 50=P -\par 51=Q -\par 52=R -\par 53=S -\par 54=T -\par 55=U -\par 56=V -\par 57=W -\par 58=X -\par 59=Y -\par 5A=Z -\par 5B=[ -\par 5C=\\ -\par 5D=] -\par 5E=^ -\par 5F=_ -\par 60=` -\par 61=a -\par 62=b -\par 63=c -\par 64=d -\par 65=e -\par 66=f -\par 67=g -\par 68=h -\par 69=i -\par 6A=j -\par 6B=k -\par 6C=l -\par 6D=m -\par 6E=n -\par 6F=o -\par 70=p -\par 71=q -\par 72=r -\par 73=s -\par 74=t -\par 75=u -\par 76=v -\par 77=w -\par 78=x -\par 79=y -\par 7A=z -\par 7B=\{ -\par 7C=| -\par 7D=\} -\par 7E=~ -\par 7F= -\par 80=\'80 -\par 81=\'81 -\par 82=\'82 -\par 83=\'83 -\par 84=\'84 -\par 85=\'85 -\par 86=\'86 -\par 87=\'87 -\par 88=\'88 -\par 89=\'89 -\par 8A=\'8a -\par 8B=\'8b -\par 8C=\'8c -\par 8D=\'8d -\par 8E=\'8e -\par 8F=\'8f -\par 90=\'90 -\par 91=' -\par 92=' -\par 93=" -\par 94=" -\par 95=\bullet -\par 96=\endash -\par 97=\emdash -\par 98=\'98 -\par 99=\'99 -\par 9A=\'9a -\par 9B= -\par 9C=\'9c -\par 9D=\'9d -\par 9E=\'9e -\par 9F=\'9f -\par A0=\~ -\par A1=\'a1 -\par A2=\'a2 -\par A3=\'a3 -\par A4=\'a4 -\par A5=\'a5 -\par A6=\'a6 -\par A7=\'a7 -\par A8=\'a8 -\par A9=\'a9 -\par AA=\'aa -\par AB=\'ab -\par AC=\'ac -\par AD=\'ad -\par AE=\'ae -\par AF=\'af -\par B0=\'b0 -\par B1=\'b1 -\par B2=\'b2 -\par B3=\'b3 -\par B4=\'b4 -\par B5=\'b5 -\par B6=\'b6 -\par B7=\'b7 -\par B8=\'b8 -\par B9=\'b9 -\par BA=\'ba -\par BB=\'bb -\par BC=\'bc -\par BD=\'bd -\par BE=\'be -\par BF=\'bf -\par C0=\'c0 -\par C1=\'c1 -\par C2=\'c2 -\par C3=\'c3 -\par C4=\'c4 -\par C5=\'c5 -\par C6=\'c6 -\par C7=\'c7 -\par C8=\'c8 -\par C9=\'c9 -\par CA=\'ca -\par CB=\'cb -\par CC=\'cc -\par CD=\'cd -\par CE=\'ce -\par CF=\'cf -\par D0=\'d0 -\par D1=\'d1 -\par D2=\'d2 -\par D3=\'d3 -\par D4=\'d4 -\par D5=\'d5 -\par D6=\'d6 -\par D7=\'d7 -\par D8=\'d8 -\par D9=\'d9 -\par DA=\'da -\par DB=\'db -\par DC=\'dc -\par DD=\'dd -\par DE=\'de -\par DF=\'df -\par E0=\'e0 -\par E1=\'e1 -\par E2=\'e2 -\par E3=\'e3 -\par E4=\'e4 -\par E5=\'e5 -\par E6=\'e6 -\par E7=\'e7 -\par E8=\'e8 -\par E9=\'e9 -\par EA=\'ea -\par EB=\'eb -\par EC=\'ec -\par ED=\'ed -\par EE=\'ee -\par EF=\'ef -\par F0=\'f0 -\par F1=\'f1 -\par F2=\'f2 -\par F3=\'f3 -\par F4=\'f4 -\par F5=\'f5 -\par F6=\'f6 -\par F7=\'f7 -\par F8=\'f8 -\par F9=\'f9 -\par FA=\'fa -\par FB=\'fb -\par FC=\'fc -\par FD=\'fd -\par FE=\'fe -\par FF=\'ff -\par } - \ No newline at end of file diff --git a/com.wudsn.ide.hex/fonts/c64/C64_Pro_v1.0-STYLE.ttf b/com.wudsn.ide.hex/fonts/c64/C64_Pro_v1.0-STYLE.ttf deleted file mode 100644 index db919c11eb3ba931d09111bb9bc9ee67930fceb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38952 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 MEm-GR{ATk10tq!T*Z=?k diff --git a/com.wudsn.ide.hex/fonts/c64/C64_Pro_v1.0-STYLE.txt b/com.wudsn.ide.hex/fonts/c64/C64_Pro_v1.0-STYLE.txt deleted file mode 100644 index acde6200..00000000 --- a/com.wudsn.ide.hex/fonts/c64/C64_Pro_v1.0-STYLE.txt +++ /dev/null @@ -1,6 +0,0 @@ - -Fonts in this package are (c) 2010 Style. - -You MAY NOT: sell this font; include/redistribute this font in any font collection regardless of pricing; provide the font for direct download from any web site. You MAY: link to "http://style64.org/c64-truetype" in order for others to download and install the font; embed this font or its .eot and .woff variants without any modification and using the same filename it was provided with for display on any web site using @font-face rules; use this font in static images and vector art; include this font without any modification and using the same filename it was provided with as part of a software package but ONLY if said software package is freely provided to end users. You may also contact us to negotiate a (possibly commercial) license for your use outside of these guidelines at "http://style64.org/contact-style". - -At all times the most recent version of this license can be found at "http://style64.org/c64-truetype/license". diff --git a/com.wudsn.ide.base/icons/copy-disabled.gif b/com.wudsn.ide.hex/icons/copy-disabled.gif similarity index 100% rename from com.wudsn.ide.base/icons/copy-disabled.gif rename to com.wudsn.ide.hex/icons/copy-disabled.gif diff --git a/com.wudsn.ide.base/icons/copy-enabled.gif b/com.wudsn.ide.hex/icons/copy-enabled.gif similarity index 100% rename from com.wudsn.ide.base/icons/copy-enabled.gif rename to com.wudsn.ide.hex/icons/copy-enabled.gif diff --git a/com.wudsn.ide.base/icons/cut-disabled.gif b/com.wudsn.ide.hex/icons/cut-disabled.gif similarity index 100% rename from com.wudsn.ide.base/icons/cut-disabled.gif rename to com.wudsn.ide.hex/icons/cut-disabled.gif diff --git a/com.wudsn.ide.base/icons/cut-enabled.gif b/com.wudsn.ide.hex/icons/cut-enabled.gif similarity index 100% rename from com.wudsn.ide.base/icons/cut-enabled.gif rename to com.wudsn.ide.hex/icons/cut-enabled.gif diff --git a/com.wudsn.ide.base/icons/delete-disabled.gif b/com.wudsn.ide.hex/icons/delete-disabled.gif similarity index 100% rename from com.wudsn.ide.base/icons/delete-disabled.gif rename to com.wudsn.ide.hex/icons/delete-disabled.gif diff --git a/com.wudsn.ide.base/icons/hex-editor-16x16.gif b/com.wudsn.ide.hex/icons/hex-editor-16x16.gif similarity index 100% rename from com.wudsn.ide.base/icons/hex-editor-16x16.gif rename to com.wudsn.ide.hex/icons/hex-editor-16x16.gif diff --git a/com.wudsn.ide.base/icons/hex-editor-segment-16x16.gif b/com.wudsn.ide.hex/icons/hex-editor-segment-16x16.gif similarity index 100% rename from com.wudsn.ide.base/icons/hex-editor-segment-16x16.gif rename to com.wudsn.ide.hex/icons/hex-editor-segment-16x16.gif diff --git a/com.wudsn.ide.base/icons/import-disabled.gif b/com.wudsn.ide.hex/icons/import-disabled.gif similarity index 100% rename from com.wudsn.ide.base/icons/import-disabled.gif rename to com.wudsn.ide.hex/icons/import-disabled.gif diff --git a/com.wudsn.ide.base/icons/import-enabled.gif b/com.wudsn.ide.hex/icons/import-enabled.gif similarity index 100% rename from com.wudsn.ide.base/icons/import-enabled.gif rename to com.wudsn.ide.hex/icons/import-enabled.gif diff --git a/com.wudsn.ide.base/icons/paste-disabled.gif b/com.wudsn.ide.hex/icons/paste-disabled.gif similarity index 100% rename from com.wudsn.ide.base/icons/paste-disabled.gif rename to com.wudsn.ide.hex/icons/paste-disabled.gif diff --git a/com.wudsn.ide.base/icons/paste-enabled.gif b/com.wudsn.ide.hex/icons/paste-enabled.gif similarity index 100% rename from com.wudsn.ide.base/icons/paste-enabled.gif rename to com.wudsn.ide.hex/icons/paste-enabled.gif diff --git a/com.wudsn.ide.base/icons/save-as-disabled.gif b/com.wudsn.ide.hex/icons/save-as-disabled.gif similarity index 100% rename from com.wudsn.ide.base/icons/save-as-disabled.gif rename to com.wudsn.ide.hex/icons/save-as-disabled.gif diff --git a/com.wudsn.ide.base/icons/save-as-enabled.gif b/com.wudsn.ide.hex/icons/save-as-enabled.gif similarity index 100% rename from com.wudsn.ide.base/icons/save-as-enabled.gif rename to com.wudsn.ide.hex/icons/save-as-enabled.gif diff --git a/com.wudsn.ide.hex/plugin.properties b/com.wudsn.ide.hex/plugin.properties new file mode 100644 index 00000000..7f560e89 --- /dev/null +++ b/com.wudsn.ide.hex/plugin.properties @@ -0,0 +1,21 @@ + +com.wudsn.ide.hex.HexEditor.name=Hex Editor +com.wudsn.ide.hex.HexEditorOpenCommand.name=Open With Hex Editor +com.wudsn.ide.hex.HexEditorCopyToClipboardCommand.name=Copy +com.wudsn.ide.hex.HexEditorCopyToClipboardAsMenu.name=Copy as +com.wudsn.ide.hex.HexEditorCopyToClipboardAsDecimalValuesCommand.name=Copy as Decimal Values +com.wudsn.ide.hex.HexEditorCopyToClipboardAsDecimalValuesBlockCommand.name=Copy as Decimal Values in Block Format +com.wudsn.ide.hex.HexEditorCopyToClipboardAsHexValuesCommand.name=Copy as Hexadecimal Values +com.wudsn.ide.hex.HexEditorCopyToClipboardAsASCIIStringCommand.name=Copy as ASCII String +com.wudsn.ide.hex.HexEditorPasteFromClipboardCommand.name=Paste +com.wudsn.ide.hex.HexEditorSaveSelectionAsCommand.name=Save Selection as... + +com.wudsn.ide.hex.HexEditorFileContentMode.BINARY=Binary +com.wudsn.ide.hex.HexEditorFileContentMode.ATARI_COM_FILE=Atari COM File +com.wudsn.ide.hex.HexEditorFileContentMode.ATARI_DISK_IMAGE=Atari Disk Image +com.wudsn.ide.hex.HexEditorFileContentMode.ATARI_DISK_IMAGE_K_FILE=Atari Disk Image (k-File) +com.wudsn.ide.hex.HexEditorFileContentMode.ATARI_MADS_FILE=Atari MADS File +com.wudsn.ide.hex.HexEditorFileContentMode.ATARI_SDX_FILE=Atari SpartaDOS X File +com.wudsn.ide.hex.HexEditorFileContentMode.ATARI_SAP_FILE=Atari SAP File +com.wudsn.ide.hex.HexEditorFileContentMode.C64_PRG_FILE=C64 PRG File +com.wudsn.ide.hex.HexEditorFileContentMode.IFF_FILE=IFF File diff --git a/com.wudsn.ide.hex/plugin.xml b/com.wudsn.ide.hex/plugin.xml new file mode 100644 index 00000000..45c368de --- /dev/null +++ b/com.wudsn.ide.hex/plugin.xml @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ + + + + + + + + + + + + + + + + + + + + + diff --git a/com.wudsn.ide.hex/plugin_de_DE.properties b/com.wudsn.ide.hex/plugin_de_DE.properties new file mode 100644 index 00000000..33305822 --- /dev/null +++ b/com.wudsn.ide.hex/plugin_de_DE.properties @@ -0,0 +1,21 @@ + +com.wudsn.ide.hex.HexEditor.name=Hex Editor +com.wudsn.ide.hex.HexEditorOpenCommand.name=Öffnen mit Hex Editor +com.wudsn.ide.hex.HexEditorCopyToClipboardCommand.name=Kopieren +com.wudsn.ide.hex.HexEditorCopyToClipboardAsMenu.name=Kopieren als +com.wudsn.ide.hex.HexEditorCopyToClipboardAsDecimalValuesCommand.name=Kopieren als dezimale Werte +com.wudsn.ide.hex.HexEditorCopyToClipboardAsDecimalValuesBlockCommand.name=Kopieren als dezimale Werte im Blocksatz +com.wudsn.ide.hex.HexEditorCopyToClipboardAsHexValuesCommand.name=Kopieren als hexadezimale Werte +com.wudsn.ide.hex.HexEditorCopyToClipboardAsASCIIStringCommand.name=Kopieren als ASCII Text +com.wudsn.ide.hex.HexEditorPasteFromClipboardCommand.name=Einfügen +com.wudsn.ide.hex.HexEditorSaveSelectionAsCommand.name=Auswahl Speichern unter... + +com.wudsn.ide.hex.HexEditorFileContentMode.BINARY=Binär +com.wudsn.ide.hex.HexEditorFileContentMode.ATARI_COM_FILE=Atari COM-Datei +com.wudsn.ide.hex.HexEditorFileContentMode.ATARI_DISK_IMAGE=Atari Disk Image +com.wudsn.ide.hex.HexEditorFileContentMode.ATARI_DISK_IMAGE_K_FILE=Atari Disk Image (k-Datei) +com.wudsn.ide.hex.HexEditorFileContentMode.ATARI_MADS_FILE=Atari MADS-Datei +com.wudsn.ide.hex.HexEditorFileContentMode.ATARI_SAP_FILE=Atari SAP-Datei +com.wudsn.ide.hex.HexEditorFileContentMode.ATARI_SDX_FILE=Atari SpartaDOS X-Datei +com.wudsn.ide.hex.HexEditorFileContentMode.C64_PRG_FILE=C64 PRG-Datei +com.wudsn.ide.hex.HexEditorFileContentMode.IFF_FILE=IFF-Datei diff --git a/com.wudsn.ide.hex/src/com/wudsn/ide/hex/FileContent.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/FileContent.java new file mode 100644 index 00000000..698e5e7a --- /dev/null +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/FileContent.java @@ -0,0 +1,47 @@ +package com.wudsn.ide.hex; + +public interface FileContent { + + /** + * Gets the length of the file content. + * + * @return The length of the file content, a non-negative integer. + */ + public int getLength(); + + /** + * Gets a byte (8 bit) from the file content. + * + * @param offset + * The offset, a non-negative integer. + * @return The byte from the file content. + */ + public int getByte(long offset); + + /** + * Gets a word (16 bit) in little endian format from the file content. + * + * @param offset + * The offset, a non-negative integer. + * @return The word from the file content. + */ + public int getWord(long offset); + + /** + * Gets a word (16 bit) in big endian format from the file content. + * + * @param offset + * The offset, a non-negative integer. + * @return The word from the file content. + */ + public int getWordBigEndian(long offset); + + /** + * Gets a double word (32 bit) in big endian format from the file content. + * + * @param offset + * The offset, a non-negative integer. + * @return The word from the file content. + */ + public long getDoubleWordBigEndian(long offset); +} diff --git a/com.wudsn.ide.hex/src/com/wudsn/ide/hex/FileContentImpl.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/FileContentImpl.java new file mode 100644 index 00000000..31ba06a7 --- /dev/null +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/FileContentImpl.java @@ -0,0 +1,78 @@ +package com.wudsn.ide.hex; + +public class FileContentImpl implements FileContent{ + + private byte[] fileContent; + + public FileContentImpl(byte[] fileContent) { + if (fileContent == null) { + throw new IllegalArgumentException("Parameter 'fileContent' must not be null."); + } + this.fileContent = fileContent; + } + + /** + * Gets the length of the file content. + * + * @return The length of the file content, a non-negative integer. + */ + @Override + public int getLength() { + return fileContent.length; + } + + /** + * Gets a byte (8 bit) from the file content. + * + * @param offset + * The offset, a non-negative integer. + * @return The byte from the file content. + */ + @Override + public int getByte(long offset) { + if (offset < 0) { + throw new IllegalArgumentException("Parameter offset=" + offset + " must not be negative"); + } + if (offset >= fileContent.length) { + throw new IllegalArgumentException( + "Parameter offset=" + offset + " must be less than the file content size " + fileContent.length); + } + return fileContent[(int) offset] & 0xff; + } + + /** + * Gets a word (16 bit) in little endian format from the file content. + * + * @param offset + * The offset, a non-negative integer. + * @return The word from the file content. + */ + @Override + public int getWord(long offset) { + return getByte(offset) + 0x100 * getByte(offset + 1); + } + + /** + * Gets a word (16 bit) in big endian format from the file content. + * + * @param offset + * The offset, a non-negative integer. + * @return The word from the file content. + */ + @Override + public int getWordBigEndian(long offset) { + return getByte(offset + 1) + 0x100 * getByte(offset); + } + + /** + * Gets a double word (32 bit) in big endian format from the file content. + * + * @param offset + * The offset, a non-negative integer. + * @return The word from the file content. + */ + @Override + public long getDoubleWordBigEndian(long offset) { + return getWordBigEndian(offset + 2) + 0x10000 * getWordBigEndian(offset); + } +} diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditor.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditor.java similarity index 83% rename from com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditor.java rename to com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditor.java index db35130c..61456581 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditor.java +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditor.java @@ -17,7 +17,7 @@ * along with WUDSN IDE. If not, see . */ -package com.wudsn.ide.base.editor.hex; +package com.wudsn.ide.hex; import java.io.File; import java.util.Iterator; @@ -26,7 +26,6 @@ import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; @@ -54,7 +53,6 @@ import org.eclipse.ui.part.EditorPart; import org.eclipse.ui.views.contentoutline.IContentOutlinePage; import com.wudsn.ide.base.BasePlugin; -import com.wudsn.ide.base.Texts; import com.wudsn.ide.base.common.ByteArrayUtility; import com.wudsn.ide.base.common.FileUtility; import com.wudsn.ide.base.common.HexUtility; @@ -68,6 +66,7 @@ import com.wudsn.ide.base.gui.IntegerField; import com.wudsn.ide.base.gui.MessageManager; import com.wudsn.ide.base.gui.SWTFactory; import com.wudsn.ide.base.gui.TextField; +import com.wudsn.ide.base.hardware.HardwareCharacterSet; /** * The Hex Editor. This editor offset and outline view for the block of the file @@ -108,7 +107,7 @@ public final class HexEditor extends EditorPart implements ISelectionProvider, A public static final int BYTES_PER_ROW_CHANGED = 1002; } - public static final String ID = "com.wudsn.ide.base.editor.hex.HexEditor"; + public static final String ID = "com.wudsn.ide.hex.HexEditor"; private static final String CONTEXT_MENU_ID = "#HexEditorContext"; private static final long MAX_FILE_SIZE = 8 * ByteArrayUtility.MB; @@ -122,10 +121,12 @@ public final class HexEditor extends EditorPart implements ISelectionProvider, A // Editor header area. private TextField fileContentSizeField; private EnumField fileContentModeField; - private EnumField characterSetField; + private EnumField characterSetField; private IntegerField bytesPerRowField; private StyledText textField; + private Point lastTextFieldSelection; + private HexEditorSelection lastEditorSelection; // File source. private IFile iFile; @@ -217,8 +218,8 @@ public final class HexEditor extends EditorPart implements ISelectionProvider, A messageManager.registerField(fileContentModeField, MessageIds.FILE_CONTENT_MODE); fileContentModeField.addSelectionAction(new Action(Actions.FILE_CONTENT_MODE_CHANGED, this)); - characterSetField = new EnumField(header, - Texts.HEX_EDITOR_CHARACTER_SET_TYPE_FIELD_LABEL + LABEL_SUFFIX, HexEditorCharacterSet.class, null); + characterSetField = new EnumField(header, + Texts.HEX_EDITOR_CHARACTER_SET_TYPE_FIELD_LABEL + LABEL_SUFFIX, HardwareCharacterSet.class, null); characterSetField.getLabel().setAlignment(SWT.RIGHT); messageManager.registerField(characterSetField, MessageIds.CHARACTER_SET); characterSetField.addSelectionAction(new Action(Actions.CHARACTER_SET_TYPE_CHANGED, this)); @@ -339,8 +340,7 @@ public final class HexEditor extends EditorPart implements ISelectionProvider, A // character set. parserComponent.setFileContent(fileContent); HexEditorFileContentMode defaultFileContentMode = parserComponent.determinePossibleFileContentModes(); - HexEditorCharacterSet defaultCharacterSet = HexEditorCharacterSet - .getDefaultCharacterSet(defaultFileContentMode); + HardwareCharacterSet defaultCharacterSet = defaultFileContentMode.getDefaultCharacterSet(); parserComponent.setFileContentMode(defaultFileContentMode); parserComponent.setCharacterSet(defaultCharacterSet); @@ -365,18 +365,24 @@ public final class HexEditor extends EditorPart implements ISelectionProvider, A @Override public HexEditorSelection getSelection() { - Point selection = textField.getSelection(); + Point textFieldSelection = textField.getSelection(); + String selectedText = textField.getText().substring(textFieldSelection.x, textFieldSelection.y); - // if (selection.x == selection.y) { - // return null; - // } + if (textFieldSelection.x == textFieldSelection.y) { + return null; + } - // BasePlugin.getInstance().log( - // "HexEditor selection.x={0} selection.y={1}", - // new Object[] { String.valueOf(selection.x), - // String.valueOf(selection.y) }); +// if (textFieldSelection.equals(lastTextFieldSelection) && lastEditorSelection != null) { +// return lastEditorSelection; +// } - return parserComponent.getSelection(selection.x, selection.y); + BasePlugin.getInstance().log("HexEditor selectedText=\"{0}\", selection.x={1}, selection.y={2}", new Object[] { + selectedText, String.valueOf(textFieldSelection.x), String.valueOf(textFieldSelection.y) }); + + lastTextFieldSelection = textFieldSelection; + lastEditorSelection = parserComponent.getSelection(textFieldSelection.x, textFieldSelection.y); + + return lastEditorSelection; } @Override @@ -419,6 +425,9 @@ public final class HexEditor extends EditorPart implements ISelectionProvider, A // Mark complete selection area. This also scrolls to // the end of the area. textField.setSelection(new Point((int) textStartOffset, (int) textEndOffset)); + lastTextFieldSelection = null; + lastEditorSelection = null; + // // // But we want to see start of the selection are, so // // position explicitly. @@ -499,16 +508,17 @@ public final class HexEditor extends EditorPart implements ISelectionProvider, A private void dataToUi() { // File content size. + FileContent fileContent = parserComponent.getFileContent(); + long length = fileContent.getLength(); String text = TextUtility.format(Texts.HEX_EDITOR_FILE_CONTENT_SIZE_FIELD_TEXT, - HexUtility.getLongValueHexString(parserComponent.getFileContent().length), - NumberUtility.getLongValueDecimalString(parserComponent.getFileContent().length)); + HexUtility.getLongValueHexString(length), NumberUtility.getLongValueDecimalString(length)); fileContentSizeField.setValue(text); // File content mode. fileContentModeField.setValue(parserComponent.getFileContentMode()); // Character set. - HexEditorCharacterSet characterSet = parserComponent.getCharacterSet(); + HardwareCharacterSet characterSet = parserComponent.getCharacterSet(); characterSetField.setValue(characterSet); if (!textField.getFont().equals(characterSet.getFont())) { textField.setFont(characterSet.getFont()); @@ -520,6 +530,8 @@ public final class HexEditor extends EditorPart implements ISelectionProvider, A if (parserComponent.isParsingFileContentRequired()) { StyledString styledString = parserComponent.parseFileContent(); textField.setText(styledString.getString()); + lastTextFieldSelection = null; + lastEditorSelection = null; textField.setStyleRanges(styledString.getStyleRanges()); if (contentOutlinePage != null) { @@ -572,40 +584,48 @@ public final class HexEditor extends EditorPart implements ISelectionProvider, A throw new IllegalArgumentException("Parameter 'bytes' must not be null."); } HexEditorSelection selection = getSelection(); - byte[] newFileContent; - - // If there is no end offset, we insert the new bytes. - if (selection.getEndOffset() != HexEditorParserComponent.UNDEFINED_OFFSET) { - int selectionStartOffset = (int) selection.getStartOffset(); - int selectionEndOffset = (int) selection.getEndOffset(); - - int selectionLength = selectionEndOffset - selectionStartOffset + 1; - int newFileContentLength = parserComponent.getFileContent().length - selectionLength + bytes.length; - newFileContent = new byte[newFileContentLength]; - System.arraycopy(parserComponent.getFileContent(), 0, newFileContent, 0, selectionStartOffset); - System.arraycopy(bytes, 0, newFileContent, selectionStartOffset, bytes.length); - int length = parserComponent.getFileContent().length - selectionEndOffset - 1; - if (length > 0) { - // TODO Hex paste is not working yet - System.arraycopy(parserComponent.getFileContent(), selectionEndOffset, newFileContent, - selectionStartOffset + bytes.length, length); - } - messageManager.sendMessage(0, IStatus.OK, - "${0} ({1}) bytes pasted from clipboard to replace ${2} ({3}) bytes ", - HexUtility.getLongValueHexString(bytes.length), - NumberUtility.getLongValueDecimalString(bytes.length), - HexUtility.getLongValueHexString(selectionLength), - NumberUtility.getLongValueDecimalString(selectionLength)); - } else { - // If there is an end offset, we replace the selection with the new - // bytes. - newFileContent = parserComponent.getFileContent(); - messageManager.sendMessage(0, IStatus.OK, "${0} ({1}) bytes inserted from clipboard", - HexUtility.getLongValueHexString(bytes.length), - NumberUtility.getLongValueDecimalString(bytes.length)); - } - - parserComponent.setFileContent(newFileContent); + // byte[] newFileContent; + // + // // If there is no end offset, we insert the new bytes. + // if (selection.getEndOffset() != + // HexEditorParserComponent.UNDEFINED_OFFSET) { + // int selectionStartOffset = (int) selection.getStartOffset(); + // int selectionEndOffset = (int) selection.getEndOffset(); + // + // int selectionLength = selectionEndOffset - selectionStartOffset + 1; + // int newFileContentLength = parserComponent.getFileContent().length - + // selectionLength + bytes.length; + // newFileContent = new byte[newFileContentLength]; + // System.arraycopy(parserComponent.getFileContent(), 0, newFileContent, + // 0, selectionStartOffset); + // System.arraycopy(bytes, 0, newFileContent, selectionStartOffset, + // bytes.length); + // int length = parserComponent.getFileContent().length - + // selectionEndOffset - 1; + // if (length > 0) { + // // TODO Hex paste is not working yet + // System.arraycopy(parserComponent.getFileContent(), + // selectionEndOffset, newFileContent, + // selectionStartOffset + bytes.length, length); + // } + // messageManager.sendMessage(0, IStatus.OK, + // "${0} ({1}) bytes pasted from clipboard to replace ${2} ({3}) bytes + // ", + // HexUtility.getLongValueHexString(bytes.length), + // NumberUtility.getLongValueDecimalString(bytes.length), + // HexUtility.getLongValueHexString(selectionLength), + // NumberUtility.getLongValueDecimalString(selectionLength)); + // } else { + // // If there is an end offset, we replace the selection with the new + // // bytes. + // newFileContent = parserComponent.getFileContent(); + // messageManager.sendMessage(0, IStatus.OK, "${0} ({1}) bytes inserted + // from clipboard", + // HexUtility.getLongValueHexString(bytes.length), + // NumberUtility.getLongValueDecimalString(bytes.length)); + // } + // + // parserComponent.setFileContent(newFileContent); dataToUi(); } diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorClipboardCommandHandler.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorClipboardCommandHandler.java similarity index 86% rename from com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorClipboardCommandHandler.java rename to com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorClipboardCommandHandler.java index 9149a72f..32d55829 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorClipboardCommandHandler.java +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorClipboardCommandHandler.java @@ -17,7 +17,7 @@ * along with WUDSN IDE. If not, see . */ -package com.wudsn.ide.base.editor.hex; +package com.wudsn.ide.hex; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.runtime.IStatus; @@ -27,7 +27,7 @@ import org.eclipse.swt.dnd.Transfer; import org.eclipse.ui.IWorkbenchSite; import org.eclipse.ui.handlers.HandlerUtil; -import com.wudsn.ide.base.Texts; +import com.wudsn.ide.hex.Texts; import com.wudsn.ide.base.common.HexUtility; import com.wudsn.ide.base.common.NumberUtility; @@ -43,12 +43,12 @@ public final class HexEditorClipboardCommandHandler extends HexEditorSelectionCo private CommandIds() { } - public static final String COPY = "com.wudsn.ide.base.editor.hex.HexEditorCopyToClipboardCommand"; - public static final String COPY_AS_HEX_VALUES = "com.wudsn.ide.base.editor.hex.HexEditorCopyToClipboardAsHexValuesCommand"; - public static final String COPY_AS_DECIMAL_VALUES = "com.wudsn.ide.base.editor.hex.HexEditorCopyToClipboardAsDecimalValuesCommand"; - public static final String COPY_AS_DECIMAL_VALUES_BLOCK = "com.wudsn.ide.base.editor.hex.HexEditorCopyToClipboardAsDecimalValuesBlockCommand"; - public static final String COPY_AS_ASCII_STRING = "com.wudsn.ide.base.editor.hex.HexEditorCopyToClipboardAsASCIIStringCommand"; - public static final String PASTE = "com.wudsn.ide.base.editor.hex.HexEditorPasteFromClipboardCommand"; + public static final String COPY = "com.wudsn.ide.hex.HexEditorCopyToClipboardCommand"; + public static final String COPY_AS_HEX_VALUES = "com.wudsn.ide.hex.HexEditorCopyToClipboardAsHexValuesCommand"; + public static final String COPY_AS_DECIMAL_VALUES = "com.wudsn.ide.hex.HexEditorCopyToClipboardAsDecimalValuesCommand"; + public static final String COPY_AS_DECIMAL_VALUES_BLOCK = "com.wudsn.ide.hex.HexEditorCopyToClipboardAsDecimalValuesBlockCommand"; + public static final String COPY_AS_ASCII_STRING = "com.wudsn.ide.hex.HexEditorCopyToClipboardAsASCIIStringCommand"; + public static final String PASTE = "com.wudsn.ide.hex.HexEditorPasteFromClipboardCommand"; } /** @@ -77,8 +77,8 @@ public final class HexEditorClipboardCommandHandler extends HexEditorSelectionCo } else if ((commandId.equals(CommandIds.COPY_AS_HEX_VALUES) || commandId.equals(CommandIds.COPY_AS_DECIMAL_VALUES) - || commandId.equals(CommandIds.COPY_AS_DECIMAL_VALUES_BLOCK) || commandId - .equals(CommandIds.COPY_AS_ASCII_STRING)) && !hexEditorSelection.isEmpty()) { + || commandId.equals(CommandIds.COPY_AS_DECIMAL_VALUES_BLOCK) + || commandId.equals(CommandIds.COPY_AS_ASCII_STRING)) && !hexEditorSelection.isEmpty()) { if (commandId.equals(CommandIds.COPY_AS_HEX_VALUES)) { builder.append(".byte "); for (int i = 0; i < bytes.length; i++) { diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorContentOutlineLabelProvider.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorContentOutlineLabelProvider.java similarity index 91% rename from com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorContentOutlineLabelProvider.java rename to com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorContentOutlineLabelProvider.java index db73006a..279e0bd8 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorContentOutlineLabelProvider.java +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorContentOutlineLabelProvider.java @@ -17,15 +17,13 @@ * along with WUDSN IDE. If not, see . */ -package com.wudsn.ide.base.editor.hex; +package com.wudsn.ide.hex; import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.StyledString; import org.eclipse.swt.graphics.Image; -import com.wudsn.ide.base.BasePlugin; - /** * Label provider for the tree objects in the outline page. * @@ -65,8 +63,8 @@ final class HexEditorContentOutlineLabelProvider extends DelegatingStyledCellLab */ HexEditorContentOutlineLabelProvider() { super(new HexEditorStyledLabelProvider()); - BasePlugin plugin; - plugin = BasePlugin.getInstance(); + HexPlugin plugin; + plugin = HexPlugin.getInstance(); segmentImage = plugin.getImage("hex-editor-segment-16x16.gif"); } diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorContentOutlinePage.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorContentOutlinePage.java similarity index 95% rename from com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorContentOutlinePage.java rename to com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorContentOutlinePage.java index f8d2b083..faf8909c 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorContentOutlinePage.java +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorContentOutlinePage.java @@ -17,7 +17,7 @@ * along with WUDSN IDE. If not, see . */ -package com.wudsn.ide.base.editor.hex; +package com.wudsn.ide.hex; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.viewers.AbstractTreeViewer; diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorContentOutlineTreeContentProvider.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorContentOutlineTreeContentProvider.java similarity index 93% rename from com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorContentOutlineTreeContentProvider.java rename to com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorContentOutlineTreeContentProvider.java index d1133ae0..a74d8ffd 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorContentOutlineTreeContentProvider.java +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorContentOutlineTreeContentProvider.java @@ -17,7 +17,7 @@ * along with WUDSN IDE. If not, see . */ -package com.wudsn.ide.base.editor.hex; +package com.wudsn.ide.hex; import java.util.List; diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorContentOutlineTreeObject.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorContentOutlineTreeObject.java similarity index 95% rename from com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorContentOutlineTreeObject.java rename to com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorContentOutlineTreeObject.java index c5f38ac5..174cb046 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorContentOutlineTreeObject.java +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorContentOutlineTreeObject.java @@ -17,7 +17,7 @@ * along with WUDSN IDE. If not, see . */ -package com.wudsn.ide.base.editor.hex; +package com.wudsn.ide.hex; import org.eclipse.jface.viewers.StyledString; diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorFileContentMode.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorFileContentMode.java similarity index 76% rename from com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorFileContentMode.java rename to com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorFileContentMode.java index ff5bab0d..731825c2 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorFileContentMode.java +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorFileContentMode.java @@ -17,9 +17,11 @@ * along with WUDSN IDE. If not, see . */ -package com.wudsn.ide.base.editor.hex; +package com.wudsn.ide.hex; -import com.wudsn.ide.base.editor.hex.parser.*; +import com.wudsn.ide.base.hardware.Hardware; +import com.wudsn.ide.base.hardware.HardwareCharacterSet; +import com.wudsn.ide.hex.parser.*; enum HexEditorFileContentMode { @@ -51,6 +53,23 @@ enum HexEditorFileContentMode { return hardware; } + /** + * Determines the default character set for a given file content mode. + * + * @return The default character set, not null. + */ + public HardwareCharacterSet getDefaultCharacterSet() { + + switch (hardware) { + case ATARI8BIT: + return HardwareCharacterSet.ATARI_ATASCII; + case C64: + return HardwareCharacterSet.CBM_PETSCII_UPPER_CASE; + default: + return HardwareCharacterSet.ASCII; + } + } + public HexEditorParser createParser() { try { return parserClass.newInstance(); diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorOpenCommandHandler.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorOpenCommandHandler.java similarity index 94% rename from com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorOpenCommandHandler.java rename to com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorOpenCommandHandler.java index ab70ae64..f7b4a5f2 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorOpenCommandHandler.java +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorOpenCommandHandler.java @@ -17,7 +17,7 @@ * along with WUDSN IDE. If not, see . */ -package com.wudsn.ide.base.editor.hex; +package com.wudsn.ide.hex; import com.wudsn.ide.base.editor.CommonOpenEditorCommandHandler; diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorParser.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorParser.java similarity index 82% rename from com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorParser.java rename to com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorParser.java index 22fdaa67..4f4e7f93 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorParser.java +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorParser.java @@ -16,7 +16,7 @@ * You should have received a copy of the GNU General Public License * along with WUDSN IDE. If not, see . */ -package com.wudsn.ide.base.editor.hex; +package com.wudsn.ide.hex; import org.eclipse.jface.viewers.StyledString; import org.eclipse.jface.viewers.StyledString.Styler; @@ -31,6 +31,7 @@ public abstract class HexEditorParser { private HexEditorParserComponent owner; protected Styler offsetStyler; protected Styler addressStyler; + protected FileContent fileContent; /** * Creation is protected. @@ -62,6 +63,7 @@ public abstract class HexEditorParser { this.owner = owner; this.offsetStyler = offsetStyler; this.addressStyler = addressStyler; + this.fileContent = owner.getFileContent(); } /** @@ -73,48 +75,6 @@ public abstract class HexEditorParser { */ public abstract boolean parse(StyledString contentBuilder); - /** - * Gets the length of the file content. - * - * @return The length of the file content, a non-negative integer. - */ - protected final int getFileContentLength() { - return owner.getFileContent().length; - } - - /** - * Gets a byte (8-bit) from the file content. - * - * @param offset - * The offset, a non-negative integer. - * @return The byte from the file content. - */ - protected final int getFileContentByte(long offset) { - return owner.getFileContentByte(offset); - } - - /** - * Gets a word (16 bit) in little endian format from the file content. - * - * @param offset - * The offset, a non-negative integer. - * @return The word from the file content. - */ - protected final int getFileContentWord(long offset) { - return owner.getFileContentWord(offset); - } - - /** - * Gets a double word (32 bit) in big endian format from the file content. - * - * @param offset - * The offset, a non-negative integer. - * @return The word from the file content. - */ - protected final long getFileContentDoubleWordBigEndian(long offset) { - return owner.getFileContentDoubleWordBigEndian(offset); - } - /** * Prints a block header in the context area and adds a block to the * outline. diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorParserComponent.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorParserComponent.java similarity index 74% rename from com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorParserComponent.java rename to com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorParserComponent.java index 7d9d455c..39e8b127 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorParserComponent.java +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorParserComponent.java @@ -16,7 +16,7 @@ * You should have received a copy of the GNU General Public License * along with WUDSN IDE. If not, see . */ -package com.wudsn.ide.base.editor.hex; +package com.wudsn.ide.hex; import java.util.ArrayList; import java.util.Arrays; @@ -28,24 +28,24 @@ import org.eclipse.jface.viewers.StyledString; import org.eclipse.jface.viewers.StyledString.Styler; import org.eclipse.swt.graphics.TextStyle; -import com.wudsn.ide.base.Texts; +import com.wudsn.ide.base.BasePlugin; import com.wudsn.ide.base.common.EnumUtility; import com.wudsn.ide.base.common.HexUtility; import com.wudsn.ide.base.common.NumberUtility; import com.wudsn.ide.base.common.Profiler; import com.wudsn.ide.base.common.TextUtility; -import com.wudsn.ide.base.editor.hex.HexEditor.MessageIds; -import com.wudsn.ide.base.editor.hex.parser.AtariDiskImageKFileParser; -import com.wudsn.ide.base.editor.hex.parser.AtariMADSParser; -import com.wudsn.ide.base.editor.hex.parser.AtariParser; -import com.wudsn.ide.base.editor.hex.parser.AtariSDXParser; import com.wudsn.ide.base.gui.MessageManager; +import com.wudsn.ide.base.hardware.HardwareCharacterSet; +import com.wudsn.ide.hex.HexEditor.MessageIds; +import com.wudsn.ide.hex.parser.AtariDiskImageKFileParser; +import com.wudsn.ide.hex.parser.AtariMADSParser; +import com.wudsn.ide.hex.parser.AtariParser; +import com.wudsn.ide.hex.parser.AtariSDXParser; final class HexEditorParserComponent { public static final long UNDEFINED_OFFSET = -1; private final static int BYTES_PER_ROW = 16; - private static final int INT_FF = 0xff; // Callback API. private MessageManager messageManager; @@ -61,13 +61,13 @@ final class HexEditorParserComponent { private HexEditorFileContentMode fileContentMode; private byte[] fileContent; private int bytesPerRow; - private HexEditorCharacterSet characterSet; + private HardwareCharacterSet characterSet; // Previous state with regards to parsing. private HexEditorFileContentMode oldFileContentMode; private byte[] oldFileContent; private int oldBytesPerRow; - private HexEditorCharacterSet oldCharacterSet; + private HardwareCharacterSet oldCharacterSet; // Parsing state. private List possibleFileContentModes; @@ -105,7 +105,7 @@ final class HexEditorParserComponent { // Initialize hex chars and normal character set type. hexChars = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; - characterSet = HexEditorCharacterSet.ASCII; + characterSet = HardwareCharacterSet.ASCII; clear(); @@ -116,7 +116,7 @@ final class HexEditorParserComponent { fileContentParsed = false; fileContentMode = HexEditorFileContentMode.BINARY; setFileContent(new byte[0]); - characterSet = HexEditorCharacterSet.ASCII; + characterSet = HardwareCharacterSet.ASCII; bytesPerRow = BYTES_PER_ROW; oldFileContentMode = null; @@ -141,21 +141,13 @@ final class HexEditorParserComponent { * offsets. */ private void initByteTextOffsets() { - // Twice the space, because some format display the content twice, for + // Twice the space, because some formats display the content twice, for // example ATARI_DISK_IMAGE_K_FILE. byteTextOffsets = new long[fileContent.length * 2]; + Arrays.fill(byteTextOffsets, -1); byteTextIndex = 0; } - /** - * Gets the current file content. - * - * @return The file content, may be empty or null. - */ - public byte[] getFileContent() { - return fileContent; - } - /** * Determines the possible file content modes based on the file content. * @@ -168,19 +160,19 @@ final class HexEditorParserComponent { possibleFileContentModes.add(fileContentMode); HexEditorFileContentMode defaultMode = result; - + FileContent fileContent = getFileContent(); // COM header present? - if (fileContent.length > 6) { + if (fileContent.getLength() > 6) { // AtariDOS COM file? - if (getFileContentWord(0) == AtariParser.COM_HEADER) { - int startAddress = getFileContentWord(2); - int endAddress = getFileContentWord(4); + if (fileContent.getWord(0) == AtariParser.COM_HEADER) { + int startAddress = fileContent.getWord(2); + int endAddress = fileContent.getWord(4); if (startAddress >= 0 && endAddress >= startAddress) { defaultMode = HexEditorFileContentMode.ATARI_COM_FILE; possibleFileContentModes.add(defaultMode); - if (fileContent.length > 16) { - if (getFileContentWord(6) == AtariMADSParser.RELOC_HEADER) { + if (fileContent.getLength() > 16) { + if (fileContent.getWord(6) == AtariMADSParser.RELOC_HEADER) { defaultMode = HexEditorFileContentMode.ATARI_MADS_FILE; possibleFileContentModes.add(defaultMode); } @@ -191,9 +183,9 @@ final class HexEditorParserComponent { } } } // SpartaDOS X non relocatable file? - else if (getFileContentWord(0) == AtariSDXParser.NON_RELOC_HEADER) { - int startAddress = getFileContentWord(2); - int endAddress = getFileContentWord(4); + else if (fileContent.getWord(0) == AtariSDXParser.NON_RELOC_HEADER) { + int startAddress = fileContent.getWord(2); + int endAddress = fileContent.getWord(4); if (startAddress > 0 && endAddress >= startAddress) { defaultMode = HexEditorFileContentMode.ATARI_SDX_FILE; possibleFileContentModes.add(defaultMode); @@ -203,8 +195,8 @@ final class HexEditorParserComponent { } } } // SpartaDOS X relocatable file? - else if (getFileContentWord(0) == AtariSDXParser.RELOC_HEADER && fileContent.length > 8) { - int blockNumber = getFileContentByte(2); + else if (fileContent.getWord(0) == AtariSDXParser.RELOC_HEADER && fileContent.getLength() > 8) { + int blockNumber = fileContent.getByte(2); if (blockNumber > 0) { defaultMode = HexEditorFileContentMode.ATARI_SDX_FILE; possibleFileContentModes.add(defaultMode); @@ -217,17 +209,17 @@ final class HexEditorParserComponent { } // ATR header present? - if ((fileContent.length > 16 && getFileContentByte(0) == 0x96 && getFileContentByte(1) == 0x02)) { + if ((fileContent.getLength() > 16 && fileContent.getByte(0) == 0x96 && fileContent.getByte(1) == 0x02)) { defaultMode = HexEditorFileContentMode.ATARI_DISK_IMAGE; possibleFileContentModes.add(defaultMode); // Special case of k-file (converted COM file) int offset = AtariDiskImageKFileParser.ATARI_DISK_IMAGE_K_FILE_COM_FILE_OFFSET; - if (fileContent.length > offset + 2 && getFileContentWord(offset) == 0xffff) { + if (fileContent.getLength() > offset + 2 && fileContent.getWord(offset) == 0xffff) { final int[] kFileBootHeader = new int[] { 0x00, 0x03, 0x00, 0x07, 0x14, 0x07, 0x4C, 0x14, 0x07 }; boolean kFileBootHeaderFound = true; for (int i = 0; i < kFileBootHeader.length; i++) { - if (getFileContentByte(16 + i) != kFileBootHeader[i]) { + if (fileContent.getByte(16 + i) != kFileBootHeader[i]) { kFileBootHeaderFound = false; } } @@ -244,8 +236,8 @@ final class HexEditorParserComponent { } // SAP header present? - if ((fileContent.length > 11 && getFileContentByte(0) == 0x53 && getFileContentByte(1) == 0x41) - && getFileContentByte(2) == 0x50) { + if ((fileContent.getLength() > 11 && fileContent.getByte(0) == 0x53 && fileContent.getByte(1) == 0x41) + && fileContent.getByte(2) == 0x50) { possibleFileContentModes.add(HexEditorFileContentMode.ATARI_SAP_FILE); // New default? if (result.equals(HexEditorFileContentMode.BINARY)) { @@ -254,22 +246,22 @@ final class HexEditorParserComponent { } // PRG header present? - if ((fileContent.length > 2 && getFileContentWord(0) + getFileContent().length - 2 < 0x10000)) { + if ((fileContent.getLength() > 2 && fileContent.getWord(0) + fileContent.getLength() - 2 < 0x10000)) { possibleFileContentModes.add(HexEditorFileContentMode.C64_PRG_FILE); - int loadAddress = getFileContentWord(0); + int loadAddress = fileContent.getWord(0); if (result.equals(HexEditorFileContentMode.BINARY) && loadAddress >= 0x800 && loadAddress < 0x2000) { result = HexEditorFileContentMode.C64_PRG_FILE; } } // IFF files always have an even number of bytes - if (fileContent.length > 8 && (fileContent.length & 0x1) == 0) { + if (fileContent.getLength() > 8 && (fileContent.getLength() & 0x1) == 0) { possibleFileContentModes.add(HexEditorFileContentMode.IFF_FILE); char[] id = new char[4]; - id[0] = (char) fileContent[0]; - id[1] = (char) fileContent[1]; - id[2] = (char) fileContent[2]; - id[3] = (char) fileContent[3]; + id[0] = (char) fileContent.getByte(0); + id[1] = (char) fileContent.getByte(1); + id[2] = (char) fileContent.getByte(2); + id[3] = (char) fileContent.getByte(3); String chunk = String.copyValueOf(id); boolean iff = chunk.equals("FORM") || chunk.equals("LIST") || chunk.equals("CAT "); if (result.equals(HexEditorFileContentMode.BINARY) && iff) { @@ -307,7 +299,7 @@ final class HexEditorParserComponent { * @param characterSet * The character set type, not null. */ - public void setCharacterSet(HexEditorCharacterSet characterSet) { + public void setCharacterSet(HardwareCharacterSet characterSet) { if (characterSet == null) { throw new IllegalArgumentException("Parameter 'characterSet' must not be null."); } @@ -320,7 +312,7 @@ final class HexEditorParserComponent { * * @return characterSet The character set type, not null. */ - public HexEditorCharacterSet getCharacterSet() { + public HardwareCharacterSet getCharacterSet() { return characterSet; } @@ -364,7 +356,7 @@ final class HexEditorParserComponent { * to the parameters set with * {@link #setFileContentMode(HexEditorFileContentMode)}, * {@link #setBytesPerRow(int)} and - * {@link #setCharacterSet(HexEditorCharacterSet)}. + * {@link #setCharacterSet(HardwareCharacterSet)}. * * @return The styles string representing the content. */ @@ -430,54 +422,12 @@ final class HexEditorParserComponent { } /** - * Gets a byte (8 bit) from the file content. + * Gets the file content. * - * @param offset - * The offset, a non-negative integer. - * @return The byte from the file content. + * @return The file content, not null. */ - final int getFileContentByte(long offset) { - if (offset < 0) { - throw new IllegalArgumentException("Parameter offset=" + offset + " must not be negative"); - } - if (offset >= fileContent.length) { - throw new IllegalArgumentException( - "Parameter offset=" + offset + " must be less than the file content size " + fileContent.length); - } - return fileContent[(int) offset] & INT_FF; - } - - /** - * Gets a word (16 bit) in little endian format from the file content. - * - * @param offset - * The offset, a non-negative integer. - * @return The word from the file content. - */ - final int getFileContentWord(long offset) { - return getFileContentByte(offset) + 0x100 * getFileContentByte(offset + 1); - } - - /** - * Gets a word (16 bit) in big endian format from the file content. - * - * @param offset - * The offset, a non-negative integer. - * @return The word from the file content. - */ - final int getFileContentWordBigEndian(long offset) { - return getFileContentByte(offset + 1) + 0x100 * getFileContentByte(offset); - } - - /** - * Gets a double word (32 bit) in big endian format from the file content. - * - * @param offset - * The offset, a non-negative integer. - * @return The word from the file content. - */ - final long getFileContentDoubleWordBigEndian(long offset) { - return getFileContentWordBigEndian(offset + 2) + 0x10000 * getFileContentWordBigEndian(offset); + final FileContent getFileContent() { + return new FileContentImpl(fileContent); // TODO Do not create newly } /** @@ -587,7 +537,7 @@ final class HexEditorParserComponent { lowChar = ' '; charValue = ' '; } else { - int byteValue = getFileContentByte(offset); + int byteValue = getFileContent().getByte(offset); highChar = hexChars[byteValue >> 4]; lowChar = hexChars[byteValue & 0xf]; charValue = characterMapping[byteValue]; @@ -631,56 +581,72 @@ final class HexEditorParserComponent { */ public HexEditorSelection getSelection(int x, int y) { + if (x > y) { + throw new IllegalArgumentException("x is greater than y"); + } long startOffset = UNDEFINED_OFFSET; - long endOffset = UNDEFINED_OFFSET; - long textOffset = 0; - for (int i = 0; i < byteTextIndex && (startOffset == UNDEFINED_OFFSET || endOffset == UNDEFINED_OFFSET); i++) { - long nextTextOffset; - if (i < byteTextIndex - 1) { - nextTextOffset = byteTextOffsets[i + 1]; - } else { - nextTextOffset = Integer.MAX_VALUE; - } - if (startOffset == UNDEFINED_OFFSET && textOffset - 1 <= x && x < nextTextOffset - 1) { + for (long i = 0; i < byteTextIndex; i++) { + // BasePlugin.getInstance().log( + // "HexEditor.getSelection(): i={0} textOffset={1} + // nextTextOffset={2} startOffset={3} endOffset={4}", + // new Object[] { String.valueOf(i), String.valueOf(textOffset), + // String.valueOf(nextTextOffset), + // String.valueOf(startOffset), String.valueOf(endOffset) }); + if (getByteTextOffset(i) >= x) { startOffset = i; + break; } - if (startOffset != UNDEFINED_OFFSET && endOffset == UNDEFINED_OFFSET && textOffset < y - && y <= nextTextOffset) { - endOffset = i; - } - textOffset = nextTextOffset; - } if (startOffset == UNDEFINED_OFFSET) { return null; } + + long endOffset = UNDEFINED_OFFSET; + for (long i = startOffset; i < byteTextIndex; i++) { + // BasePlugin.getInstance().log( + // "HexEditor.getSelection(): i={0} textOffset={1} + // nextTextOffset={2} startOffset={3} endOffset={4}", + // new Object[] { String.valueOf(i), String.valueOf(textOffset), + // String.valueOf(nextTextOffset), + // String.valueOf(startOffset), String.valueOf(endOffset) }); + + if (getByteTextOffset(i) >= y ) { + endOffset = i; + break; + } + } + + if (endOffset == UNDEFINED_OFFSET) { + return null; + } + long length; byte[] bytes; length = endOffset - startOffset + 1; - // BasePlugin.getInstance().log("HexEditor.getSelection(): - // startOffset={0} endoffset={1} length={2}", - // new Object[] { String.valueOf(startOffset), - // String.valueOf(endOffset), String.valueOf(length) }); + BasePlugin.getInstance().log("HexEditor.getSelection(): startOffset={2} endoffset={3} length={4}", + new Object[] { String.valueOf(x), String.valueOf(y), String.valueOf(startOffset), + String.valueOf(endOffset), String.valueOf(length) }); - // Length not empty and selection does not cross file end boundary. - if (length > 0 && length < Integer.MAX_VALUE && startOffset < fileContent.length - && endOffset < fileContent.length) { + // Length not empty or negative? + if (length > 0 && length < fileContent.length) { // Reposition into first occurrence of in the file. // This is relevant for the format that display the content more // than once. - bytes = new byte[(int) length]; - // startOffset = startOffset % fileContent.length; - // endOffset = endOffset % fileContent.length; - // length = endOffset - startOffset + 1; - System.arraycopy(fileContent, (int) startOffset, bytes, 0, bytes.length); + startOffset = startOffset % fileContent.length; + endOffset = endOffset % fileContent.length; + // Selection does not cross file end boundary? + if (startOffset <= endOffset) { + bytes = new byte[(int) length]; + System.arraycopy(fileContent, (int) startOffset, bytes, 0, bytes.length); - // BasePlugin.getInstance().log( - // "HexEditor startOffset={0} endoffset={1} length={2}", - // new Object[] { String.valueOf(startOffset), - // String.valueOf(endOffset), String.valueOf(length) }); + } else { + endOffset = startOffset; + bytes = new byte[0]; + + } } else { endOffset = startOffset; bytes = new byte[0]; @@ -694,14 +660,14 @@ final class HexEditorParserComponent { * * @param byteOffset * The byte offset in the original byte array. - * @return The text offset where the byte is represented or -1 - * if there is no such text offset. + * @return The text offset where the byte is represented or + * UNDEFINED_OFFSET if there is no such text offset. */ public long getByteTextOffset(long byteOffset) { if (byteOffset < byteTextOffsets.length) { return byteTextOffsets[(int) byteOffset]; } - return -1; + return UNDEFINED_OFFSET; } } \ No newline at end of file diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorSaveSelectionAsCommandHandler.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorSaveSelectionAsCommandHandler.java similarity index 86% rename from com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorSaveSelectionAsCommandHandler.java rename to com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorSaveSelectionAsCommandHandler.java index c58bb618..6bfe5692 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorSaveSelectionAsCommandHandler.java +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorSaveSelectionAsCommandHandler.java @@ -17,7 +17,7 @@ * along with WUDSN IDE. If not, see . */ -package com.wudsn.ide.base.editor.hex; +package com.wudsn.ide.hex; import java.io.File; @@ -29,7 +29,6 @@ import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.handlers.HandlerUtil; -import com.wudsn.ide.base.Texts; import com.wudsn.ide.base.common.FileUtility; import com.wudsn.ide.base.common.HexUtility; import com.wudsn.ide.base.common.NumberUtility; @@ -42,7 +41,7 @@ public final class HexEditorSaveSelectionAsCommandHandler extends HexEditorSelec private CommandIds() { } - public static final String SAVE_SELECTION_AS = "com.wudsn.ide.base.editor.hex.HexEditorSaveSelectionAsCommand"; + public static final String SAVE_SELECTION_AS = "com.wudsn.ide.hex.HexEditorSaveSelectionAsCommand"; } @Override @@ -58,8 +57,8 @@ public final class HexEditorSaveSelectionAsCommandHandler extends HexEditorSelec int length = content.length; String hexLength = HexUtility.getLongValueHexString(length); String decimalLength = NumberUtility.getLongValueDecimalString(length); - dialog.setText(TextUtility - .format(Texts.HEX_EDITOR_SAVE_SELECTION_AS_DIALOG_TITLE, hexLength, decimalLength)); + dialog.setText( + TextUtility.format(Texts.HEX_EDITOR_SAVE_SELECTION_AS_DIALOG_TITLE, hexLength, decimalLength)); dialog.setFileName(hexEditor.getSelectionSaveFilePath()); String filePath = dialog.open(); if (filePath != null) { diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorSelection.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorSelection.java similarity index 95% rename from com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorSelection.java rename to com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorSelection.java index a91e0aaa..04545deb 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorSelection.java +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorSelection.java @@ -17,7 +17,7 @@ * along with WUDSN IDE. If not, see . */ -package com.wudsn.ide.base.editor.hex; +package com.wudsn.ide.hex; import org.eclipse.jface.viewers.ISelection; diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorSelectionCommandHandler.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorSelectionCommandHandler.java similarity index 95% rename from com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorSelectionCommandHandler.java rename to com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorSelectionCommandHandler.java index 68563efc..5e002ef2 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorSelectionCommandHandler.java +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorSelectionCommandHandler.java @@ -17,7 +17,7 @@ * along with WUDSN IDE. If not, see . */ -package com.wudsn.ide.base.editor.hex; +package com.wudsn.ide.hex; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorSelectionTransfer.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorSelectionTransfer.java similarity index 95% rename from com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorSelectionTransfer.java rename to com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorSelectionTransfer.java index 1632785c..17709edf 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditorSelectionTransfer.java +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexEditorSelectionTransfer.java @@ -1,4 +1,4 @@ -package com.wudsn.ide.base.editor.hex; +package com.wudsn.ide.hex; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; diff --git a/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexPlugin.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexPlugin.java index 88ea63c3..ca3923f6 100644 --- a/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexPlugin.java +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/HexPlugin.java @@ -1,15 +1,16 @@ package com.wudsn.ide.hex; -import org.eclipse.ui.plugin.AbstractUIPlugin; import org.osgi.framework.BundleContext; +import com.wudsn.ide.base.common.AbstractIDEPlugin; + /** * The activator class controls the plug-in life cycle */ -public class HexPlugin extends AbstractUIPlugin { +public class HexPlugin extends AbstractIDEPlugin { // The plug-in ID - public static final String PLUGIN_ID = "com.wudsn.ide.hex"; //$NON-NLS-1$ + public static final String ID = "com.wudsn.ide.hex"; //$NON-NLS-1$ // The shared instance private static HexPlugin plugin; @@ -20,12 +21,16 @@ public class HexPlugin extends AbstractUIPlugin { public HexPlugin() { } - /* - * (non-Javadoc) - * - * @see - * org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext - * ) + /** + * {@inheritDoc} + */ + @Override + protected String getPluginId() { + return ID; + } + + /** + * {@inheritDoc} */ @Override public void start(BundleContext context) throws Exception { @@ -33,12 +38,8 @@ public class HexPlugin extends AbstractUIPlugin { plugin = this; } - /* - * (non-Javadoc) - * - * @see - * org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext - * ) + /** + * {@inheritDoc} */ @Override public void stop(BundleContext context) throws Exception { @@ -47,11 +48,14 @@ public class HexPlugin extends AbstractUIPlugin { } /** - * Returns the shared instance + * Gets the shared plugin instance * - * @return the shared instance + * @return The plug-in, not null. */ public static HexPlugin getInstance() { + if (plugin == null) { + throw new IllegalStateException("Plugin not initialized or already stopped"); + } return plugin; } diff --git a/com.wudsn.ide.hex/src/com/wudsn/ide/hex/Texts.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/Texts.java new file mode 100644 index 00000000..615fd615 --- /dev/null +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/Texts.java @@ -0,0 +1,92 @@ +/** + * Copyright (C) 2009 - 2019 Peter Dell + * + * This file is part of WUDSN IDE. + * + * WUDSN IDE is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * WUDSN IDE is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WUDSN IDE. If not, see . + */ + +package com.wudsn.ide.hex; + +import org.eclipse.osgi.util.NLS; + +/** + * Class which holds the localized text constants. + * + * @author Peter Dell + */ +public final class Texts extends NLS { + + /** + * Hex editor + */ + public static String HEX_EDITOR_FILE_SIZE; + + public static String HEX_EDITOR_ATARI_COM_BLOCK_HEADER; + public static String HEX_EDITOR_ATARI_COM_BLOCK_HEADER_PARAMETERS; + public static String HEX_EDITOR_ATARI_COM_BLOCK_ERROR; + + public static String HEX_EDITOR_ATARI_DISK_IMAGE_HEADER; + public static String HEX_EDITOR_ATARI_SECTOR_HEADER; + public static String HEX_EDITOR_ATARI_SECTOR_HEADER_PARAMETERS; + public static String HEX_EDITOR_ATARI_SECTOR_ERROR; + + public static String HEX_EDITOR_ATARI_MADS_RELOC_BLOCK_HEADER; + public static String HEX_EDITOR_ATARI_MADS_UPDATE_RELOC_BLOCK_HEADER; + public static String HEX_EDITOR_ATARI_MADS_UPDATE_SYMBOLS_BLOCK_HEADER; + public static String HEX_EDITOR_ATARI_MADS_DEFINE_SYMBOLS_BLOCK_HEADER; + public static String HEX_EDITOR_ATARI_MADS_DEFINE_SYMBOL_HEADER; + public static String HEX_EDITOR_ATARI_MADS_BLOCK_ERROR; + + public static String HEX_EDITOR_ATARI_SAP_FILE_HEADER; + + public static String HEX_EDITOR_ATARI_SDX_NON_RELOC_BLOCK_HEADER; + public static String HEX_EDITOR_ATARI_SDX_NON_RELOC_BLOCK_HEADER_PARAMETERS; + public static String HEX_EDITOR_ATARI_SDX_RELOC_BLOCK_HEADER; + public static String HEX_EDITOR_ATARI_SDX_UPDATE_RELOC_BLOCK_HEADER; + public static String HEX_EDITOR_ATARI_SDX_UPDATE_SYMBOLS_BLOCK_HEADER; + public static String HEX_EDITOR_ATARI_SDX_DEFINE_SYMBOLS_BLOCK_HEADER; + public static String HEX_EDITOR_ATARI_SDX_BLOCK_ERROR; + + public static String HEX_EDITOR_C64_PRG_HEADER; + public static String HEX_EDITOR_C64_PRG_HEADER_PARAMETERS; + public static String HEX_EDITOR_C64_PRG_ERROR; + + public static String HEX_EDITOR_IFF_CHUNK; + public static String HEX_EDITOR_IFF_FORM_CHUNK; + public static String HEX_EDITOR_IFF_FILE_ERROR; + + public static String HEX_EDITOR_FILE_CONTENT_SIZE_FIELD_LABEL; + public static String HEX_EDITOR_FILE_CONTENT_SIZE_FIELD_TEXT; + public static String HEX_EDITOR_FILE_CONTENT_MODE_FIELD_LABEL; + public static String HEX_EDITOR_CHARACTER_SET_TYPE_FIELD_LABEL; + public static String HEX_EDITOR_BYTES_PER_ROW_FIELD_LABEL; + + public static String HEX_EDITOR_SAVE_SELECTION_AS_DIALOG_TITLE; + + /** + * Message for the {@link HexEditor} + */ + public static String MESSAGE_E300; + public static String MESSAGE_E301; + public static String MESSAGE_I302; + public static String MESSAGE_I303; + + /** + * Initializes the constants. + */ + static { + NLS.initializeMessages(Texts.class.getName(), Texts.class); + } +} diff --git a/com.wudsn.ide.hex/src/com/wudsn/ide/hex/Texts.properties b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/Texts.properties new file mode 100644 index 00000000..a24347da --- /dev/null +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/Texts.properties @@ -0,0 +1,48 @@ +HEX_EDITOR_FILE_SIZE=File contains ${0} ({1}) bytes. + +HEX_EDITOR_ATARI_COM_BLOCK_HEADER=COM block +HEX_EDITOR_ATARI_COM_BLOCK_HEADER_PARAMETERS={0}-{1} ({2}) +HEX_EDITOR_ATARI_COM_BLOCK_ERROR=COM file structure error + +HEX_EDITOR_ATARI_DISK_IMAGE_HEADER=ATR header +HEX_EDITOR_ATARI_SECTOR_HEADER=Sector +HEX_EDITOR_ATARI_SECTOR_HEADER_PARAMETERS=({2}) +HEX_EDITOR_ATARI_SECTOR_ERROR=Sector structure error + +HEX_EDITOR_ATARI_MADS_RELOC_BLOCK_HEADER=MADS RELOC block {0}-{1} {2} +HEX_EDITOR_ATARI_MADS_UPDATE_RELOC_BLOCK_HEADER=MADS UPDATE RELOC block {0} {1} +HEX_EDITOR_ATARI_MADS_UPDATE_SYMBOLS_BLOCK_HEADER=MADS UPDATE SYMBOLS block {0} {1} +HEX_EDITOR_ATARI_MADS_DEFINE_SYMBOLS_BLOCK_HEADER=MADS DEFINE SYMBOLS block {0} +HEX_EDITOR_ATARI_MADS_DEFINE_SYMBOL_HEADER=MADS DEFINE SYMBOL {0} {1} {2} {3} +HEX_EDITOR_ATARI_MADS_BLOCK_ERROR=MADS file structure error + +HEX_EDITOR_ATARI_SAP_FILE_HEADER=SAP Header + +HEX_EDITOR_ATARI_SDX_NON_RELOC_BLOCK_HEADER=SDX NON-RELOC block +HEX_EDITOR_ATARI_SDX_NON_RELOC_BLOCK_HEADER_PARAMETERS={0}-{1} ({2}) +HEX_EDITOR_ATARI_SDX_RELOC_BLOCK_HEADER=SDX RELOC block {0} {1} {2} {3} +HEX_EDITOR_ATARI_SDX_UPDATE_RELOC_BLOCK_HEADER=SDX UPDATE RELOC block {0} {1} +HEX_EDITOR_ATARI_SDX_UPDATE_SYMBOLS_BLOCK_HEADER=SDX UPDATE SYMBOLS block {0} {1} +HEX_EDITOR_ATARI_SDX_DEFINE_SYMBOLS_BLOCK_HEADER=SDX DEFINE SYMBOLS block {0} {1} {2} +HEX_EDITOR_ATARI_SDX_BLOCK_ERROR=SDX file structure error + +HEX_EDITOR_C64_PRG_HEADER=Program +HEX_EDITOR_C64_PRG_HEADER_PARAMETERS={0}-{1} ({2}) +HEX_EDITOR_C64_PRG_ERROR=PRG file structure error + +HEX_EDITOR_IFF_CHUNK=Chunk {0} contains ${1} ({2}) bytes +HEX_EDITOR_IFF_FORM_CHUNK=Chunk {0} of type {1} contains ${2} ({3}) bytes +HEX_EDITOR_IFF_FILE_ERROR=IFF file structure error + +HEX_EDITOR_FILE_CONTENT_SIZE_FIELD_LABEL=File Size +HEX_EDITOR_FILE_CONTENT_SIZE_FIELD_TEXT=${0} ({1}) bytes +HEX_EDITOR_FILE_CONTENT_MODE_FIELD_LABEL=File Mode +HEX_EDITOR_CHARACTER_SET_TYPE_FIELD_LABEL=Character Set +HEX_EDITOR_BYTES_PER_ROW_FIELD_LABEL=Bytes per Row + +HEX_EDITOR_SAVE_SELECTION_AS_DIALOG_TITLE=Save ${0} ({1}) bytes as... + +MESSAGE_E300=File content cannot be interpreted as '{0}'. +MESSAGE_E301=File of type '{0}' is corrupted; check the last section of the file. +MESSAGE_I302=${0} ({1}) bytes copied to clipboard. +MESSAGE_I303=${0} ({1}) bytes saved as '{2}'. \ No newline at end of file diff --git a/com.wudsn.ide.hex/src/com/wudsn/ide/hex/Texts_de_DE.properties b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/Texts_de_DE.properties new file mode 100644 index 00000000..0c18c5c0 --- /dev/null +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/Texts_de_DE.properties @@ -0,0 +1,48 @@ +HEX_EDITOR_FILE_SIZE=Datei enhält {0} ({1}) Bytes. + +HEX_EDITOR_ATARI_COM_BLOCK_HEADER=COM Block +HEX_EDITOR_ATARI_COM_BLOCK_HEADER_PARAMETERS={0}-{1} ({2}) +HEX_EDITOR_ATARI_COM_BLOCK_ERROR=COM Dateistruktur defekt + +HEX_EDITOR_ATARI_DISK_IMAGE_HEADER=ATR Header +HEX_EDITOR_ATARI_SECTOR_HEADER=Sektor +HEX_EDITOR_ATARI_SECTOR_HEADER_PARAMETERS=({2}) +HEX_EDITOR_ATARI_SECTOR_ERROR=Sektorfehler + +HEX_EDITOR_ATARI_MADS_RELOC_BLOCK_HEADER=MADS RELOC Block {0}-{1} {2} +HEX_EDITOR_ATARI_MADS_UPDATE_RELOC_BLOCK_HEADER=MADS UPDATE RELOC Block {0} {1} +HEX_EDITOR_ATARI_MADS_UPDATE_SYMBOLS_BLOCK_HEADER=MADS UPDATE SYMBOLS Block {0} {1} +HEX_EDITOR_ATARI_MADS_DEFINE_SYMBOLS_BLOCK_HEADER=MADS DEFINE SYMBOLS Block {0} +HEX_EDITOR_ATARI_MADS_DEFINE_SYMBOL_HEADER=MADS DEFINE SYMBOL {0} {1} {2} {3} +HEX_EDITOR_ATARI_MADS_BLOCK_ERROR=MADS Dateistruktur defekt + +HEX_EDITOR_ATARI_SAP_FILE_HEADER=SAP Header + +HEX_EDITOR_ATARI_SDX_NON_RELOC_BLOCK_HEADER=SDX NON-RELOC block +HEX_EDITOR_ATARI_SDX_NON_RELOC_BLOCK_HEADER_PARAMETERS={0}-{1} ({2}) +HEX_EDITOR_ATARI_SDX_RELOC_BLOCK_HEADER=SDX NON-RELOC Block {0} {1} {2} {3} +HEX_EDITOR_ATARI_SDX_UPDATE_RELOC_BLOCK_HEADER=SDX UPDATE RELOC Block {0} {1} +HEX_EDITOR_ATARI_SDX_UPDATE_SYMBOLS_BLOCK_HEADER=SDX UPDATE SYMBOLS Block {0} {1} +HEX_EDITOR_ATARI_SDX_DEFINE_SYMBOLS_BLOCK_HEADER=SDX DEFINE SYMBOLS Block {0} {1} {2} +HEX_EDITOR_ATARI_SDX_BLOCK_ERROR=SDX Dateistruktur defekt + +HEX_EDITOR_C64_PRG_HEADER=Programm +HEX_EDITOR_C64_PRG_HEADER_PARAMETERS={0}-{1} ({2}) +HEX_EDITOR_C64_PRG_ERROR=PRG Dateistruktur defekt + +HEX_EDITOR_IFF_CHUNK=Chunk +HEX_EDITOR_IFF_FORM_CHUNK=Chunk {0} vom Typ {1} enhl#t ${2} ({3}) Bytes +HEX_EDITOR_IFF_FILE_ERROR=IFF Dateistruktur defekt + +HEX_EDITOR_FILE_CONTENT_SIZE_FIELD_LABEL=Dateigröße +HEX_EDITOR_FILE_CONTENT_SIZE_FIELD_TEXT=${0} ({1}) Bytes +HEX_EDITOR_FILE_CONTENT_MODE_FIELD_LABEL=Datei-Modus +HEX_EDITOR_CHARACTER_SET_TYPE_FIELD_LABEL=Zeichensatz +HEX_EDITOR_BYTES_PER_ROW_FIELD_LABEL=Bytes pro Zeile + +HEX_EDITOR_SAVE_SELECTION_AS_DIALOG_TITLE=Speichere ${0} ({1}) Bytes unter... + +MESSAGE_E300=Inhalt der Datei kann nicht als '{0}' interpretiert werden. +MESSAGE_E301=Datei vom Typ '{0}' ist korrupt; überprüfen Sie den letzten Abschnitt der Datei +MESSAGE_I302=${0} ({1}) Bytes in die Zwischenablage kopiert. +MESSAGE_I303=${0} ({1}) Bytes gespeichert unter '{2}'. \ No newline at end of file diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/AtariCOMParser.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/AtariCOMParser.java similarity index 89% rename from com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/AtariCOMParser.java rename to com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/AtariCOMParser.java index c0c799c8..fe6818ad 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/AtariCOMParser.java +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/AtariCOMParser.java @@ -17,7 +17,7 @@ * along with WUDSN IDE. If not, see . */ -package com.wudsn.ide.base.editor.hex.parser; +package com.wudsn.ide.hex.parser; import org.eclipse.jface.viewers.StyledString; @@ -29,7 +29,7 @@ public final class AtariCOMParser extends AtariParser { throw new IllegalArgumentException("Parameter 'contentBuilder' must not be null."); } int offset = 0; - int fileContentLenght = getFileContentLength(); + int fileContentLenght = fileContent.getLength(); return parseAtariCOMFile(contentBuilder, offset, fileContentLenght); } diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/AtariDiskImageKFileParser.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/AtariDiskImageKFileParser.java similarity index 87% rename from com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/AtariDiskImageKFileParser.java rename to com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/AtariDiskImageKFileParser.java index 953e83c8..e48de8b1 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/AtariDiskImageKFileParser.java +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/AtariDiskImageKFileParser.java @@ -17,7 +17,7 @@ * along with WUDSN IDE. If not, see . */ -package com.wudsn.ide.base.editor.hex.parser; +package com.wudsn.ide.hex.parser; import org.eclipse.jface.viewers.StyledString; @@ -38,8 +38,8 @@ public final class AtariDiskImageKFileParser extends AtariDiskImageParser { // as well. if (!error) { // The length of the k-file is stored in $709/$70a. - int length = ATARI_DISK_IMAGE_K_FILE_COM_FILE_OFFSET + getFileContentByte(0x19) + 256 - * getFileContentByte(0x1a); + int length = ATARI_DISK_IMAGE_K_FILE_COM_FILE_OFFSET + fileContent.getByte(0x19) + 256 + * fileContent.getByte(0x1a); error = parseAtariCOMFile(contentBuilder, ATARI_DISK_IMAGE_K_FILE_COM_FILE_OFFSET, length); } return error; diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/AtariDiskImageParser.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/AtariDiskImageParser.java similarity index 87% rename from com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/AtariDiskImageParser.java rename to com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/AtariDiskImageParser.java index 5e115930..abc944fd 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/AtariDiskImageParser.java +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/AtariDiskImageParser.java @@ -17,12 +17,12 @@ * along with WUDSN IDE. If not, see . */ -package com.wudsn.ide.base.editor.hex.parser; +package com.wudsn.ide.hex.parser; import org.eclipse.jface.viewers.StyledString; -import com.wudsn.ide.base.Texts; -import com.wudsn.ide.base.editor.hex.HexEditorContentOutlineTreeObject; +import com.wudsn.ide.hex.Texts; +import com.wudsn.ide.hex.HexEditorContentOutlineTreeObject; public class AtariDiskImageParser extends AtariParser { @@ -34,7 +34,7 @@ public class AtariDiskImageParser extends AtariParser { } boolean error = false; - int length = getFileContentLength(); + int length = fileContent.getLength(); long offset = 0; HexEditorContentOutlineTreeObject treeObject; @@ -47,7 +47,7 @@ public class AtariDiskImageParser extends AtariParser { blockMode = true; - int mainSectorSize = getFileContentByte(4) + 256 * getFileContentByte(5); + int mainSectorSize = fileContent.getByte(4) + 256 * fileContent.getByte(5); int bootSectorSize = mainSectorSize; if (bootSectorSize == 256 && (length % 256) == 128 + 16) { diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/AtariMADSParser.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/AtariMADSParser.java similarity index 81% rename from com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/AtariMADSParser.java rename to com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/AtariMADSParser.java index 68901698..080071e7 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/AtariMADSParser.java +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/AtariMADSParser.java @@ -17,15 +17,15 @@ * along with WUDSN IDE. If not, see . */ -package com.wudsn.ide.base.editor.hex.parser; +package com.wudsn.ide.hex.parser; import org.eclipse.jface.viewers.StyledString; -import com.wudsn.ide.base.Texts; +import com.wudsn.ide.hex.Texts; import com.wudsn.ide.base.common.HexUtility; import com.wudsn.ide.base.common.TextUtility; -import com.wudsn.ide.base.editor.hex.HexEditorContentOutlineTreeObject; -import com.wudsn.ide.base.editor.hex.HexEditorParser; +import com.wudsn.ide.hex.HexEditorContentOutlineTreeObject; +import com.wudsn.ide.hex.HexEditorParser; /** * All parsing in here is based on the format description in the MADS online @@ -54,7 +54,7 @@ public class AtariMADSParser extends HexEditorParser { skipByteTextIndex(offset); HexEditorContentOutlineTreeObject treeObject; - int fileContentLength = getFileContentLength(); + int fileContentLength = fileContent.getLength(); error = (fileContentLength - offset) < 17; boolean first = true; @@ -68,11 +68,11 @@ public class AtariMADSParser extends HexEditorParser { if (offset == fileContentLength) { more = false; } else { - int header = getFileContentWord(offset); - if (header == COM_HEADER && getFileContentWord(offset + 6) == RELOC_HEADER) { - int startAddress = getFileContentWord(offset + 2); - int endAddress = getFileContentWord(offset + 4); - int config = getFileContentByte(offset + 9); + int header = fileContent.getWord(offset); + if (header == COM_HEADER && fileContent.getWord(offset + 6) == RELOC_HEADER) { + int startAddress = fileContent.getWord(offset + 2); + int endAddress = fileContent.getWord(offset + 4); + int config = fileContent.getByte(offset + 9); String headerText = TextUtility.format(Texts.HEX_EDITOR_ATARI_MADS_RELOC_BLOCK_HEADER, HexUtility.getLongValueHexString(startAddress, 4), @@ -88,8 +88,8 @@ public class AtariMADSParser extends HexEditorParser { } else if (header == UPDATE_RELOC_HEADER) { - int type = getFileContentByte(offset + 2); - int dataLength = getFileContentWord(offset + 3); + int type = fileContent.getByte(offset + 2); + int dataLength = fileContent.getWord(offset + 3); treeObject = printTypedHeader(contentBuilder, offset, Texts.HEX_EDITOR_ATARI_MADS_UPDATE_RELOC_BLOCK_HEADER, type, dataLength); @@ -115,9 +115,9 @@ public class AtariMADSParser extends HexEditorParser { * DATA WORD .. .. .. (DATA_LENGTH words) * */ - int type = getFileContentByte(offset + 2); - int dataLength = getFileContentWord(offset + 3); - int labelLength = getFileContentWord(offset + 5); + int type = fileContent.getByte(offset + 2); + int dataLength = fileContent.getWord(offset + 3); + int labelLength = fileContent.getWord(offset + 5); treeObject = printTypedHeader(contentBuilder, offset, Texts.HEX_EDITOR_ATARI_MADS_UPDATE_SYMBOLS_BLOCK_HEADER, type, dataLength); @@ -127,7 +127,7 @@ public class AtariMADSParser extends HexEditorParser { } else if (header == DEFINE_SYMBOLS_HEADER) { - int length = getFileContentWord(offset + 2); + int length = fileContent.getWord(offset + 2); String headerText = TextUtility.format(Texts.HEX_EDITOR_ATARI_MADS_DEFINE_SYMBOLS_BLOCK_HEADER, HexUtility.getLongValueHexString(length, 4)); StyledString headerStyledString = new StyledString(headerText, offsetStyler); @@ -136,16 +136,16 @@ public class AtariMADSParser extends HexEditorParser { offset += 4; for (int i = 0; i < length; i++) { - int type = getFileContentByte(offset); - int labelType = getFileContentByte(offset + 1); - int labelLength = getFileContentWord(offset + 2); + int type = fileContent.getByte(offset); + int labelType = fileContent.getByte(offset + 1); + int labelLength = fileContent.getWord(offset + 2); String labelName = getLabelName(offset + 4, labelLength); - int address = getFileContentWord(offset + 4 + labelLength); + int address = fileContent.getWord(offset + 4 + labelLength); long headerEnd = offset + 6 + labelLength - 1; switch (labelType) { case 'P': - int procType = getFileContentByte(headerEnd + 1); - int paramCount = getFileContentWord(headerEnd + 2); + int procType = fileContent.getByte(headerEnd + 1); + int paramCount = fileContent.getWord(headerEnd + 2); headerEnd += 4; for (int j = 0; j < paramCount; j++) { switch (procType) { @@ -156,7 +156,7 @@ public class AtariMADSParser extends HexEditorParser { break; case 'V': headerEnd += 1; - int paramLenght = getFileContentWord(headerEnd); + int paramLenght = fileContent.getWord(headerEnd); headerEnd += 2 + paramLenght; break; } @@ -214,7 +214,7 @@ public class AtariMADSParser extends HexEditorParser { private String getLabelName(long offset, int length) { StringBuffer buffer = new StringBuffer(8); for (int i = 0; i < length; i++) { - buffer.append((char) getFileContentByte(offset + i)); + buffer.append((char) fileContent.getByte(offset + i)); } return buffer.toString(); } diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/AtariParser.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/AtariParser.java similarity index 80% rename from com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/AtariParser.java rename to com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/AtariParser.java index 4e095240..18160daf 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/AtariParser.java +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/AtariParser.java @@ -17,13 +17,13 @@ * along with WUDSN IDE. If not, see . */ -package com.wudsn.ide.base.editor.hex.parser; +package com.wudsn.ide.hex.parser; import org.eclipse.jface.viewers.StyledString; -import com.wudsn.ide.base.Texts; -import com.wudsn.ide.base.editor.hex.HexEditorContentOutlineTreeObject; -import com.wudsn.ide.base.editor.hex.HexEditorParser; +import com.wudsn.ide.hex.Texts; +import com.wudsn.ide.hex.HexEditorContentOutlineTreeObject; +import com.wudsn.ide.hex.HexEditorParser; public abstract class AtariParser extends HexEditorParser { @@ -47,8 +47,8 @@ public abstract class AtariParser extends HexEditorParser { error = (fileContentLength - offset) < 7; if (!error) { - startAddress = getFileContentWord(offset + 2); - endAddress = getFileContentWord(offset + 4); + startAddress = fileContent.getWord(offset + 2); + endAddress = fileContent.getWord(offset + 4); blockCount = 1; blockEnd = offset + endAddress - startAddress + 6; @@ -74,7 +74,7 @@ public abstract class AtariParser extends HexEditorParser { error = true; } else { boolean comHeader; - comHeader = getFileContentWord(offset) == COM_HEADER; + comHeader = fileContent.getWord(offset) == COM_HEADER; if (comHeader) { // At least 7 bytes available? (6 header bytes and 1 // data byte) @@ -83,14 +83,14 @@ public abstract class AtariParser extends HexEditorParser { } else { // Inner COM header found headerLength = 6; - startAddress = getFileContentByte(offset + 2) + 256 * getFileContentByte(offset + 3); - endAddress = getFileContentByte(offset + 4) + 256 * getFileContentByte(offset + 5); + startAddress = fileContent.getByte(offset + 2) + 256 * fileContent.getByte(offset + 3); + endAddress = fileContent.getByte(offset + 4) + 256 * fileContent.getByte(offset + 5); } } else { // No inner COM header found headerLength = 4; - startAddress = getFileContentByte(offset + 0) + 256 * getFileContentByte(offset + 1); - endAddress = getFileContentByte(offset + 2) + 256 * getFileContentByte(offset + 3); + startAddress = fileContent.getByte(offset + 0) + 256 * fileContent.getByte(offset + 1); + endAddress = fileContent.getByte(offset + 2) + 256 * fileContent.getByte(offset + 3); } error = endAddress < startAddress; } diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/AtariSAPParser.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/AtariSAPParser.java similarity index 81% rename from com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/AtariSAPParser.java rename to com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/AtariSAPParser.java index 82addfcd..47ca74b9 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/AtariSAPParser.java +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/AtariSAPParser.java @@ -17,12 +17,12 @@ * along with WUDSN IDE. If not, see . */ -package com.wudsn.ide.base.editor.hex.parser; +package com.wudsn.ide.hex.parser; import org.eclipse.jface.viewers.StyledString; -import com.wudsn.ide.base.Texts; -import com.wudsn.ide.base.editor.hex.HexEditorContentOutlineTreeObject; +import com.wudsn.ide.hex.Texts; +import com.wudsn.ide.hex.HexEditorContentOutlineTreeObject; public final class AtariSAPParser extends AtariParser { @@ -32,9 +32,9 @@ public final class AtariSAPParser extends AtariParser { throw new IllegalArgumentException("Parameter 'contentBuilder' must not be null."); } long offset = 0; - int fileContentLenght = getFileContentLength(); + int fileContentLenght = fileContent.getLength(); int maxOffset = fileContentLenght - 2; - while (offset < maxOffset && getFileContentByte(offset) != 0xff && getFileContentByte(offset) != 0xff) { + while (offset < maxOffset && fileContent.getByte(offset) != 0xff && fileContent.getByte(offset) != 0xff) { offset++; } if (offset == maxOffset) { diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/AtariSDXParser.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/AtariSDXParser.java similarity index 81% rename from com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/AtariSDXParser.java rename to com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/AtariSDXParser.java index 1d62c11b..a10f7c0a 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/AtariSDXParser.java +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/AtariSDXParser.java @@ -17,16 +17,16 @@ * along with WUDSN IDE. If not, see . */ -package com.wudsn.ide.base.editor.hex.parser; +package com.wudsn.ide.hex.parser; import org.eclipse.jface.viewers.StyledString; -import com.wudsn.ide.base.Texts; import com.wudsn.ide.base.common.HexUtility; import com.wudsn.ide.base.common.NumberUtility; import com.wudsn.ide.base.common.TextUtility; -import com.wudsn.ide.base.editor.hex.HexEditorContentOutlineTreeObject; -import com.wudsn.ide.base.editor.hex.HexEditorParser; +import com.wudsn.ide.hex.HexEditorContentOutlineTreeObject; +import com.wudsn.ide.hex.HexEditorParser; +import com.wudsn.ide.hex.Texts; public class AtariSDXParser extends HexEditorParser { @@ -49,7 +49,7 @@ public class AtariSDXParser extends HexEditorParser { skipByteTextIndex(offset); HexEditorContentOutlineTreeObject treeObject; - int fileContentLength = getFileContentLength(); + int fileContentLength = fileContent.getLength(); error = (fileContentLength - offset) < 7; boolean first = true; @@ -63,14 +63,13 @@ public class AtariSDXParser extends HexEditorParser { if (offset == fileContentLength) { more = false; } else { - int header = getFileContentWord(offset); + int header = fileContent.getWord(offset); if (header == NON_RELOC_HEADER) { - int startAddress = getFileContentWord(offset + 2); - int endAddress = getFileContentWord(offset + 4); + int startAddress = fileContent.getWord(offset + 2); + int endAddress = fileContent.getWord(offset + 4); - treeObject = printBlockHeader(contentBuilder, - Texts.HEX_EDITOR_ATARI_SDX_NON_RELOC_BLOCK_HEADER, -1, - Texts.HEX_EDITOR_ATARI_SDX_NON_RELOC_BLOCK_HEADER_PARAMETERS, offset, startAddress, + treeObject = printBlockHeader(contentBuilder, Texts.HEX_EDITOR_ATARI_SDX_NON_RELOC_BLOCK_HEADER, + -1, Texts.HEX_EDITOR_ATARI_SDX_NON_RELOC_BLOCK_HEADER_PARAMETERS, offset, startAddress, endAddress); offset = printBytes(treeObject, contentBuilder, offset, offset + 5, true, 0); @@ -79,10 +78,10 @@ public class AtariSDXParser extends HexEditorParser { offset = printBytes(treeObject, contentBuilder, offset, blockEnd, true, startAddress); } else if (header == RELOC_HEADER) { - int blockNumber = getFileContentByte(offset + 2); - int blockId = getFileContentByte(offset + 3); - int blockOffset = getFileContentWord(offset + 4); - int blockLength = getFileContentWord(offset + 6); + int blockNumber = fileContent.getByte(offset + 2); + int blockId = fileContent.getByte(offset + 3); + int blockOffset = fileContent.getWord(offset + 4); + int blockLength = fileContent.getWord(offset + 6); String headerText = TextUtility.format(Texts.HEX_EDITOR_ATARI_SDX_RELOC_BLOCK_HEADER, NumberUtility.getLongValueDecimalString(blockNumber), @@ -101,8 +100,8 @@ public class AtariSDXParser extends HexEditorParser { offset = printBytes(treeObject, contentBuilder, offset, blockEnd, true, blockOffset); } } else if (header == UPDATE_RELOC_HEADER) { - int blockNumber = getFileContentByte(offset + 2); - int blockLength = getFileContentWord(offset + 3); + int blockNumber = fileContent.getByte(offset + 2); + int blockLength = fileContent.getWord(offset + 3); String headerText = TextUtility.format(Texts.HEX_EDITOR_ATARI_SDX_UPDATE_RELOC_BLOCK_HEADER, NumberUtility.getLongValueDecimalString(blockNumber), @@ -115,7 +114,7 @@ public class AtariSDXParser extends HexEditorParser { offset = printBytes(treeObject, contentBuilder, offset, blockEnd, true, 0); } else if (header == UPDATE_SYMBOLS_HEADER) { String symbolName = getSymbolName(offset + 2); - int blockLength = getFileContentWord(offset + 10); + int blockLength = fileContent.getWord(offset + 10); String headerText = TextUtility.format(Texts.HEX_EDITOR_ATARI_SDX_UPDATE_SYMBOLS_BLOCK_HEADER, symbolName, HexUtility.getLongValueHexString(blockLength, 4)); @@ -126,8 +125,8 @@ public class AtariSDXParser extends HexEditorParser { long blockEnd = getBlockEnd(offset); offset = printBytes(treeObject, contentBuilder, offset, blockEnd, true, 0); } else if (header == DEFINE_SYMBOLS_HEADER) { - int blockNumber = getFileContentByte(offset + 2); - int blockOffset = getFileContentWord(offset + 3); + int blockNumber = fileContent.getByte(offset + 2); + int blockOffset = fileContent.getWord(offset + 3); String symbolName = getSymbolName(offset + 5); String headerText = TextUtility.format(Texts.HEX_EDITOR_ATARI_SDX_DEFINE_SYMBOLS_BLOCK_HEADER, @@ -161,11 +160,11 @@ public class AtariSDXParser extends HexEditorParser { * @return The end offset, a non-negative integer. */ private long getBlockEnd(long offset) { - int fileContentLength = getFileContentLength(); + int fileContentLength = fileContent.getLength(); long i = offset; long blockEnd = -1; while (blockEnd < 0 && i < fileContentLength) { - int location = getFileContentByte(i); + int location = fileContent.getByte(i); switch (location) { case 0xfc: blockEnd = i; @@ -187,7 +186,7 @@ public class AtariSDXParser extends HexEditorParser { private String getSymbolName(long offset) { StringBuffer buffer = new StringBuffer(8); for (int i = 0; i < 8; i++) { - buffer.append((char) getFileContentByte(offset + i)); + buffer.append((char) fileContent.getByte(offset + i)); } return buffer.toString(); } diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/BinaryParser.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/BinaryParser.java similarity index 80% rename from com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/BinaryParser.java rename to com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/BinaryParser.java index e30f1ddf..130214bf 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/BinaryParser.java +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/BinaryParser.java @@ -17,12 +17,12 @@ * along with WUDSN IDE. If not, see . */ -package com.wudsn.ide.base.editor.hex.parser; +package com.wudsn.ide.hex.parser; import org.eclipse.jface.viewers.StyledString; -import com.wudsn.ide.base.editor.hex.HexEditorContentOutlineTreeObject; -import com.wudsn.ide.base.editor.hex.HexEditorParser; +import com.wudsn.ide.hex.HexEditorContentOutlineTreeObject; +import com.wudsn.ide.hex.HexEditorParser; public class BinaryParser extends HexEditorParser { @@ -32,7 +32,7 @@ public class BinaryParser extends HexEditorParser { throw new IllegalArgumentException("Parameter 'contentBuilder' must not be null."); } HexEditorContentOutlineTreeObject treeObject = new HexEditorContentOutlineTreeObject(contentBuilder); - printBytes(treeObject, contentBuilder, 0, getFileContentLength() - 1, false, 0); + printBytes(treeObject, contentBuilder, 0, fileContent.getLength() - 1, false, 0); return false; } diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/C64PRGParser.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/C64PRGParser.java similarity index 82% rename from com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/C64PRGParser.java rename to com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/C64PRGParser.java index 2584db7f..75b9e5f2 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/C64PRGParser.java +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/C64PRGParser.java @@ -17,13 +17,13 @@ * along with WUDSN IDE. If not, see . */ -package com.wudsn.ide.base.editor.hex.parser; +package com.wudsn.ide.hex.parser; import org.eclipse.jface.viewers.StyledString; -import com.wudsn.ide.base.Texts; -import com.wudsn.ide.base.editor.hex.HexEditorContentOutlineTreeObject; -import com.wudsn.ide.base.editor.hex.HexEditorParser; +import com.wudsn.ide.hex.Texts; +import com.wudsn.ide.hex.HexEditorContentOutlineTreeObject; +import com.wudsn.ide.hex.HexEditorParser; public class C64PRGParser extends HexEditorParser { @@ -36,12 +36,12 @@ public class C64PRGParser extends HexEditorParser { int startAddress; int endAddress; - int length = getFileContentLength(); + int length = fileContent.getLength(); long offset = 0; error = (length < 2); if (!error) { - startAddress = getFileContentByte(offset + 0) + 256 * getFileContentByte(offset + 1); + startAddress = fileContent.getByte(offset + 0) + 256 * fileContent.getByte(offset + 1); endAddress = startAddress + length - 3; HexEditorContentOutlineTreeObject treeObject; diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/IFFParser.java b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/IFFParser.java similarity index 83% rename from com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/IFFParser.java rename to com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/IFFParser.java index 8309cf38..9a86ce4c 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/parser/IFFParser.java +++ b/com.wudsn.ide.hex/src/com/wudsn/ide/hex/parser/IFFParser.java @@ -17,16 +17,16 @@ * along with WUDSN IDE. If not, see . */ -package com.wudsn.ide.base.editor.hex.parser; +package com.wudsn.ide.hex.parser; import org.eclipse.jface.viewers.StyledString; -import com.wudsn.ide.base.Texts; import com.wudsn.ide.base.common.HexUtility; import com.wudsn.ide.base.common.NumberUtility; import com.wudsn.ide.base.common.TextUtility; -import com.wudsn.ide.base.editor.hex.HexEditorContentOutlineTreeObject; -import com.wudsn.ide.base.editor.hex.HexEditorParser; +import com.wudsn.ide.hex.HexEditorContentOutlineTreeObject; +import com.wudsn.ide.hex.HexEditorParser; +import com.wudsn.ide.hex.Texts; public final class IFFParser extends HexEditorParser { @@ -37,7 +37,7 @@ public final class IFFParser extends HexEditorParser { } boolean error; long offset = 0; - long fileContentLength = getFileContentLength(); + long fileContentLength = fileContent.getLength(); error = parse(contentBuilder, offset, fileContentLength, null); return error; } @@ -51,7 +51,7 @@ public final class IFFParser extends HexEditorParser { while ((fileContentLength - offset) >= 8 && !error) { long headerLength = 8; String chunkName = getChunkName(offset); - long chunkLength = getFileContentDoubleWordBigEndian(offset + 4); + long chunkLength = fileContent.getDoubleWordBigEndian(offset + 4); String headerText; String formTypeName = ""; boolean hasInnerChunks = false; @@ -63,7 +63,8 @@ public final class IFFParser extends HexEditorParser { NumberUtility.getLongValueDecimalString(chunkLength)); headerLength += 4; chunkLength -= 4; - // Ignore trailing parts in the file outside of the main chunk + // Ignore trailing parts in the file outside of the main + // chunk fileContentLength = offset + chunkLength; hasInnerChunks = true; } else { @@ -110,10 +111,10 @@ public final class IFFParser extends HexEditorParser { private String getChunkName(long offset) { char[] id = new char[4]; - id[0] = (char) getFileContentByte(offset); - id[1] = (char) getFileContentByte(offset + 1); - id[2] = (char) getFileContentByte(offset + 2); - id[3] = (char) getFileContentByte(offset + 3); + id[0] = (char) fileContent.getByte(offset); + id[1] = (char) fileContent.getByte(offset + 1); + id[2] = (char) fileContent.getByte(offset + 2); + id[3] = (char) fileContent.getByte(offset + 3); return String.copyValueOf(id); }