diff --git a/pom.xml b/pom.xml
index a9de0873..0fc3d693 100644
--- a/pom.xml
+++ b/pom.xml
@@ -105,6 +105,11 @@
${itext.version}
test
+
+ com.itextpdf
+ pdfCop
+ 1.0.1-SNAPSHOT
+
diff --git a/src/main/java/com/itextpdf/rups/view/itext/SyntaxHighlightedStreamPane.java b/src/main/java/com/itextpdf/rups/view/itext/SyntaxHighlightedStreamPane.java
index 460a86cd..25ff2100 100644
--- a/src/main/java/com/itextpdf/rups/view/itext/SyntaxHighlightedStreamPane.java
+++ b/src/main/java/com/itextpdf/rups/view/itext/SyntaxHighlightedStreamPane.java
@@ -49,6 +49,7 @@ This file is part of the iText (R) project.
import com.itextpdf.kernel.pdf.*;
import com.itextpdf.kernel.pdf.canvas.parser.util.PdfCanvasParser;
import com.itextpdf.kernel.pdf.xobject.PdfImageXObject;
+import com.itextpdf.pdfdsl.PdfCop;
import com.itextpdf.rups.controller.PdfReaderController;
import com.itextpdf.rups.event.RupsEvent;
import com.itextpdf.rups.model.LoggerHelper;
@@ -56,6 +57,7 @@ This file is part of the iText (R) project.
import com.itextpdf.rups.view.contextmenu.ContextMenuMouseListener;
import com.itextpdf.rups.view.contextmenu.StreamPanelContextMenu;
import com.itextpdf.rups.view.itext.treenodes.PdfObjectTreeNode;
+import org.antlr.v4.runtime.misc.ParseCancellationException;
import javax.imageio.ImageIO;
import javax.swing.*;
@@ -123,7 +125,7 @@ public class SyntaxHighlightedStreamPane extends JScrollPane implements Observer
/**
* Constructs a SyntaxHighlightedStreamPane.
*
- * @param controller the pdf reader controller
+ * @param controller the pdf reader text
* @param pluginMode the plugin mode
*/
public SyntaxHighlightedStreamPane(PdfReaderController controller, boolean pluginMode) {
@@ -162,7 +164,7 @@ public void render(PdfObjectTreeNode target) {
manager.discardAllEdits();
manager.setLimit(0);
this.target = target;
- if (!(target.getPdfObject() instanceof PdfStream)) {
+ if (! ( target.getPdfObject() instanceof PdfStream )) {
clearPane();
return;
}
@@ -172,7 +174,7 @@ public void render(PdfObjectTreeNode target) {
if (PdfName.Image.equals(stream.getAsName(PdfName.Subtype))) {
try {
//Convert byte array back to Image
- if (!stream.get(PdfName.Width, false).isNumber() && !stream.get(PdfName.Height, false).isNumber())
+ if (! stream.get(PdfName.Width, false).isNumber() && ! stream.get(PdfName.Height, false).isNumber())
return;
PdfImageXObject pimg = new PdfImageXObject(stream);
BufferedImage img = pimg.getBufferedImage();
@@ -194,6 +196,7 @@ public void actionPerformed(ActionEvent event) {
try {
FileDialog fileDialog = new FileDialog(new Frame(), "Save", FileDialog.SAVE);
fileDialog.setFilenameFilter(new FilenameFilter() {
+
public boolean accept(File dir, String name) {
return name.endsWith(".jpg");
}
@@ -227,6 +230,7 @@ public boolean accept(File dir, String name) {
setTextEditableRoutine(false);
}
} else if (stream.get(PdfName.Length1) == null) {
+ text.registerKeyboardAction(new SaveAction(text, this.target), KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK), JComponent.WHEN_FOCUSED);
setTextEditableRoutine(true);
String newline = "\n";
byte[] bb = null;
@@ -239,7 +243,7 @@ public boolean accept(File dir, String name) {
ArrayList tokens = new ArrayList<>();
while (ps.parse(tokens).size() > 0) {
// operator is at the end
- String operator = (tokens.get(tokens.size() - 1)).toString();
+ String operator = ( tokens.get(tokens.size() - 1) ).toString();
// operands are in front of their operator
StringBuilder operandssb = new StringBuilder();
for (int i = 0; i < tokens.size() - 1; i++) {
@@ -272,10 +276,10 @@ public boolean accept(File dir, String name) {
public void saveToTarget() {
manager.discardAllEdits();
manager.setLimit(0);
- if (controller != null && ((PdfDictionary) target.getPdfObject()).containsKey(PdfName.Filter)) {
+ if (controller != null && ( (PdfDictionary) target.getPdfObject() ).containsKey(PdfName.Filter)) {
controller.deleteTreeNodeDictChild(target, PdfName.Filter);
}
- ((PdfStream) target.getPdfObject()).setData(text.getText().getBytes());
+ ( (PdfStream) target.getPdfObject() ).setData(text.getText().getBytes());
if (controller != null) {
controller.selectNode(target);
}
@@ -291,7 +295,7 @@ protected void append(StringBuilder sb, PdfObject obj) {
byte[] b = str.getValueBytes();
String hex;
for (byte aB : b) {
- hex = Integer.toHexString((aB & 0xFF));
+ hex = Integer.toHexString(( aB & 0xFF ));
if (hex.length() % 2 == 1)
sb.append("0");
sb.append(hex);
@@ -435,7 +439,7 @@ protected void initAttributes() {
private void setTextEditableRoutine(boolean editable) {
text.setEditable(editable);
- if ((pdfStreamGetInputStreamMethod != null) && editable && (target != null) && (target.getPdfObject() instanceof PdfStream)) {
+ if (( pdfStreamGetInputStreamMethod != null ) && editable && ( target != null ) && ( target.getPdfObject() instanceof PdfStream )) {
try {
popupMenu.setSaveToStreamEnabled(pdfStreamGetInputStreamMethod.invoke(target.getPdfObject()) == null);
return;
@@ -457,7 +461,7 @@ private void clearPane() {
/**
* a serial version id.
*/
- private static final long serialVersionUID = -3699893393067753664L;
+ private static final long serialVersionUID = - 3699893393067753664L;
}
@@ -492,6 +496,7 @@ public void append(String s, Map