public static void Initialize() { // Initial whole fields in window. _symbolName = string.Empty; _symbolAbbreviation = string.Empty; _symbolDescription = string.Empty; _symbolOutlineColor = Color.black; _symbolFilledColor = Color.white; _symbolTextColor = Color.black; _symbolTerminal = NodeTerminalType.Terminal; // Set the first values. _currentTab = AlphabetWindowTab.Nodes; _isInitTabButton = true; _editingMode = EditingMode.None; _scrollPosition = Vector2.zero; _messageHint = string.Empty; _messageType = MessageType.Info; _node = new GraphGrammarNode(NodeTerminalType.Terminal); _connection = new GraphGrammarConnection(); _symbolListCanvas = new Rect(0, 0, Screen.width, Screen.height); _symbolListCanvasInWindow = _symbolListCanvas; _symbolListArea = new Rect(0, 0, Screen.width, Screen.height); _centerPosition = new Vector2(Screen.width / 2, 75); _connectionType = ConnectionType.WeakRequirement; _connectionArrowType = ConnectionArrowType.Normal; // Revoke all. Alphabet.RevokeAllSelected(); }
// Content of submition. void LayoutSubmitionButton() { // When click apply button. switch (_editingMode) { case EditingMode.Create: GUI.enabled = (_messageType != MessageType.Error && _messageType != MessageType.Warning); if (GUILayout.Button(Languages.GetText("MissionAlphabet-AddSymbol"), SampleStyle.GetButtonStyle(SampleStyle.ButtonType.Regular, SampleStyle.ButtonColor.Green), SampleStyle.SubmitButtonHeight)) { // When click the button, revoke all selected symbols and add the symbon in list. switch (_currentTab) { case AlphabetWindowTab.Nodes: Alphabet.RevokeAllSelected(); Alphabet.AddNode(new GraphGrammarNode(_node)); Alphabet.Nodes.Last().Selected = true; break; case AlphabetWindowTab.Connections: Alphabet.RevokeAllSelected(); Alphabet.AddConnection(new GraphGrammarConnection(_connection)); Alphabet.Connections.Last().Selected = true; break; } // Make the scroll position in list to bottom, and switch to modify mode. _scrollPosition.y = Mathf.Infinity; _editingMode = EditingMode.Modify; // Unfocus from the field. GUI.FocusControl("FocusToNothing"); } GUI.enabled = true; break; case EditingMode.Modify: GUI.enabled = (_messageType != MessageType.Error && _messageType != MessageType.Warning); if (GUILayout.Button(Languages.GetText("MissionAlphabet-UpdateChanges"), SampleStyle.GetButtonStyle(SampleStyle.ButtonType.Regular, SampleStyle.ButtonColor.Green), SampleStyle.SubmitButtonHeight)) { // When click the button, update the symbol informations. switch (_currentTab) { case AlphabetWindowTab.Nodes: // Update in alphabet and mission grammar. UpdateNode(Alphabet.SelectedNode); MissionGrammar.OnAlphabetUpdated(Alphabet.SelectedNode); break; case AlphabetWindowTab.Connections: // Update in alphabet and mission grammar. UpdateConnection(Alphabet.SelectedConnection); MissionGrammar.OnAlphabetUpdated(Alphabet.SelectedConnection); break; } // Unfocus from the field. GUI.FocusControl("FocusToNothing"); } GUI.enabled = true; break; } }
// Buttons about adding new symbol, modifying and deleting. void LayoutEditingModeButtonGroup() { EditorGUILayout.BeginHorizontal(); if (GUILayout.Button(Languages.GetText("MissionAlphabet-AddNew"), SampleStyle.GetButtonStyle(SampleStyle.ButtonType.Left, SampleStyle.ButtonColor.Blue), SampleStyle.ButtonHeight)) { // Switch the mode. _editingMode = EditingMode.Create; // Initial the preview node and connection. _node = new GraphGrammarNode(); _connection = new GraphGrammarConnection(); // Initial all fields and repaint. Alphabet.RevokeAllSelected(); InitFields(); Repaint(); } switch (_currentTab) { case AlphabetWindowTab.Nodes: EditorGUI.BeginDisabledGroup(Alphabet.SelectedNode == null || Alphabet.IsAnyNode(Alphabet.SelectedNode.AlphabetID)); break; case AlphabetWindowTab.Connections: EditorGUI.BeginDisabledGroup(Alphabet.SelectedConnection == null); break; } if (GUILayout.Button(Languages.GetText("MissionAlphabet-Modify"), SampleStyle.GetButtonStyle(SampleStyle.ButtonType.Mid, SampleStyle.ButtonColor.Blue), SampleStyle.ButtonHeight)) { // Switch the mode. _editingMode = EditingMode.Modify; } if (GUILayout.Button(Languages.GetText("MissionAlphabet-Delete"), SampleStyle.GetButtonStyle(SampleStyle.ButtonType.Right, SampleStyle.ButtonColor.Blue), SampleStyle.ButtonHeight)) { // Switch the mode. _editingMode = EditingMode.Delete; // Remove the node or connection from alphabet and repaint. switch (_currentTab) { case AlphabetWindowTab.Nodes: Alphabet.RemoveNode(Alphabet.SelectedNode); break; case AlphabetWindowTab.Connections: Alphabet.RemoveConnection(Alphabet.SelectedConnection); break; } Repaint(); } EditorGUI.EndDisabledGroup(); EditorGUILayout.EndHorizontal(); }
// [TODO] Temporary. The click event listener for list canvas. void OnClickedElementInList(float y) { if (y > 0 && y < SymbolList.Height) { // [TODO] This is temporary to assign value, will promote it soon. int index = (int)(y + _scrollPosition.y) / 50; Alphabet.RevokeAllSelected(); switch (_currentTab) { case AlphabetWindowTab.Nodes: if (index < Alphabet.Nodes.Count) { Alphabet.Nodes[index].Selected = true; UpdateFields(Alphabet.Nodes[index]); } else { // Initial the fields. InitFields(); } break; case AlphabetWindowTab.Connections: if (index < Alphabet.Connections.Count) { Alphabet.Connections[index].Selected = true; UpdateFields(Alphabet.Connections[index]); } else { // Initial the fields. InitFields(); } break; } // Switch to the normal mode. _editingMode = EditingMode.None; } }