Forum Discussion

del's avatar
del
Contributor III
7 years ago
Solved

How can I code "Execute during preview" capability in custom snap? (i.e. testing validation mode vs. run-time mode)

I have a snap, that I have developed, for which I would like to add the “Execute during preview” capability.

Can anyone provide me with java code capable of accomplishing this? I do not need the code to create the UI feature, property or variable. I just need the code to determine whether the execution process is in the validation or run-time mode.

TIA,
– Del

7 Replies

  • You’ll need to implement SuggestExecutionProvider and override the executeForSuggest method for “executing” during validation.

    Since you don’t need the “Execute during preview” property, the easiest approach will be to call the execute method within executeForSuggest as follows:

    @Override
    public void executeForSuggest() {
        execute();
    }
    
  • del's avatar
    del
    Contributor III

    Thank you very much for your lighting-speed responses @rohithmadhavan and @robin.

    I started on @rohithmadhavan’s suggestion first and the path was very educational for me as I started to implement it. However, my question was vague in detail, and a little misdirecting, so @robin’s response was the simpler solution I was looking for. I’ve developed 4 simple snaps, but none were write snaps, so that answer was not yet obvious to me.

    It’s now working like a charm, so thank you both very much!

    – Del

  • JiWon's avatar
    JiWon
    New Contributor II

    Can you please share how did you create that checkbox UI feature for a custom snap by sharing the codes?
    Thank you

    • ptaylor's avatar
      ptaylor
      Employee

      Hi JiWon,

      I’m not sure exactly what you’re asking. If you want to know how to define a checkbox property in a custom snap, you’d have code something like this in your defineProperties method:

          propertyBuilder.describe("name", "label", "description")
                  .type(SnapType.BOOLEAN)
                  .defaultValue(true)
                  .add();
      
    • del's avatar
      del
      Contributor III

      Hi @JiWon,

      The solution for me was Robin’s response above. I’ve highlighted the necessary code here (in context):