Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

use uibinder css in java rather than xml

Tags:

java

gwt

uibinder

in my ui.xml, i have style like below

<ui:style src="../teststyle.css" />

if i want to programmatically use the style inside java file rather than ui.xml, in my widget how to call .setStyleName(..) as the css is obfuscated

like image 693
cometta Avatar asked Dec 03 '22 10:12

cometta


2 Answers

You need to do the following steps to use the styles in your view class:

  • Define a interface that extends CssResource in your view class
interface Style extends CssResource {

    String myStyle();

}
  • Add a ui field of that type you just defined in your view class
@UiField
Style style;
  • In your ui.xml add the type attribute to your <ui:style> element (the type must match the interface of step 1):
<ui:style type="com.example.MyView.Style">
  • For each of the css classes you want to access in your view class you need to add a method to the Style interface (as done with myStyle())

  • You can now access the style via the style field (style.myStyle())

Hope that helps.

like image 71
z00bs Avatar answered Dec 21 '22 20:12

z00bs


if i understand your question correct you have to define a class which extends from CssResource (you probably have done that already). In your view you can have a static instance of this class (let's call it cssInstance). In the constructor you have to call cssInstance.ensureInjected(). If you now want to add or set a style you can do it easly like Example: anyWidget.addStyleName(cssInstance.styleBorder());

like image 21
kukudas Avatar answered Dec 21 '22 20:12

kukudas