4 Replies Latest reply: Mar 13, 2012 6:27 AM by casper_no RSS

    Remove userStyle entry without ApplyElementUserStyleOperation?

    casper_no Community Member

      ApplyElementUserStyleOperation is deprecated with TLF 2.0. But I can't find a way to remove a userStyle without it. If I try to use ApplyFormatToElement with a TextLayoutFormat, it won't clear userStyles set to "undefined", just as it won't clear other styles.

       

      Any suggestions? My code is working now using ApplyElementUserStyleOperation, but it always feels wrong to use deprecated methods.

        • 1. Re: Remove userStyle entry without ApplyElementUserStyleOperation?
          Jin-Huang Adobe Employee

          Use “delete” to undefine a property

          if (val === undefined) delete _styles[val];

          • 2. Re: Remove userStyle entry without ApplyElementUserStyleOperation?
            casper_no Community Member

            Good point, I've tried that and it works. But in this case I need to keep the undo-stack intact, and manipulating properties directly reset it. Is there any way of clearing user styles through the EditManager?

            • 3. Re: Remove userStyle entry without ApplyElementUserStyleOperation?
              Jin-Huang Adobe Employee

              ClearFormatOnElementOperation or ClearFormatOperation

              • 4. Re: Remove userStyle entry without ApplyElementUserStyleOperation?
                casper_no Community Member

                No, that doesn't work. Or at least, ClearFormatOnElementOperation doesn't work for clearing userStyles.

                 

                The below method in ClearFormatOnElementOperation does the job. The problem is that TextLayoutFormat.description object which it iterates on does not contain userStyles as far as I can see.

                 

                 

                public override function doOperation():Boolean

                                    {

                                              var targetElement:FlowElement = getTargetElement();

                 

                                              adjustForDoOperation(targetElement);

                 

                                              _undoStyles = new TextLayoutFormat(targetElement.format);

                 

                                              if (_format)

                                              {

                                                        var newFormat:TextLayoutFormat = new TextLayoutFormat(targetElement.format);

                  // this is fairly rare so this operation is not optimizied

                                                        for (var prop:String in TextLayoutFormat.description)

                                                        {

                                                                  if (_format[prop] !== undefined)

                                                                            newFormat[prop] = undefined;

                                                        }

                                                        targetElement.format = newFormat;

                                              }

                 

                  return true;

                                    }