From f5043ac109b73c1a01e1caa8dc7906d864ad8833 Mon Sep 17 00:00:00 2001 From: John Ahlroos Date: Wed, 10 Oct 2012 17:46:57 +0300 Subject: [PATCH] Fixed primary stylename handling in Accordion #9900 Change-Id: Iab4e8c8d0a0c98b770b7970fd1c099698e6a6531 --- .../client/ui/accordion/VAccordion.java | 34 +++++- .../accordion/AccordionPrimaryStylenames.html | 107 ++++++++++++++++++ .../accordion/AccordionPrimaryStylenames.java | 38 +++++++ 3 files changed, 176 insertions(+), 3 deletions(-) create mode 100644 uitest/src/com/vaadin/tests/components/accordion/AccordionPrimaryStylenames.html create mode 100644 uitest/src/com/vaadin/tests/components/accordion/AccordionPrimaryStylenames.java diff --git a/client/src/com/vaadin/client/ui/accordion/VAccordion.java b/client/src/com/vaadin/client/ui/accordion/VAccordion.java index e906cf3cce..0fbbcf5780 100644 --- a/client/src/com/vaadin/client/ui/accordion/VAccordion.java +++ b/client/src/com/vaadin/client/ui/accordion/VAccordion.java @@ -87,6 +87,26 @@ public class VAccordion extends VTabsheetBase { } } + @Override + public void setStylePrimaryName(String style) { + updateStyleNames(style); + } + + @Override + public void setStyleName(String style) { + updateStyleNames(style); + } + + protected void updateStyleNames(String primaryStyleName) { + super.setStyleName(primaryStyleName); + for (Widget w : getChildren()) { + if (w instanceof StackItem) { + StackItem item = (StackItem) w; + item.updateStyleNames(primaryStyleName); + } + } + } + /** * This method tries to find out if a tab has been rendered with a different * index previously. If this is the case it re-orders the children so the @@ -359,15 +379,23 @@ public class VAccordion extends VTabsheetBase { DOM.appendChild(getElement(), captionNode); DOM.appendChild(getElement(), content); - getElement().addClassName(CLASSNAME + "-item"); - captionNode.addClassName(CLASSNAME + "-item-caption"); - content.addClassName(CLASSNAME + "-item-content"); + updateStyleNames(VAccordion.this.getStylePrimaryName()); touchScrollHandler.addElement(getContainerElement()); close(); } + private void updateStyleNames(String primaryStyleName) { + content.removeClassName(getStylePrimaryName() + "-content"); + captionNode.removeClassName(getStylePrimaryName() + "-caption"); + + setStylePrimaryName(primaryStyleName + "-item"); + + captionNode.addClassName(getStylePrimaryName() + "-caption"); + content.addClassName(getStylePrimaryName() + "-content"); + } + @Override public void onBrowserEvent(Event event) { onSelectTab(this); diff --git a/uitest/src/com/vaadin/tests/components/accordion/AccordionPrimaryStylenames.html b/uitest/src/com/vaadin/tests/components/accordion/AccordionPrimaryStylenames.html new file mode 100644 index 0000000000..6f888f7467 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/accordion/AccordionPrimaryStylenames.html @@ -0,0 +1,107 @@ + + + + + + +New Test + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
New Test
open/run/com.vaadin.tests.components.accordion.AccordionPrimaryStylenames?restartApplication
assertNotCSSClassvaadin=runcomvaadintestscomponentsaccordionAccordionPrimaryStylenames::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VAccordion[0]v-accordion
assertCSSClassvaadin=runcomvaadintestscomponentsaccordionAccordionPrimaryStylenames::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VAccordion[0]my-accordion
assertCSSClassvaadin=runcomvaadintestscomponentsaccordionAccordionPrimaryStylenames::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VAccordion[0]/domChild[0]my-accordion-item
assertCSSClassvaadin=runcomvaadintestscomponentsaccordionAccordionPrimaryStylenames::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VAccordion[0]/domChild[0]my-accordion-item-first
assertCSSClassvaadin=runcomvaadintestscomponentsaccordionAccordionPrimaryStylenames::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VAccordion[0]/domChild[0]my-accordion-item-open
assertCSSClassvaadin=runcomvaadintestscomponentsaccordionAccordionPrimaryStylenames::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VAccordion[0]/domChild[0]/domChild[0]my-accordion-item-caption
assertCSSClassvaadin=runcomvaadintestscomponentsaccordionAccordionPrimaryStylenames::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VAccordion[0]/domChild[0]/domChild[1]my-accordion-item-content
assertCSSClassvaadin=runcomvaadintestscomponentsaccordionAccordionPrimaryStylenames::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VAccordion[0]/domChild[1]my-accordion-item
clickvaadin=runcomvaadintestscomponentsaccordionAccordionPrimaryStylenames::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VButton[0]/domChild[0]/domChild[0]
assertNotCSSClassvaadin=runcomvaadintestscomponentsaccordionAccordionPrimaryStylenames::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VAccordion[0]my-accordion
assertCSSClassvaadin=runcomvaadintestscomponentsaccordionAccordionPrimaryStylenames::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VAccordion[0]my-second-accordion
assertCSSClassvaadin=runcomvaadintestscomponentsaccordionAccordionPrimaryStylenames::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VAccordion[0]/domChild[0]my-second-accordion-item
assertCSSClassvaadin=runcomvaadintestscomponentsaccordionAccordionPrimaryStylenames::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VAccordion[0]/domChild[0]my-second-accordion-item-first
assertCSSClassvaadin=runcomvaadintestscomponentsaccordionAccordionPrimaryStylenames::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VAccordion[0]/domChild[0]my-second-accordion-item-open
assertCSSClassvaadin=runcomvaadintestscomponentsaccordionAccordionPrimaryStylenames::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VAccordion[0]/domChild[0]/domChild[0]my-second-accordion-item-caption
assertCSSClassvaadin=runcomvaadintestscomponentsaccordionAccordionPrimaryStylenames::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VAccordion[0]/domChild[0]/domChild[1]my-second-accordion-item-content
assertCSSClassvaadin=runcomvaadintestscomponentsaccordionAccordionPrimaryStylenames::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VAccordion[0]/domChild[1]my-second-accordion-item
+ + diff --git a/uitest/src/com/vaadin/tests/components/accordion/AccordionPrimaryStylenames.java b/uitest/src/com/vaadin/tests/components/accordion/AccordionPrimaryStylenames.java new file mode 100644 index 0000000000..bd7f047fc7 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/accordion/AccordionPrimaryStylenames.java @@ -0,0 +1,38 @@ +package com.vaadin.tests.components.accordion; + +import com.vaadin.tests.components.TestBase; +import com.vaadin.ui.Accordion; +import com.vaadin.ui.Button; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.NativeButton; + +public class AccordionPrimaryStylenames extends TestBase { + + @Override + protected void setup() { + final Accordion acc = new Accordion(); + acc.addComponent(new NativeButton("First tab")); + acc.addComponent(new NativeButton("Second tab")); + acc.setPrimaryStyleName("my-accordion"); + addComponent(acc); + + addComponent(new Button("Set primary stylename", + new Button.ClickListener() { + @Override + public void buttonClick(ClickEvent event) { + acc.setPrimaryStyleName("my-second-accordion"); + } + })); + } + + @Override + protected String getDescription() { + return "Accordion should work with primary stylenames both initially and dynamically"; + } + + @Override + protected Integer getTicketNumber() { + return 9900; + } + +} -- 2.39.5