[kepler-dev] How actors are rendered red when exceptions occur?

Christopher Brooks cxh at eecs.berkeley.edu
Wed Nov 5 09:37:46 PST 2014


Hi,

Long story, but the short summary is that a change request is created 
that adds

<property name="_highlightColor" 
class="ptolemy.actor.gui.ColorAttribute" value="{1.0,0.0,0.0,1.0}">
</property>

to model in a non-persistent manner.

Try searching for _hightlightColor in the kepler/ptolemy directory.


ptolemy/vergil/basic/BasicGraphController.java has this method, which is 
probably what does the highlighting:
>     /** Highlight the specified object and all its containers to
>      *  indicate that it is the source of an error.
>      *  @param culprit The culprit.
>      */
>     public void highlightError(final Nameable culprit) {
>         if (culprit instanceof NamedObj) {
>             ChangeRequest request = new ChangeRequest(this, "Error 
> Highlighter") {
>                 @Override
>                 protected void _execute() throws Exception {
>                     _addErrorHighlightIfNeeded(culprit);
>                     NamedObj container = culprit.getContainer();
>                     while (container != null) {
>                         _addErrorHighlightIfNeeded(container);
>                         container = container.getContainer();
>                     }
>                 }
>             };
>             request.setPersistent(false);
>             ((NamedObj) culprit).requestChange(request);
>         }
>     }

The above method creates a change request and executes it.  The body of 
the change request invokes this method:

>     /** Add an error highlight color to the specified culprit if it is
>      *  not already present.
>      *  @param culprit The culprit to highlight.
>      *  @exception IllegalActionException If the highlight cannot be 
> added.
>      *  @exception NameDuplicationException Should not be thrown.
>      */
>     private void _addErrorHighlightIfNeeded(Nameable culprit)
>             throws IllegalActionException, NameDuplicationException {
>         Attribute highlightColor = ((NamedObj) culprit)
>                 .getAttribute("_highlightColor");
>         if (highlightColor == null) {
>             highlightColor = new ColorAttribute((NamedObj) culprit,
>                     "_highlightColor");
>             ((ColorAttribute) highlightColor)
>             .setExpression("{1.0, 0.0, 0.0, 1.0}");
>             highlightColor.setPersistent(false);
>             ((ColorAttribute) 
> highlightColor).setVisibility(Settable.EXPERT);
>             _errorHighlights.add(highlightColor);
>         }
>     }
>

See also ptolemy/vergil/basic/DependencyHighlighter.java for code that 
does highlighting.

_Christopher


On 11/5/14 12:30 AM, 陈军 wrote:
> Hi,
>
> I want to mark actors with custom colours.
>
> Entities in a workflow will be encircled with red colour when errors 
> occur.
> So I construct a bad workflow and run in debug mode trying to see how 
> actors are rendered red. But I  still can not figure out it.
>
> Can anyone give some advice?
> Thanks
>
> -- 
> 陈军
> School of Computer Science , Fudan University
>
>
> _______________________________________________
> Kepler-dev mailing list
> Kepler-dev at kepler-project.org
> http://lists.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-dev


-- 
Christopher Brooks, PMP                       University of California
Academic Program Manager & Software Engineer  US Mail: 337 Cory Hall
CHESS/iCyPhy/Ptolemy/TerraSwarm               Berkeley, CA 94720-1774
cxh at eecs.berkeley.edu, 707.332.0670           (Office: 545Q Cory)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.nceas.ucsb.edu/kepler/pipermail/kepler-dev/attachments/20141105/5f00af45/attachment.html>


More information about the Kepler-dev mailing list