protected Component getPixelMapsPanel(TaskObserver taskObserver) throws InterruptedException
    {
        taskObserver.taskProgress("Pixel Maps", 0.1f);
        if (Thread.currentThread().isInterrupted())
            throw new InterruptedException("getPixelMapsPanel() was interrupted.");

        PixelMapDataSource heightPixelMapDataSource = new PixelMapDataSource()
        {
            public int getValueAt(int row, int column)
            {
                return ByteConversions.convertByteToInt(outdoorDataMap.getHeightMap()[row][column]);
            }

            public int getRowCount() { return 128; }
            public int getColumnCount() { return 128; }
        };

        PixelMapDataSource tilePixelMapDataSource = new PixelMapDataSource()
        {
            public int getValueAt(int row, int column)
            {
                return ByteConversions.convertByteToInt(outdoorDataMap.getTileMap()[row][column]);
            }

            public int getRowCount() { return 128; }
            public int getColumnCount() { return 128; }
        };
        
        PixelMapDataSource attributePixelMapDataSource = new PixelMapDataSource()
        {
            public int getValueAt(int row, int column)
            {
                return ByteConversions.convertByteToInt(outdoorDataMap.getAttributeMap()[row][column]);
            }

            public int getRowCount() { return 128; }
            public int getColumnCount() { return 128; }
        };
        
        PixelMapDataSource monstersPixelMapDataSource = new PixelMapDataSource()
        {
            public int getValueAt(int row, int column)
            {
                List monsterList = outdoorDataMap.getSpawnPointList();

                int convertedX = (column * 512) - (64 * 512);
                int convertedY = (row * 512) - (64 * 512);

                for (int index = 0; index < monsterList.size(); ++index)
                {
                    SpawnPoint monster = (SpawnPoint)monsterList.get(index);
                    int monsterX = ByteConversions.getIntegerInByteArrayAtPosition(monster.getMonsterData(), 0);
                    int monsterY = ByteConversions.getIntegerInByteArrayAtPosition(monster.getMonsterData(), 4);
                
                    if ( (Math.abs(monsterX - convertedX) < 256)
                      && (Math.abs(monsterY - convertedY) < 256) )
                    {
                        return 255;
                    }
                }
                
                return 0;
            }

            public int getRowCount() { return 128; }
            public int getColumnCount() { return 128; }
        };

        PixelMapDataSource spriteLocPixelMapDataSource = new PixelMapDataSource()
        {
            public int getValueAt(int row, int column)
            {
                List spriteList = outdoorDataMap.getSpriteList();

                int convertedX = 512 * (column - 64);
                int convertedY = -512 * (row - 64);

                for (int index = 0; index < spriteList.size(); ++index)
                {
                    Sprite sprite = (Sprite)spriteList.get(index);
                    int spriteX = sprite.getX();
                    int spriteY = sprite.getY();
                
                    if ( (Math.abs(spriteX - convertedX) < 256)
                      && (Math.abs(spriteY - convertedY) < 256) )
                    {
                        return 255;
                    }
                }
                
                return 0;
            }

            public int getRowCount() { return 128; }
            public int getColumnCount() { return 128; }
        };

        JTabbedPane pixelMapsTabbedPane = new JTabbedPane();
        pixelMapsTabbedPane.addTab("Height map", makeNonStretchedPanelFor(new SwatchPanel(heightPixelMapDataSource, 0, 4, true)));
        pixelMapsTabbedPane.addTab("Tile map", makeNonStretchedPanelFor(new SwatchPanel(tilePixelMapDataSource, 0, 4, true)));
        pixelMapsTabbedPane.addTab("Attribute map", makeNonStretchedPanelFor(new SwatchPanel(attributePixelMapDataSource, 0, 4, true)));
        pixelMapsTabbedPane.addTab("ID Offset map", new JLabel("unimplemented"));
//        pixelMapsTabbedPane.addTab("sprite pts map", makeNonStretchedPanelFor(new SwatchPanel(spriteLocPixelMapDataSource, 0, 4, true)));
//        pixelMapsTabbedPane.addTab("monster pts map", makeNonStretchedPanelFor(new SwatchPanel(monstersPixelMapDataSource, 0, 4, true)));

        return pixelMapsTabbedPane;
    }