public void parseFilesList(PacketFilesList p) {
        this.numFilesToSync = 0;
        this.pbSync.setValue(0);

        DefaultTableModel model = (DefaultTableModel) tblSync.getModel();
        int rows = model.getRowCount();
        for (int i = rows - 1; i >= 0; i--) {
            model.removeRow(i);
        }

        boolean needToBeSync = false;

        for (String s : p.files) {
            String[] args = s.split(":");

            if (isFileNeedToSync(args[0], args[1])) {
                needToBeSync = true;
                this.numFilesToSync++;
                this.pbSync.setMaximum(this.numFilesToSync);

                // Make nonexistent dirs first
                String pathToFile = ConfigManager.getInstance().pathToJar + args[0];

                File f = new File(pathToFile);
                File pf = f.getParentFile();

                if (pf != null && !pf.exists()) {
                    pf.mkdirs();
                }

                // Create worker to download
                ((DefaultTableModel) tblSync.getModel()).addRow(new Object[]{args[0], "-", new JProgressBar()});
                DownloadFileSyncWorker wsi = new DownloadFileSyncWorker(this, f.getPath(), args[0], tblSync.getModel().getRowCount() - 1);
                wsi.execute();
            }
        }

        if (!needToBeSync) {
            this.syncState = SyncState.COMPLETE;
        }
    }