Index: lams_central/web/lams_authoring.swf =================================================================== diff -u -r6455661a6bf20c1846409aad23339b3d6ddb0f8d -r39146ee7d65129e500c4778b5c69268a997cece9 Binary files differ Index: lams_central/web/lams_authoring_library.swf =================================================================== diff -u -r6455661a6bf20c1846409aad23339b3d6ddb0f8d -r39146ee7d65129e500c4778b5c69268a997cece9 Binary files differ Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/GroupNamingDialog.as =================================================================== diff -u -r44a0a4048deca3f15c684e59635dbfaccf085822 -r39146ee7d65129e500c4778b5c69268a997cece9 --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/GroupNamingDialog.as (.../GroupNamingDialog.as) (revision 44a0a4048deca3f15c684e59635dbfaccf085822) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/GroupNamingDialog.as (.../GroupNamingDialog.as) (revision 39146ee7d65129e500c4778b5c69268a997cece9) @@ -50,6 +50,7 @@ private var _groups:Array; private var _grouping:Grouping; private var _changedGroups:Hashtable; + private var selectedGroup:Group; private var close_btn:Button; // Close button @@ -151,14 +152,57 @@ public function itemEdited(evt:Object):Void { var group = _group_naming_dgd.getItemAt(evt.itemIndex); - _changedGroups.put(group.groupUIID, group); + var nameIsValid:Boolean = false; - Debugger.log("item changed: " + group.groupUIID, Debugger.CRITICAL, "itemChanged", "GroupNamingDialog"); + if (group.groupName != selectedGroup.groupName) { + nameIsValid = areGroupNamesValid(true); + } + + if (nameIsValid) { + _changedGroups.put(group.groupUIID, group); + } else { + _group_naming_dgd.replaceItemAt(evt.itemIndex, selectedGroup); + _changedGroups.put(selectedGroup.groupUIID, selectedGroup); //restore value + } } + public function areGroupNamesValid(showMessages:Boolean):Boolean { + + for (var i=0; i<_group_naming_dgd.length; i++) { + var numGroupsWithThatName:Number = 0; + + // remove spaces from groupName and return it as a new String leaving groupName unchanged + var tmpString:String = StringUtils.replace(_group_naming_dgd.getItemAt(i).groupName, " ", ""); + + if (tmpString == "" || tmpString == null || tmpString == undefined) { + if (showMessages) { + LFMessage.showMessageAlert(Dictionary.getValue("al_group_name_invalid_blank"), null); + } + return false; + } + + for (var j=0; j<_group_naming_dgd.length; j++) { + + if (_group_naming_dgd.getItemAt(j).groupName == _group_naming_dgd.getItemAt(i).groupName) { + + numGroupsWithThatName++; + if (numGroupsWithThatName > 1) { + if (showMessages) { + LFMessage.showMessageAlert(Dictionary.getValue("al_group_name_invalid_existing"), null); + } + return false; + } + } + } + } + + return true; + } + public function itemSelected(evt:Object):Void { // TODO: Highlight the text to be changed var item = _group_naming_dgd.getItemAt(evt.itemIndex); + selectedGroup = new Group(item.parentID, item.groupID, item.groupUIID, item.groupName, item.orderID); // backup selected grouping object Debugger.log("current selection: " + Selection.getFocus(), Debugger.CRITICAL, "itemSelected", "GroupNamingDialog"); } @@ -199,14 +243,18 @@ * Called by the OK button */ private function close(){ - _grouping.updateGroups(_changedGroups.values()); - _container.deletePopUp(); + + if (areGroupNamesValid(false)) { + _grouping.updateGroups(_changedGroups.values()); + _container.deletePopUp(); + } } /** * Event dispatched by parent container when close button clicked */ - public function click(e:Object):Void{ + public function click(e:Object):Void{ + _grouping.updateGroups(_changedGroups.values()); e.target.deletePopUp(); }