@Override
	public void propertyChange(final PropertyChangeEvent evt) {
		// If text file was changed we need its name with an asterisk sign
		if (evt.getPropertyName().equals("changed")) {
			this.setTitleAt(TabbedPane.this.getSelectedIndex(), CurrentlyOpenTextFile.getInstance()
				.getCurrentlyOpenTextFile().getSimpeTitle());
		}
		// When we revert text file state, the text which this file contains was
		// changed as well and this file is shown at the tabbed pane, to update text
		// content shown at the tabbed pane we have to:
		// 1) Find the tab which shows the reverted text file
		// 2) Remove this tab
		// 3) Create a new tab and insert it to the particular place
		else if (evt.getPropertyName().equals("text") && !this.textModificationIgnored
							&& ((TextFile) evt.getSource()).isOpened()) {
			int tabIndex = -1;
			// First we are looking for the tab index
			final Iterator<Entry<Integer, TextFile>> tabFileMapIterator = this.tabFileMap.entrySet().iterator();
			while ((tabIndex == -1) && tabFileMapIterator.hasNext()) {
				final Entry<Integer, TextFile> entry = tabFileMapIterator.next();
				if (entry.getValue().equals(evt.getSource())) {
					tabIndex = entry.getKey().intValue();
				}
			}
			// If we found tab which presents reverted text file
			if (tabIndex != -1) {
				// We have to ignore tab selection listener execution
				this.ignoreTabSelection = true;
				// We remove tab with particular index and create a new one
				this.removeTabAt(tabIndex);
				final JScrollPane preparedJScrollPane = this.prepareNewTab((TextFile) evt.getSource());
				this.insertTab(((TextFile) evt.getSource()).getName(), null, preparedJScrollPane, null, tabIndex);
				// If reverted file is selected and open at the tabbed pane at the
				// moment we have to switch to this tab
				final boolean isRevertedTextFileOpen =
					CurrentlyOpenTextFile.getInstance().getCurrentlyOpenTextFile().equals(evt.getSource());
				if (isRevertedTextFileOpen) {
					this.setSelectedIndex(tabIndex);
				}
				this.ignoreTabSelection = false;
			}
		}
	}