@Override
	public void run() {
	
		guiBuild = new GUIBuild(building,animationBoost);
		guiBuild.setPreferredSize(new Dimension(imgWidth,imgHeight * (storiesNumber)));
		
		Thread thread = new Thread(guiBuild);
		
		baseFrame = new JFrame("Elevator");
		BorderLayout layout = new BorderLayout();
		
		baseFrame.setLayout(layout);
		baseFrame.setBounds(300, 50, imgWidth, imgHeight * 4);
		baseFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		buildPanel = new JPanel();
		buildPanel.add(guiBuild);
		
		buttonPanel =  new JPanel(); 
		buttonPanel.setPreferredSize(new Dimension(835,50));
		
		getAbort().setVisible(false);
		getView().setVisible(false);		
		
		buttonPanel.add(start);
		buttonPanel.add(getAbort());
		buttonPanel.add(getView());
		
		textPanel = new JPanel();
		textPanel.setPreferredSize(new Dimension(835,50));
		
		area = new JTextArea(4,1);
		area.setPreferredSize(new Dimension(750,50));
		area.setBorder(BorderFactory.createLineBorder(Color.BLACK));
		area.setEditable(false);
		textPanel.add(area);
		
		jsp = new JScrollPane(buildPanel);
		jsp.setPreferredSize(new Dimension(imgWidth, imgHeight * 3 + 25));
		jsp.setVisible(true);
		
		baseFrame.add(buttonPanel, BorderLayout.SOUTH);
		baseFrame.add(textPanel, BorderLayout.CENTER);
		baseFrame.add(jsp, BorderLayout.NORTH);			
				
		thread.start();
		
		if (animationBoost > 0) {
			baseFrame.setVisible(true);
		}
		
		while (!thread.getState().equals(Thread.State.TERMINATED)) {
			
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				logger.error(Thread.currentThread().getName() + Constants.THREAD_ERROR + e.getMessage());
			}
		}
		
		start.addActionListener(new ActionListener() {
					
			@Override
			public void actionPerformed(ActionEvent e) {
				
				start.setVisible(false);
				getAbort().setVisible(true);
				guiBuild.getTimer().start();
				setStartState(true);
			}
		});
		
		
		getAbort().addActionListener( new ActionListener() {
			
			@Override
			 public void actionPerformed(ActionEvent e) {
				
				getAbort().setVisible(false);
				getView().setVisible(true);
				guiBuild.getTimer().stop();
				isAborted = true;
			}
		});
		
		getView().addActionListener( new ActionListener() {
			
			@Override
			 public void actionPerformed(ActionEvent e) {
				
				logFrame = new JFrame(TITLE_LOG_FRAME);
				JTextArea jta;
			    JScrollPane jsp ;
			    Scanner sc = null;
			    StringBuffer sb = new StringBuffer();
				try {
					
					sc = new Scanner(new FileReader(FILE_PATH));
					
					while (sc.hasNextLine()) {
						 sb.append(sc.nextLine());
						 sb.append(NEW_LINE);
					}
					
				} catch (FileNotFoundException exc) { 
					
					JFrame errorFarame = new JFrame();
                	JOptionPane.showMessageDialog(errorFarame, ERROR_FILE_NOT_FOUND,
                							      ERROR, JOptionPane.ERROR_MESSAGE);
                	errorFarame.setVisible(true);
				}  
	
				if (sc != null) {
					try {
						sc.close();
					} catch (IllegalStateException exp) {
						logger.error(ERROR_CLOSE_SCANNER + exp.getMessage());
					}
				}
				
			    jta = new JTextArea(sb.toString());
				jsp = new JScrollPane(jta);
				 
				logFrame.add(jsp);
				logFrame.setBounds(300, 50, 500, 800);
				logFrame.setVisible(true);
			
			}
		});
	}