public ArrayList<DataModel> loadDataFromFolderWithWaitingDialog(final File folderURL, final String matchingInputString) throws ParserConfigurationException, IOException, SAXException {
        final ArrayList<DataModel> resultData = new ArrayList<DataModel>();

        final JDialog loading = initWaitingDialog();

        SwingWorker<String, Void> worker = new SwingWorker<String, Void>() {
            @Override
            protected String doInBackground() throws InterruptedException {
                try {
                    DataParser.getInstance().loadDataFromFolder(folderURL, matchingInputString, resultData);
                } catch (ParserConfigurationException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } catch (SAXException e) {
                    e.printStackTrace();
                }
                return "ok";
            }

            @Override
            protected void done() {
                loading.dispose();
            }
        };
        worker.execute();
        loading.setVisible(true);
        try {
            worker.get();
        } catch (Exception e1) {
            e1.printStackTrace();
        }

        if (MainFrame.DEBUG) {
            System.out.println();
            System.out.println("resultData.size(): " + resultData.size());
            for (DataModel d : resultData) {
                System.out.println("resultData content: " + d.getSessionContent());
            }
        }
        return resultData;
    }