You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2015/06/15 07:54:22 UTC

svn commit: r1685500 - in /pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools: ./ pdfdebugger/colorpane/

Author: tilman
Date: Mon Jun 15 05:54:21 2015
New Revision: 1685500

URL: http://svn.apache.org/r1685500
Log:
PDFBOX-2530: show Indexed colorspace + show colorspace title, as done by Khyrul Bashar in GSoC2015

Added:
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/CSIndexed.java   (with props)
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/IndexedColorant.java   (with props)
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/IndexedTableModel.java   (with props)
Modified:
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFDebugger.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/CSDeviceN.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/CSSeparation.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/DeviceNColorant.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/DeviceNTableModel.java

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFDebugger.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFDebugger.java?rev=1685500&r1=1685499&r2=1685500&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFDebugger.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFDebugger.java Mon Jun 15 05:54:21 2015
@@ -22,7 +22,9 @@ import java.awt.event.ActionEvent;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
 import java.util.Arrays;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 import javax.swing.AbstractAction;
 import javax.swing.Action;
 import javax.swing.JComponent;
@@ -34,6 +36,7 @@ import javax.swing.UIManager;
 import javax.swing.border.BevelBorder;
 import javax.swing.event.TreeSelectionEvent;
 import javax.swing.event.TreeSelectionListener;
+import javax.swing.filechooser.FileFilter;
 import javax.swing.tree.TreeModel;
 import javax.swing.tree.TreePath;
 import org.apache.pdfbox.cos.COSArray;
@@ -57,10 +60,8 @@ import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.InputStream;
 import java.io.IOException;
-import java.util.HashSet;
-import java.util.Set;
-import javax.swing.filechooser.FileFilter;
 import org.apache.pdfbox.tools.pdfdebugger.colorpane.CSDeviceN;
+import org.apache.pdfbox.tools.pdfdebugger.colorpane.CSIndexed;
 import org.apache.pdfbox.tools.pdfdebugger.colorpane.CSSeparation;
 import org.apache.pdfbox.tools.util.FileOpenSaveDialog;
 import org.apache.pdfbox.tools.pdfdebugger.ui.Tree;
@@ -331,7 +332,6 @@ public class PDFDebugger extends javax.s
      * For now only Separation Color space is shown.
      * @param csNode the special color space containing node.
      */
-    //TODO implement Indexed color spaces related features
     private void showColorPane(Object csNode)
     {
         if (csNode instanceof MapEntry)
@@ -358,12 +358,9 @@ public class PDFDebugger extends javax.s
                 {
                     jSplitPane1.setRightComponent(new CSDeviceN(array).getPanel());
                 }
-                else
+                else if (csName.equals(COSName.INDEXED))
                 {
-                    if (!jSplitPane1.getRightComponent().equals(jScrollPane2))
-                    {
-                        jSplitPane1.setRightComponent(jScrollPane2);
-                    }
+                    jSplitPane1.setRightComponent(new CSIndexed(array).getPanel());
                 }
             }
         }

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/CSDeviceN.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/CSDeviceN.java?rev=1685500&r1=1685499&r2=1685500&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/CSDeviceN.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/CSDeviceN.java Mon Jun 15 05:54:21 2015
@@ -19,7 +19,11 @@ package org.apache.pdfbox.tools.pdfdebug
 import java.awt.Color;
 import java.awt.Component;
 import java.awt.Dimension;
+import java.awt.Font;
 import java.util.Arrays;
+import javax.swing.BoxLayout;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTable;
 import java.io.IOException;
@@ -29,7 +33,7 @@ import org.apache.pdfbox.pdmodel.graphic
 
 
 /**
- *@author  Khyrul Bashar.
+ *@author Khyrul Bashar.
  */
 
 /**
@@ -38,10 +42,11 @@ import org.apache.pdfbox.pdmodel.graphic
 public class CSDeviceN
 {
     private PDDeviceN deviceN;
-    private JScrollPane panel;
+    private JPanel panel;
 
     /**
      * Constructor
+     *
      * @param array COSArray instance that holds DeviceN color space
      */
     public CSDeviceN(COSArray array)
