// Gets a stateId but... if the shape doesn't have one, it will return // an automatically generated one internal string GetStateId() { string stateId = Common.GetCellString(shape, ShapeProperties.StateId); if (stateId.Length == 0) { stateId = BuildStateIdForStorage(StatePrefixAndNumberManager.GetCurrentStateIdPrefix(), StatePrefixAndNumberManager.GetNextAvailableNumber(), String.Empty); } return(stateId); }
public override void OnShapeExitTextEdit() { base.OnShapeExitTextEdit(); string prefix, number, name, errorMessage; string newName = StateIdForDisplay(shape.Text); DisectStateIdIntoParts(newName, out prefix, out number, out name); // always use uppercase prefixes prefix = prefix.ToUpper(); // They can enter anything in the shape text - here we make sure it's a good stateid // and, if not, we make it one. if (!ValidateStateIdTextBoxStrings(prefix, number, name, out errorMessage)) { if (GetStateId().Length > 0) { string oldPrefix, oldNumber, oldName; DisectStateIdIntoParts(GetStateId(), out oldPrefix, out oldNumber, out oldName); newName = oldPrefix.ToUpper() + oldNumber + Strings.StateIdWordDisplayDelimiter + newName; } else { newName = StatePrefixAndNumberManager.GetCurrentStateIdPrefix() + StatePrefixAndNumberManager.GetNextAvailableNumber() + Strings.StateIdWordDisplayDelimiter + newName; } } else { // make sure we pick up the uppercase prefix newName = prefix + number + Strings.StateIdWordDisplayDelimiter + name; } string oldStateId = GetStateId(); string newStateId = StateIdForStorage(newName); SetStateId(newStateId); StartShadow shadowStart = PathMaker.LookupStartShadow(); if (shadowStart != null && !oldStateId.Equals(newStateId)) { string promptIdFormat = shadowStart.GetDefaultSetting(Strings.DefaultSettingsPromptIDFormat); if (promptIdFormat.Equals(Strings.PromptIdFormatFull) || promptIdFormat.Equals(Strings.PromptIdFormatPartial)) { RedoPromptIds(0, promptIdFormat); } } }