public void propertyChange()

in src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java [841:896]


        public void propertyChange(PropertyChangeEvent arg0) {
            Thread thread =
                new Thread(
                    () -> {
                        ProgressMonitor monitor = null;

                        int index = 0;

                        try {
                            synchronized (mutex) {
                                monitor =
                                    new ProgressMonitor(
                                        null, "Switching models...",
                                        "Transferring between data structures, please wait...", 0,
                                        unfilteredList.size() + 1);
                                monitor.setMillisToDecideToPopup(250);
                                monitor.setMillisToPopup(100);
                                logger.debug(
                                    "Changing Model, isCyclic is now " + cyclic);

                                List newUnfilteredList;
                                List newFilteredList;

                                if (cyclic) {
                                    newUnfilteredList = new CyclicBufferList(cyclicBufferSize);
                                    newFilteredList = new CyclicBufferList(cyclicBufferSize);
                                } else {
                                    newUnfilteredList = new ArrayList(cyclicBufferSize);
                                    newFilteredList = new ArrayList(cyclicBufferSize);
                                }

                                int increment = 0;

                                for (Object anUnfilteredList : unfilteredList) {
                                    LoggingEventWrapper loggingEventWrapper = (LoggingEventWrapper) anUnfilteredList;
                                    newUnfilteredList.add(loggingEventWrapper);
                                    monitor.setProgress(index++);
                                }

                                unfilteredList = newUnfilteredList;
                                filteredList = newFilteredList;
                            }

                            monitor.setNote("Refiltering...");
                            reFilter();

                            monitor.setProgress(index++);
                        } finally {
                            monitor.close();
                        }

                        logger.debug("Model Change completed");
                    });
            thread.setPriority(Thread.MIN_PRIORITY + 1);
            thread.start();
        }