[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