/// <summary> /// Nested logic for argument processing and possible UI alerts. /// </summary> private void Apply(object[] parameters) { Assert.ArgumentCondition( parameters != null && parameters.Length == 1 && parameters[0] is ClientPipelineArgs, "parameters", "//TODO"); ClientPipelineArgs args = parameters[0] as ClientPipelineArgs; // the FDA field of the item edited by the user Field field = this.Item.Fields[this.FieldID]; Assert.IsNotNull(field, "field"); FileDropAreaField fda = new FileDropAreaField( field, base.GetViewStateProperty("XmlValue", string.Empty) as string); ItemList mediaItems = fda.GetMediaItems(); if (mediaItems.Count < 1) { SheerResponse.Alert( Translate.Text("Add a media item.")); args.AbortPipeline(); return; } Item item = null; if (mediaItems.Count == 1) { item = mediaItems[0]; } else if (mediaItems.Count > 1) { ItemList selectedItems = null; try { // this may throw an exception; see 406891 selectedItems = this.GetSelectedItems(); } catch (Exception ex) { SheerResponse.Alert( Translate.Text("Select an item from the list.")); args.AbortPipeline(); return; } if (selectedItems.Count != 1) { SheerResponse.Alert( Translate.Text("Select a single item from the list.")); args.AbortPipeline(); return; } item = selectedItems[0]; } MediaItem mediaItem = new MediaItem(item); if (mediaItem.Extension != "docx") { SheerResponse.Alert(Translate.Text( "Seelect a Word document from the list.")); args.AbortPipeline(); return; } WordUtil.HandleWordDocument(this.Item, mediaItem); }