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
Post a Comment