According to this 
<https://github.com/gwtproject/gwt/blob/master/user/src/com/google/gwt/resources/client/CssResource.java#L311>
 'ensureInjected' 
uses StyleInjector.injectStylesheet(String) to inject the text of the style 
into head of $doc. You would have to manually inject it (Use 
CssResource.getText()) into your iframe's head to be able to use it. 
Unfortunately StyleInjector does not permit to specify the document to 
which the style should be injected in similar manner ScriptInjector does, 
so you will have to implement it yourself based on both ScriptInjector and 
StyleInjector. After successful injection you can assign styles to elements 
from Css/Gss resources.

On Monday, January 4, 2016 at 8:31:56 PM UTC+1, confile wrote:
>
> I want to insert GWT Widgets like FlowPanel, HTMLPanel inside and iframe 
> using GWT. I find out how to insert GWT Widgets and Panels 
> programmatically into GWT. Here is how I do it:
>
>
>   public interface Resources extends ClientBundle {
>
>     @Source({Css.DEFAULT_CSS})
>     Css css();
>
>   }
>
>   public interface Css extends CssResource {
>
>     String DEFAULT_CSS = "test/client/app/start/StartView.gss";
>
>     String outerBox();
>     String iframe();
>     String test();
>
>   }
>
>   @UiField(provided = true)
>   Resources resources;
>
>   @UiField(provided = true)
>   Messages messages;
>
>   @Inject
>   public StartView(final Binder binder, Resources resources, Messages 
> messages)    
>   {
>     this.resources = resources;
>     resources.css().ensureInjected();
>     this.messages = messages;
>     initWidget(binder.createAndBindUi(this));
>
>     final IFrameElement iframe = Document.get().createIFrameElement();
>     FlowPanel innerBox = new FlowPanel() {
>        @Override
>        protected void onLoad() {
>          super.onLoad();
>
>          FlowPanel p1 = new FlowPanel();
>          p1.addStyleName(resources.css().test());
>
>          HTMLPanel panel = new HTMLPanel("Hello World!");
>          panel.setStyleName(resources.css().test());  // does not work
>          p1.add(panel);
>
>          final Document doc = iframe.getContentDocument();
>          BodyElement body = doc.getBody();
>
>          body.appendChild(p1.getElement());
>          panel.setStyleName(resources.css().test());  // does not work
>          p1.getElement().addClassName(resources.css().test()); // does not 
> work
>
>        }
>     };
>   }
>
> The former code inserts GWT Panels into an iframe. The problem is that I 
> cannot set any css style. Even if I set the style with:
>
> panel.setStyleName(resources.css().test());  // does not work
> p1.getElement().addClassName(resources.css().test()); // does not work
>
> both variants do not work. I know I can inject a general css file in the 
> head of the iframe document, but I want to use the GWT resources.
>
> *How can I set the styles using CSS/GSS Resources for the Panels inside 
> the iframe?*
>

-- 
You received this message because you are subscribed to the Google Groups "GWT 
Contributors" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-web-toolkit-contributors+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-web-toolkit-contributors/bcac2700-9a1d-41e5-9cfb-5ea4c89dfe94%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to