private void actionCompare() {
        new Thread() {

            @Override
            public void run() {
                CompareTabChooser chooser = new CompareTabChooser(AdminViewFrame.this);

                int result = JOptionPane.showConfirmDialog(getFrame(), chooser, "Compare Managers", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null);

                if (result == JOptionPane.CANCEL_OPTION) {
                    return;
                }
                if (chooser.getSelectionMode().equals(ManagerAdapter.PROCEDURE_MANAGER_TYPE)) {
                    JOptionPane.showMessageDialog(AdminViewFrame.this, "The ability to compare procedures has not yet been implemented.", "Unsupport Feature", JOptionPane.ERROR_MESSAGE);
                    return;
                }

                if ((chooser.getSelectedFiles()[0] == null) || (chooser.getSelectedFiles()[1] == null)) {
                    JOptionPane.showMessageDialog(AdminViewFrame.this, "You need to select 1st and 2nd file.", "Selection Error", JOptionPane.ERROR_MESSAGE);
                    return;
                }

                if (chooser.getSelectionMode().equals(ManagerAdapter.ACCESS_MANAGER_TYPE)) {
                    File files[] = chooser.getSelectedFiles();
                    AccessManager[] am = new AccessManager[files.length];
                    for (int k = 0; k < files.length; k++) {
                        am[k] = new AccessManager(AdminViewFrame.this);

                        try {
                            am[k].readFile(files[k]);
                        } catch (Exception ex) {
                            JOptionPane.showMessageDialog(AdminViewFrame.this,
                                    "Corrupted File: " + files[k].getName() + "\n " + ex.getMessage(),
                                    "Ruletree File Error",
                                    JOptionPane.ERROR_MESSAGE);
                            System.gc();
                            return;
                        }

                        if (!am[k].isValid()) {
                            JOptionPane.showMessageDialog(AdminViewFrame.this,
                                    "No rule tree found in file " + files[k].getName(),
                                    "Ruletree File Error",
                                    JOptionPane.ERROR_MESSAGE);
                            System.gc();
                            return;
                        }
                    }

                    CompareAccessManager cam = new CompareAccessManager(am);

                    if (!cam.isValid()) {
                        JOptionPane.showMessageDialog(AdminViewFrame.this,
                                "Incompatible Comparison" + cam.getAccessManagers()[0].getFile().getName() + "::" + cam.getAccessManagers()[1].getFile().getName(),
                                "Comparison Error",
                                JOptionPane.ERROR_MESSAGE);
                        System.gc();
                        return;
                    }
                    CompareAccessManagerComponent camComponent = new CompareAccessManagerComponent(AdminViewFrame.this, cam);
                    addTabbedPane(camComponent);

                }
            }
        }.start();
    }