void OnGUI()
                {
                    EditorGUILayout.BeginVertical();
                    {
                        //Tool bar
                        EditorGUILayout.BeginHorizontal(EditorStyles.toolbar);
                        {
                            GUILayout.Button(" " + _key + " ", _keyStyle);

                            EditorGUILayout.Separator();

                            EditorGUI.BeginChangeCheck();
                            SystemLanguage language = (SystemLanguage)EditorGUILayout.EnumPopup(_language, EditorStyles.toolbarPopup);
                            if (EditorGUI.EndChangeCheck())
                            {
                                if (_hasChanges)
                                {
                                    if (EditorUtility.DisplayDialog("Localisation String Has Been Modified", "Do you want to save the changes you made to the string?\nYour changes will be lost if you don't save them.", "Save", "Don't Save"))
                                    {
                                        Localisation.Set(_key, _language, _text);
                                    }
                                }

                                _language   = language;
                                _text       = Localisation.GetRawString(_key, _language);
                                _hasChanges = false;
                            }

                            EditorGUI.BeginChangeCheck();
                            _richText = GUILayout.Toggle(_richText, "Show Rich Text", EditorStyles.toolbarButton);
                            if (EditorGUI.EndChangeCheck())
                            {
                                _textStyle.richText = _richText;
                            }

                            GUILayout.FlexibleSpace();
                        }
                        EditorGUILayout.EndHorizontal();

                        //Text scaling
                        EditorGUILayout.BeginHorizontal(EditorStyles.toolbar);
                        {
                            GUILayout.Button("Scale", EditorStyles.toolbarButton);

                            int fontSize = EditorGUILayout.IntSlider(_parent.GetEditorPrefs()._editorFontSize, LocalisationEditorWindow.kMinFontSize, LocalisationEditorWindow.kMaxFontSize);

                            if (GUILayout.Button("Reset Scale", EditorStyles.toolbarButton))
                            {
                                fontSize = LocalisationEditorWindow.kDefaultFontSize;
                            }

                            if (_parent.GetEditorPrefs()._editorFontSize != fontSize)
                            {
                                _parent.GetEditorPrefs()._editorFontSize = fontSize;
                                _textStyle.fontSize = fontSize;
                                _parent.SaveEditorPrefs();
                            }

                            GUILayout.FlexibleSpace();
                        }
                        EditorGUILayout.EndHorizontal();

                        //Text
                        _scrollPosition = EditorGUILayout.BeginScrollView(_scrollPosition, false, false);
                        {
                            float textHeight = _textStyle.CalcHeight(new GUIContent(_text), this.position.width);

                            EditorGUI.BeginChangeCheck();
                            string text = EditorGUILayout.TextArea(_text, _textStyle, GUILayout.Height(textHeight));
                            if (EditorGUI.EndChangeCheck())
                            {
                                Undo.RecordObject(this, "Changed Text");
                                _text       = text;
                                _hasChanges = true;
                            }
                        }
                        EditorGUILayout.EndScrollView();

                        //Bottom bar
                        EditorGUILayout.BeginHorizontal(EditorStyles.toolbar);
                        {
                            GUILayout.FlexibleSpace();

                            if (GUILayout.Button("Save", EditorStyles.miniButton))
                            {
                                Localisation.Set(_key, _language, _text);
                                _hasChanges = false;
                                Close();
                            }

                            if (GUILayout.Button("Cancel", EditorStyles.miniButton))
                            {
                                _hasChanges = false;
                                Close();
                            }

                            GUILayout.FlexibleSpace();
                        }
                        EditorGUILayout.EndHorizontal();
                    }
                    EditorGUILayout.EndVertical();
                }