// Path: src/main/java/lwrt/CustomPath.java
// public enum PathContents {
//     DEFAULT, READONLY, HUD, CONFIG, SKYBOX;
// 
//     @Override
//     public String toString() {
//         return name().toLowerCase();
//     }
// }
// 
// Path: src/main/java/util/ListFilesVisitor.java
// public class ListFilesVisitor extends SimpleFileVisitor<Path> {
// 
//     private List<String> files = new ArrayList<>();
//     private Path start;
// 
//     public ListFilesVisitor(Path start) {
//         this.start = start;
//     }
// 
//     public List<String> getFiles() {
//         return files;
//     }
// 
//     @Override
//     public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
//         String str =
//             start.toAbsolutePath().relativize(file.toAbsolutePath()).toString();
//         files.add(str);
//         return FileVisitResult.CONTINUE;
//     }
// 
//     @Override
//     public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
//         return FileVisitResult.TERMINATE;
//     }
// 
// }


import lwrt.CustomPath.PathContents;
import util.ListFilesVisitor;
import javax.swing.table.AbstractTableModel;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.*;
import java.util.*;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.logging.Level;
import java.util.logging.Logger;
    public Object getValueAt(int row, int column) {
        CustomPath cp = list.get(row);
        switch (Column.values()[column]) {
            case CONTENTS:
                return simplify(cp.getContents());
            case SELECTED:
                return cp.isSelected();
            case PATH:
                return cp;
            default:
                return "";
        }
    }

    @Override
    public void setValueAt(Object value, int row, int column) {
        CustomPath cp = list.get(row);
        switch (Column.values()[column]) {
            case SELECTED:
                cp.setSelected((boolean) value);
                fireTableCellUpdated(row, column);
                return;
            default:
        }
    }

    private List<String> getContentsList(Path path) {
        if (path.toString().endsWith(".vpk")) {
            return cl.getVpkContents(cfg.getTfPath(), path);
        } else if (Files.isDirectory(path)) {
// Path: src/main/java/lwrt/CustomPath.java
// public enum PathContents {
//     DEFAULT, READONLY, HUD, CONFIG, SKYBOX;
// 
//     @Override
//     public String toString() {
//         return name().toLowerCase();
//     }
// }
// 
// Path: src/main/java/util/ListFilesVisitor.java
// public class ListFilesVisitor extends SimpleFileVisitor<Path> {
// 
//     private List<String> files = new ArrayList<>();
//     private Path start;
// 
//     public ListFilesVisitor(Path start) {
//         this.start = start;
//     }
// 
//     public List<String> getFiles() {
//         return files;
//     }
// 
//     @Override
//     public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
//         String str =
//             start.toAbsolutePath().relativize(file.toAbsolutePath()).toString();
//         files.add(str);
//         return FileVisitResult.CONTINUE;
//     }
// 
//     @Override
//     public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
//         return FileVisitResult.TERMINATE;
//     }
// 
// }


// Path: src/main/java/lwrt/CustomPathList.java
import lwrt.CustomPath.PathContents;
import util.ListFilesVisitor;
import javax.swing.table.AbstractTableModel;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.*;
import java.util.*;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.logging.Level;
import java.util.logging.Logger;

    public Object getValueAt(int row, int column) {
        CustomPath cp = list.get(row);
        switch (Column.values()[column]) {
            case CONTENTS:
                return simplify(cp.getContents());
            case SELECTED:
                return cp.isSelected();
            case PATH:
                return cp;
            default:
                return "";
        }
    }

    @Override
    public void setValueAt(Object value, int row, int column) {
        CustomPath cp = list.get(row);
        switch (Column.values()[column]) {
            case SELECTED:
                cp.setSelected((boolean) value);
                fireTableCellUpdated(row, column);
                return;
            default:
        }
    }

    private List<String> getContentsList(Path path) {
        if (path.toString().endsWith(".vpk")) {
            return cl.getVpkContents(cfg.getTfPath(), path);
        } else if (Files.isDirectory(path)) {
            ListFilesVisitor visitor = new ListFilesVisitor(path);