From a7b728a1834ff5862445418b69aee2f825b0ac36 Mon Sep 17 00:00:00 2001 From: Matti Tahvonen Date: Thu, 10 Jul 2008 07:41:06 +0000 Subject: [PATCH] Test case and fix for #1924 svn changeset:5076/svn branch:trunk --- .../ITMILL/themes/tests-tickets/styles.css | 9 ++++ .../toolkit/terminal/gwt/client/ui/IView.java | 18 ++++++- .../tickets/Ticket1924ThemeChanging.java | 49 +++++++++++++++++++ src/com/itmill/toolkit/ui/Window.java | 2 + 4 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 src/com/itmill/toolkit/tests/tickets/Ticket1924ThemeChanging.java diff --git a/WebContent/ITMILL/themes/tests-tickets/styles.css b/WebContent/ITMILL/themes/tests-tickets/styles.css index 4c8ea4a202..dfc4dabf6e 100644 --- a/WebContent/ITMILL/themes/tests-tickets/styles.css +++ b/WebContent/ITMILL/themes/tests-tickets/styles.css @@ -37,3 +37,12 @@ .i-orderedlayout-red-background { background: red; } + +/*****************************************************************************/ +/* Ticket 1924 */ +/*****************************************************************************/ + +.i-label-red { + background: red; +} + \ No newline at end of file diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java index 530b2fa749..13a41fc82e 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java @@ -101,12 +101,26 @@ public class IView extends SimplePanel implements Paintable, return theme; } + /** + * Used to reload host page on theme changes. + */ + private static native void reloadHostPage() + /*-{ + $wnd.location.reload(); + }-*/; + public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { id = uidl.getId(); - // Some attributes to note - theme = uidl.getStringAttribute("theme"); + String newTheme = uidl.getStringAttribute("theme"); + if (theme != null && !newTheme.equals(theme)) { + // Complete page refresh is needed due css can affect layout + // calculations etc + reloadHostPage(); + } else { + theme = newTheme; + } if (uidl.hasAttribute("style")) { addStyleName(uidl.getStringAttribute("style")); } diff --git a/src/com/itmill/toolkit/tests/tickets/Ticket1924ThemeChanging.java b/src/com/itmill/toolkit/tests/tickets/Ticket1924ThemeChanging.java new file mode 100644 index 0000000000..33d0094fdf --- /dev/null +++ b/src/com/itmill/toolkit/tests/tickets/Ticket1924ThemeChanging.java @@ -0,0 +1,49 @@ +package com.itmill.toolkit.tests.tickets; + +import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.Label; +import com.itmill.toolkit.ui.Panel; +import com.itmill.toolkit.ui.Window; +import com.itmill.toolkit.ui.Button.ClickEvent; +import com.itmill.toolkit.ui.Button.ClickListener; + +public class Ticket1924ThemeChanging extends com.itmill.toolkit.Application { + + private Label l = new Label("Background should be red with test theme"); + + private Panel p; + + public void init() { + final Window main = new Window(getClass().getName().substring( + getClass().getName().lastIndexOf(".") + 1)); + setMainWindow(main); + + l.setStyleName("red"); + main.addComponent(l); + + Button b = new Button("Toggle tests-tickets theme"); + b.addListener(new ClickListener() { + boolean flag = false; + + public void buttonClick(ClickEvent event) { + if (flag = !flag) { + main.setTheme("tests-tickets"); + } else { + main.setTheme(null); + } + } + }); + + main.addComponent(b); + + b = new Button("Modify caption (should not reload page)"); + b.addListener(new ClickListener() { + public void buttonClick(ClickEvent event) { + main.setCaption(main.getCaption() + "."); + } + }); + + main.addComponent(b); + + } +} \ No newline at end of file diff --git a/src/com/itmill/toolkit/ui/Window.java b/src/com/itmill/toolkit/ui/Window.java index e486423b94..a69ac113ca 100644 --- a/src/com/itmill/toolkit/ui/Window.java +++ b/src/com/itmill/toolkit/ui/Window.java @@ -432,6 +432,8 @@ public class Window extends Panel implements URIHandler, ParameterHandler { * * Setting theme for subwindows is not supported. * + * In Toolkit 5 terminal will reload its host page on theme changes. + * * @param theme * the New theme for this window. Null implies the default * theme. -- 2.39.5