java - Changing tree node font color -


here problem:

i use tree render data structure , have list of objects gives information between 2 objects of tree (that not liked tree structure). want highlight 2 element of tree involved in object select in list. want change font color of tree nodes involved object select in list when select it.

i have tried several things. 2 of use valueprovider getvalue method return value css displays css text. in example changed tree tree result same. here code of solution:

submissiontree = new tree<submissionmenudata, safehtml>(submissiontreestore, new valueprovider<submissionmenudata, safehtml>() {             @override             public safehtml getvalue(submissionmenudata object) {                 if (object.isactivelink()){                     return safehtmlutils.fromtrustedstring("<span style='color:blue;'>"+object.getvalue()+"</span>");                 }else{                     return safehtmlutils.fromtrustedstring(object.getvalue());                 }             }              @override             public void setvalue(submissionmenudata object, safehtml value) {                 // ... not relevant here             }              @override             public string getpath() {                 return "value";             }         }); 

my second idea use 1 of these 2 methods neither of them worked (nothing happened actually):

view.getsubmissiontree().getview().getelement(elementtochangecolor).getstyle().setcolor("blue"); view.getsubmissiontree().getview().getelement(elementtochangecolor).addclassname("blue-font"); 

however, though not want these following method works.

view.getsubmissiontree().getview().getelement(elementtochangecolor).getstyle().setbackgroundcolor("blue"); 

a valueprovider isn't meant styling - passes value shown (or processed). if pass html element, default printed out described.

one possible solution set custom cell. change tree tree<submissionmenudata, submissionmenudata> , return object:

submissiontree = new tree<submissionmenudata, submissionmenudata>(submissiontreestore, new valueprovider<submissionmenudata, submissionmenudata>() {     @override     public submissionmenudata getvalue(submissionmenudata object) {         return object; // return object - how display handled later     }      @override     public void setvalue(submissionmenudata object, submissionmenudata value) {         // ... not relevant here     }      @override     public string getpath() {         return "value";     } }); 

now create , add cell:

submissiontree.setcell(new abstractcell<submissionmenudata>() {     @override     public void render(context context, submissionmenudata object, safehtmlbuilder safehtmlbuilder)     {         if (object.isactivelink()){             safehtmlbuilder.appendhtmlconstant("<span style='color:blue;'>"+object.getvalue()+"</span>");         else             safehtmlbuilder.appendescaped(object.getvalue());     } }); 

if can't or don't want change type of tree, can create abstractcell<safehtml> instead. need find current object evaluating context (column , index) , loading object tree store.


Comments

Popular posts from this blog

Email notification in google apps script -

c++ - Difference between pre and post decrement in recursive function argument -

javascript - IE11 incompatibility with jQuery's 'readonly'? -