@@ -60,14 +65,15 @@ public class CSDeviceN
 
     /**
      * Parses the colorant data from the array.
+     *
      * @return the parsed colorants.
-     * @throws IOException if the color conversion fails.
+     * @throws java.io.IOException if the color conversion fails.
      */
     private DeviceNColorant[] getColorantData() throws IOException
     {
         int componentCount = deviceN.getNumberOfComponents();
         DeviceNColorant[] colorants = new DeviceNColorant[componentCount];
-        for (int i=0; i<componentCount; i++)
+        for (int i = 0; i < componentCount; i++)
         {
             DeviceNColorant colorant = new DeviceNColorant();
 
@@ -75,7 +81,7 @@ public class CSDeviceN
             float[] maximum = new float[componentCount];
             Arrays.fill(maximum, 0);
             float[] minimum = new float[componentCount];
-            Arrays.fill(minimum,1);
+            Arrays.fill(minimum, 1);
             maximum[i] = 1;
             minimum[i] = 0;
             colorant.setMaximum(getColorObj(deviceN.toRGB(maximum)));
@@ -87,17 +93,28 @@ public class CSDeviceN
 
     private void initUI(DeviceNColorant[] colorants)
     {
+        panel = new JPanel();
+        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
+        panel.setPreferredSize(new Dimension(300, 500));
+
+        JLabel colorSpaceLabel = new JLabel("DeviceN colorspace");
+        colorSpaceLabel.setAlignmentX((float) 0.5);
+        colorSpaceLabel.setFont(new Font(Font.MONOSPACED, Font.BOLD, 30));
+
         DeviceNTableModel tableModel = new DeviceNTableModel(colorants);
         JTable table = new JTable(tableModel);
         table.setDefaultRenderer(Color.class, new ColorBarCellRenderer());
         table.setRowHeight(60);
-        panel = new JScrollPane();
-        panel.setPreferredSize(new Dimension(300, 500));
-        panel.setViewportView(table);
+        JScrollPane scrollPane = new JScrollPane();
+        scrollPane.setViewportView(table);
+
+        panel.add(colorSpaceLabel);
+        panel.add(scrollPane);
     }
 
     /**
      * return the main panel that hold all the UI elements.
+     *
      * @return JPanel instance
      */
     public Component getPanel()

Added: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/CSIndexed.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/CSIndexed.java?rev=1685500&view=auto
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/CSIndexed.java (added)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/CSIndexed.java Mon Jun 15 05:54:21 2015
@@ -0,0 +1,155 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.pdfbox.tools.pdfdebugger.colorpane;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.io.IOException;
+import javax.swing.Box;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+
+import org.apache.pdfbox.cos.COSArray;
+import org.apache.pdfbox.cos.COSNumber;
+import org.apache.pdfbox.pdmodel.graphics.color.PDIndexed;
+
+/**
+ * @author Khyrul Bashar.
+ */
+
+/**
+ * A class that provides the necessary UI and functionalities to show the Indexed colorspace.
+ */
+public class CSIndexed
+{
+    private PDIndexed indexed;
+    private JPanel panel;
+    private int colorCount;
+
+    /**
+     * Constructor.
+     * @param array COSArray instance for Indexed Colorspace.
+     */
+    public CSIndexed(COSArray array)
+    {
+        try
+        {
+            indexed = new PDIndexed(array);
+            colorCount = getHival(array);
+            initUI(getColorantData());
+        }
+        catch (IOException e)
+        {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * Parses the colorant data from the array and return.
+     *
+     * @return
+     */
+    private IndexedColorant[] getColorantData()
+    {
+        IndexedColorant[] colorants = new IndexedColorant[colorCount];
+        for (int i = 0; i < colorCount; i++)
+        {
+            IndexedColorant colorant = new IndexedColorant();
+            colorant.setIndex(i);
+
+            float[] rgbValues = indexed.toRGB(new float[]{i});
+            colorant.setRgbValues(rgbValues);
+            colorants[i] = colorant;
+        }
+        return colorants;
+    }
+
+    private void initUI(IndexedColorant[] colorants)
+    {
+        panel = new JPanel();
+        panel.setLayout(new GridBagLayout());
+        panel.setPreferredSize(new Dimension(300, 500));
+
+        JLabel colorSpaceLabel = new JLabel("Indexed colorspace");
+        colorSpaceLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
+        colorSpaceLabel.setFont(new Font(Font.MONOSPACED, Font.BOLD, 30));
+        JPanel colorspaceLabelPanel = new JPanel();
+        colorspaceLabelPanel.setAlignmentX(Component.LEFT_ALIGNMENT);
+        colorspaceLabelPanel.add(colorSpaceLabel);
+
+        JLabel colorCountLabel = new JLabel(" Total Color Count: " + colorCount);
+        colorCountLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
+        colorCountLabel.setFont(new Font(Font.MONOSPACED, Font.BOLD, 20));
+
+        IndexedTableModel tableModel = new IndexedTableModel(colorants);
+        JTable table = new JTable(tableModel);
+        table.setDefaultRenderer(Color.class, new ColorBarCellRenderer());
+        table.setRowHeight(40);
+        table.getColumnModel().getColumn(0).setMinWidth(30);
+        table.getColumnModel().getColumn(0).setMaxWidth(50);
+        table.getColumnModel().getColumn(1).setMinWidth(100);
+        table.getColumnModel().getColumn(1).setMaxWidth(100);
+
+        JScrollPane scrollPane = new JScrollPane();
+        scrollPane.setViewportView(table);
+        scrollPane.setAlignmentX(Component.LEFT_ALIGNMENT);
+
+        Box box = Box.createVerticalBox();
+        box.add(colorCountLabel);
+        box.add(scrollPane);
+        box.setAlignmentX(Component.LEFT_ALIGNMENT);
+
+        GridBagConstraints gbc = new GridBagConstraints();
+        gbc.gridx = 0;
+        gbc.gridy = 0;
+        gbc.weighty = 0.05;
+        gbc.fill = GridBagConstraints.HORIZONTAL;
+        gbc.anchor = GridBagConstraints.PAGE_START;
+
+        panel.add(colorspaceLabelPanel, gbc);
+
+        gbc.gridy = 2;
+        gbc.weighty=0.9;
+        gbc.weightx = 1;
+        gbc.fill = GridBagConstraints.BOTH;
+        gbc.anchor = GridBagConstraints.BELOW_BASELINE;
+
+        panel.add(box, gbc);
+    }
+
+    /**
+     * return the main panel that hold all the UI elements.
+     *
+     * @return JPanel instance
+     */
+    public Component getPanel()
+    {
+        return panel;
+    }
+
+    private int getHival(COSArray array)
+    {
+        int hival = ((COSNumber) array.getObject(2).getCOSObject()).intValue();
+        return Math.min(hival, 255);
+    }
+}

Propchange: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/CSIndexed.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/CSSeparation.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/CSSeparation.java?rev=1685500&r1=1685499&r2=1685500&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/CSSeparation.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/CSSeparation.java Mon Jun 15 05:54:21 2015
@@ -27,6 +27,7 @@ import java.awt.event.ActionListener;
 import java.io.IOException;
 import java.util.Dictionary;
 import java.util.Hashtable;
+import javax.swing.BoxLayout;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JSlider;
@@ -148,7 +149,7 @@ public class CSSeparation implements Cha
         contentPanel.add(colorBar, gbc2);
         setColorBarBorder();
 
-        panel = new JPanel(new GridBagLayout());
+        JPanel mainpanel = new JPanel(new GridBagLayout());
 
         JLabel colorantNameLabel = new JLabel("Colorant: " + separation.getColorantName());
         colorantNameLabel.setFont(boldFont);
@@ -159,15 +160,25 @@ public class CSSeparation implements Cha
         maingbc.weightx = 1;
         maingbc.weighty = 0.03;
         maingbc.anchor = GridBagConstraints.FIRST_LINE_START;
-        panel.add(colorantNameLabel, maingbc);
+        mainpanel.add(colorantNameLabel, maingbc);
 
         maingbc.gridx = 0;
         maingbc.gridy = 1;
         maingbc.weighty = 0.97;
         maingbc.gridwidth = 10;
         maingbc.fill = GridBagConstraints.HORIZONTAL;
-        panel.add(contentPanel, maingbc);
+        mainpanel.add(contentPanel, maingbc);
 
+        panel = new JPanel();
+        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
+        panel.setPreferredSize(new Dimension(300, 500));
+
+        JLabel colorSpaceLabel = new JLabel("Separation colorspace");
+        colorSpaceLabel.setAlignmentX((float) 0.5);
+        colorSpaceLabel.setFont(new Font(Font.MONOSPACED, Font.BOLD, 30));
+
+        panel.add(colorSpaceLabel);
+        panel.add(mainpanel);
     }
 
     private void initValues()

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/DeviceNColorant.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/DeviceNColorant.java?rev=1685500&r1=1685499&r2=1685500&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/DeviceNColorant.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/DeviceNColorant.java Mon Jun 15 05:54:21 2015
@@ -34,19 +34,6 @@ public class DeviceNColorant
     {
     }
 
-    /**
-     * Constructor
-     * @param colorantName String instance
-     * @param maxi maximum color
-     * @param mini minimum color
-     */
-    public DeviceNColorant(String colorantName, Color maxi, Color mini)
-    {
-        name = colorantName;
-        maximum = maxi;
-        minimum = mini;
-    }
-
     public String getName()
     {
         return name;

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/DeviceNTableModel.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/DeviceNTableModel.java?rev=1685500&r1=1685499&r2=1685500&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/DeviceNTableModel.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/DeviceNTableModel.java Mon Jun 15 05:54:21 2015
@@ -28,12 +28,12 @@ import javax.swing.table.AbstractTableMo
  */
 public class DeviceNTableModel extends AbstractTableModel
 {
-    private final String[] columnNames = new String[]{"Colorant", "Maximum", "Minimum"};
+    private static final String[] COLUMNNAMES = new String[] { "Colorant", "Maximum", "Minimum"};
     private final DeviceNColorant[] data;
 
     /**
      * Constructor
-     * @param colorants
+     * @param colorants array of DeviceNColorant
      */
     public DeviceNTableModel(DeviceNColorant[] colorants)
     {
@@ -49,7 +49,7 @@ public class DeviceNTableModel extends A
     @Override
     public int getColumnCount()
     {
-        return columnNames.length;
+        return COLUMNNAMES.length;
     }
 
     @Override
@@ -71,7 +71,7 @@ public class DeviceNTableModel extends A
     @Override
     public String getColumnName(int column)
     {
-        return columnNames[column];
+        return COLUMNNAMES[column];
     }
 
     @Override
@@ -88,4 +88,4 @@ public class DeviceNTableModel extends A
                 return null;
         }
     }
-}
\ No newline at end of file
+}

Added: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/IndexedColorant.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/IndexedColorant.java?rev=1685500&view=auto
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/IndexedColorant.java (added)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/IndexedColorant.java Mon Jun 15 05:54:21 2015
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.pdfbox.tools.pdfdebugger.colorpane;
+
+import java.awt.Color;
+
+/**
+ * @author Khyrul Bashar.
+ */
+
+/**
+ * Class to represent Colorant in Indexed color.
+ */
+public class IndexedColorant
+{
+    private int index;
+    private float[] rgbValues;
+
+    /**
+     * Constructor.
+     */
+    public IndexedColorant(){}
+
+    public int getIndex()
+    {
+        return index;
+    }
+
+    public void setIndex(int index)
+    {
+        this.index = index;
+    }
+
+    public void setRgbValues(float[] rgbValues)
+    {
+        this.rgbValues = rgbValues;
+    }
+
+    public Color getColor()
+    {
+        return new Color(rgbValues[0], rgbValues[1], rgbValues[2]);
+    }
+
+    public String getRGBValuesString()
+    {
+        StringBuilder builder = new StringBuilder();
+        for (float i: rgbValues)
+        {
+            builder.append((int)(i*255));
+            builder.append(", ");
+        }
+        builder.deleteCharAt(builder.lastIndexOf(","));
+        return builder.toString();
+    }
+}

Propchange: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/IndexedColorant.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/IndexedTableModel.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/IndexedTableModel.java?rev=1685500&view=auto
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/IndexedTableModel.java (added)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/IndexedTableModel.java Mon Jun 15 05:54:21 2015
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.pdfbox.tools.pdfdebugger.colorpane;
+
+import java.awt.Color;
+import javax.swing.table.AbstractTableModel;
+
+/**
+ * @author Khyrul Bashar.
+ */
+
+/**
+ * This the table model for showing Indexed color space which extends AbstractTableModel.
+ */
+public class IndexedTableModel extends AbstractTableModel
+{
+
+    private static final String[] COLUMNSNAMES = new String[] {"Index", "RGB value", "Color"};
+    private final IndexedColorant[] data;
+
+    /**
+     * Constructor
+     * @param colorants array of IndexedColorant
+     */
+    public IndexedTableModel(IndexedColorant[] colorants)
+    {
+        data = colorants;
+    }
+
+    @Override
+    public int getRowCount()
+    {
+        return data.length;
+    }
+
+    @Override
+    public int getColumnCount()
+    {
+        return COLUMNSNAMES.length;
+    }
+
+    @Override
+    public Object getValueAt(int row, int column)
+    {
+        switch (column)
+        {
+            case 0:
+                return data[row].getIndex();
+            case 1:
+                return data[row].getRGBValuesString();
+            case 2:
+                return data[row].getColor();
+            default:
+                return null;
+        }
+    }
+
+    @Override
+    public String getColumnName(int column)
+    {
+        return COLUMNSNAMES[column];
+    }
+
+    @Override
+    public Class<?> getColumnClass(int columnIndex)
+    {
+        switch (columnIndex)
+        {
+            case 0:
+                return Integer.class;
+            case 1:
+                return String.class;
+            case 2:
+                return Color.class;
+            default:
+                return null;
+        }
+    }
+}

Propchange: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/colorpane/IndexedTableModel.java
------------------------------------------------------------------------------
    svn:eol-style = native