private JPanel getInstallationPanel(final InstallationWorker installationWorker){
        JPanel installationPanel = new JPanel();
        installationPanel.setBackground(Color.WHITE);
        final JProgressBar installationDirectoryProgress = new JProgressBar();
        // TODO: Test this width in different OS
        installationDirectoryProgress.setPreferredSize(new Dimension(400,15));
        installationDirectoryProgress.setToolTipText("Preparing for the installation...");
        installationDirectoryProgress.setStringPainted(true);
        installationDirectoryProgress.setBackground(Color.WHITE);
        userActionPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
        // Provide the installation property thread
        installationWorker.addPropertyChangeListener(new PropertyChangeListener() {
            @Override
            public void propertyChange(final PropertyChangeEvent event) {
                String propertyName = event.getPropertyName();
                if(propertyName.equalsIgnoreCase("progress")){
                    installationDirectoryProgress.setIndeterminate(false);
                    installationDirectoryProgress.setValue((Integer) event.getNewValue());
                    // Update the Tool Tip dynamically when mouse is not in motion
                    installationDirectoryProgress.setToolTipText("Progress: " + (event.getNewValue()) + "%");
                    InstallerUtils.updateToolTipMessageDynamically(installationDirectoryProgress);
                }
                else if(propertyName.equalsIgnoreCase("state")){
                    if(event.getNewValue() instanceof SwingWorker.StateValue){
                        switch ((SwingWorker.StateValue) event.getNewValue()){
                            case DONE:
                                // Hide the progress bar
                                installationDirectoryProgress.setVisible(false);
                                installationDirectoryProgress.setToolTipText(null);
                                InstallerUtils.updateToolTipMessageDynamically(installationDirectoryProgress);
                                // If the installation is
                                if(!installationWorker.isCancelled()){
                                    // At this point the installation has been complete successfully
                                    isInstallationCompleted.set(true);
                                    // Don't allow the user to go backwards but automatically go to the Complete message
                                    executeNextState();
                                }
                                break;
                            case STARTED:
                            case PENDING:
                                installationDirectoryProgress.setVisible(true);
                                installationDirectoryProgress.setIndeterminate(true);
                                break;
                        }
                    }
                }
            }
        });
        // Add panels where they belong
        backNextCancelPanel.add(installationDirectoryProgress,0);
        return installationPanel;
    }