You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ja...@apache.org on 2015/07/14 21:53:04 UTC
svn commit: r1691068 - in
/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger:
streampane/Stream.java streampane/StreamPaneView.java ui/Tree.java
Author: jahewson
Date: Tue Jul 14 19:53:03 2015
New Revision: 1691068
URL: http://svn.apache.org/r1691068
Log:
PDFBOX-2530: Show filters in menu labels
Modified:
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/Stream.java
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/StreamPaneView.java
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/ui/Tree.java
Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/Stream.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/Stream.java?rev=1691068&r1=1691067&r2=1691068&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/Stream.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/Stream.java Tue Jul 14 19:53:03 2015
@@ -21,10 +21,11 @@ import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import java.util.Set;
+import org.apache.pdfbox.cos.COSArray;
+import org.apache.pdfbox.cos.COSBase;
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.cos.COSStream;
@@ -39,8 +40,7 @@ import org.apache.pdfbox.pdmodel.graphic
*/
class Stream
{
- public static final String UNFILTERED = "unfiltered";
- public static final String FILTERED = "Filtered";
+ public static final String UNFILTERED = "Unfiltered";
public static final String IMAGE = "Image";
private final COSStream stream;
@@ -73,11 +73,42 @@ class Stream
* XObject image type stream "Image" is also included in the list.
* @return An array of String.
*/
- public String[] getFilterList ()
+ public List<String> getFilterList()
{
- Set<String> set = filters.keySet();
- String[] filterArray = new String[set.size()];
- return set.toArray(filterArray);
+ List<String> list = new ArrayList<String>();
+ for (Map.Entry<String, List<String>> entry : filters.entrySet()) {
+ list.add(entry.getKey());
+ }
+ return list;
+ }
+
+ /**
+ * Returns the label for the "Unfiltered" menu item.
+ */
+ private String getFilteredLabel()
+ {
+ StringBuilder sb = new StringBuilder();
+ COSBase filters = stream.getFilters();
+ if (filters != null)
+ {
+ if (sb.length() > 0)
+ {
+ sb.append(", ");
+ }
+ if (filters instanceof COSName)
+ {
+ sb.append(((COSName) filters).getName());
+ }
+ else if (filters instanceof COSArray)
+ {
+ COSArray filterArray = (COSArray) filters;
+ for (int i = 0; i < filterArray.size(); i++)
+ {
+ sb.append(((COSName) filterArray.get(i)).getName());
+ }
+ }
+ }
+ return "Filtered (" + sb.toString() + ")" ;
}
/**
@@ -94,7 +125,7 @@ class Stream
{
return stream.getUnfilteredStream();
}
- else if (FILTERED.equals(key))
+ else if (getFilteredLabel().equals(key))
{
return stream.getFilteredStream();
}
@@ -131,8 +162,13 @@ class Stream
private Map<String, List<String>> createFilterList(COSStream stream)
{
- Map<String, List<String>> filterList = new HashMap<String, List<String>>();
+ Map<String, List<String>> filterList = new LinkedHashMap<String, List<String>>();
+ if (isImage)
+ {
+ filterList.put(IMAGE, null);
+ }
+
filterList.put(UNFILTERED, null);
PDStream pdStream = new PDStream(stream);
@@ -144,11 +180,7 @@ class Stream
{
filterList.put(getPartialStreamCommand(i), getStopFilterList(i));
}
- filterList.put(FILTERED, null);
- }
- if (isImage)
- {
- filterList.put(IMAGE, null);
+ filterList.put(getFilteredLabel(), null);
}
return filterList;
}
Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/StreamPaneView.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/StreamPaneView.java?rev=1691068&r1=1691067&r2=1691068&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/StreamPaneView.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/StreamPaneView.java Tue Jul 14 19:53:03 2015
@@ -21,6 +21,7 @@ import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
+import java.util.List;
import javax.swing.BoxLayout;
import javax.swing.JComboBox;
import javax.swing.JPanel;
@@ -41,7 +42,7 @@ class StreamPaneView extends JPanel
* @param initialChoice String instance. Initial choice for showing in the pane.
* @param listener ActionListener that listens for stream version choice changing.
*/
- StreamPaneView(String[] filterTypes, String initialChoice, ActionListener listener)
+ StreamPaneView(List<String> filterTypes, String initialChoice, ActionListener listener)
{
headerPanel = createHeaderPanel(filterTypes, initialChoice, listener);
contentPanel = new JPanel(new BorderLayout());
@@ -74,9 +75,9 @@ class StreamPaneView extends JPanel
this.validate();
}
- private JPanel createHeaderPanel(String[] availableFilters, String i, ActionListener actionListener)
+ private JPanel createHeaderPanel(List<String> availableFilters, String i, ActionListener actionListener)
{
- JComboBox filters = new JComboBox(availableFilters);
+ JComboBox filters = new JComboBox(availableFilters.toArray());
filters.setSelectedItem(i);
filters.addActionListener(actionListener);
Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/ui/Tree.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/ui/Tree.java?rev=1691068&r1=1691067&r2=1691068&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/ui/Tree.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/ui/Tree.java Tue Jul 14 19:53:03 2015
@@ -34,6 +34,7 @@ import javax.swing.JPopupMenu;
import javax.swing.JTree;
import javax.swing.tree.TreePath;
import org.apache.pdfbox.cos.COSArray;
+import org.apache.pdfbox.cos.COSBase;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.cos.COSStream;
import org.apache.pdfbox.io.IOUtils;
@@ -93,6 +94,8 @@ public class Tree extends JTree
Object obj = nodePath.getLastPathComponent();
List<JMenuItem> menuItems = new ArrayList<JMenuItem>();
+ menuItems.add(getTreePathMenuItem(nodePath));
+
if (obj instanceof MapEntry)
{
obj = ((MapEntry) obj).getValue();
@@ -118,8 +121,7 @@ public class Tree extends JTree
menuItems.add(getFilteredStreamSaveMenu(stream));
}
}
-
- menuItems.add(getTreePathMenuItem(nodePath));
+
return menuItems;
}
@@ -130,7 +132,7 @@ public class Tree extends JTree
*/
private JMenuItem getTreePathMenuItem(final TreePath path)
{
- JMenuItem copyPathMenuItem = new JMenuItem("Copy tree path");
+ JMenuItem copyPathMenuItem = new JMenuItem("Copy Tree Path");
copyPathMenuItem.addActionListener(new ActionListener()
{
@Override
@@ -150,7 +152,7 @@ public class Tree extends JTree
*/
private JMenuItem getFilteredStreamSaveMenu(final COSStream cosStream)
{
- JMenuItem saveMenuItem = new JMenuItem("Save filtered stream ...");
+ JMenuItem saveMenuItem = new JMenuItem("Save Filtered Stream (" + getFilters(cosStream) + ")...");
saveMenuItem.addActionListener(new ActionListener()
{
@Override
@@ -170,6 +172,35 @@ public class Tree extends JTree
return saveMenuItem;
}
+ /**
+ * Returns the filters used by the given stream.
+ */
+ private String getFilters(COSStream cosStream)
+ {
+ StringBuilder sb = new StringBuilder();
+ COSBase filters = cosStream.getFilters();
+ if (filters != null)
+ {
+ if (sb.length() > 0)
+ {
+ sb.append(", ");
+ }
+ if (filters instanceof COSName)
+ {
+ sb.append(((COSName) filters).getName());
+ }
+ else if (filters instanceof COSArray)
+ {
+ COSArray filterArray = (COSArray) filters;
+ for (int i = 0; i < filterArray.size(); i++)
+ {
+ sb.append(((COSName) filterArray.get(i)).getName());
+ }
+ }
+ }
+ return sb.toString();
+ }
+
/**
* Produce JMenuItem that saves unfiltered stream
@@ -178,7 +209,7 @@ public class Tree extends JTree
*/
private JMenuItem getUnFilteredStreamSaveMenu(final COSStream cosStream)
{
- JMenuItem saveMenuItem = new JMenuItem("Save unfiltered stream ...");
+ JMenuItem saveMenuItem = new JMenuItem("Save Unfiltered Stream...");
saveMenuItem.addActionListener(new ActionListener()
{
@Override