From 72cf6aaf06df13e87eb5e154f8082a7e4e28b038 Mon Sep 17 00:00:00 2001 From: Jouni Koivuviita Date: Tue, 25 Sep 2007 06:45:47 +0000 Subject: [PATCH] -New ITabsheet implementation using GWT TabBar and own custom DeckPanel (ITabsheetPanel). -New theme (candidate 0.3) implementation started. -CSS classname conventions forced on several client side components. svn changeset:2371/svn branch:trunk --- .../toolkit/terminal/gwt/client/Caption.java | 4 +- .../terminal/gwt/client/CaptionWrapper.java | 3 +- .../client/ui/HorizontalSplitPanelImages.java | 15 + .../terminal/gwt/client/ui/ICheckBox.java | 3 + .../terminal/gwt/client/ui/IFilterSelect.java | 3 +- .../terminal/gwt/client/ui/ILabel.java | 1 + .../terminal/gwt/client/ui/IOptionGroup.java | 3 +- .../terminal/gwt/client/ui/IPanel.java | 7 +- .../terminal/gwt/client/ui/ISlider.java | 2 +- .../terminal/gwt/client/ui/ISplitPanel.java | 22 +- .../terminal/gwt/client/ui/ITabsheet.java | 142 ++++---- .../gwt/client/ui/ITabsheetPanel.java | 102 ++++++ .../client/ui/VerticalSplitPanelImages.java | 15 + .../default/button/{css => }/button.css | 0 .../default/caption/{css => }/caption.css | 0 .../gwt/public/default/common/common.css | 34 ++ .../gwt/public/default/common/css/common.css | 33 -- .../gwt/public/default/common/img/blank.png | Bin 0 -> 153 bytes .../public/default/common/img/shadow-em.png | Bin 152 -> 0 bytes .../gwt/public/default/common/img/shadow.png | Bin 138 -> 0 bytes .../public/default/common/img/window-bg.png | Bin 470 -> 0 bytes .../default/common/img/window-bottom-bg.gif | Bin 19540 -> 0 bytes .../default/datefield/{css => }/datefield.css | 0 .../gwt/public/default/panel/css/panel.css | 306 ------------------ .../gwt/public/default/panel/img/bg-em.gif | Bin 169 -> 0 bytes .../gwt/public/default/panel/img/bg-light.png | Bin 167 -> 0 bytes .../default/panel/img/bottom-left-em.gif | Bin 65 -> 0 bytes .../default/panel/img/bottom-left-light.png | Bin 147 -> 0 bytes .../public/default/panel/img/bottom-left.png | Bin 147 -> 239 bytes .../default/panel/img/bottom-right-em.gif | Bin 344 -> 0 bytes .../default/panel/img/bottom-right-light.png | Bin 147 -> 0 bytes .../public/default/panel/img/bottom-right.png | Bin 147 -> 368 bytes .../public/default/panel/img/top-bg-em.gif | Bin 149 -> 0 bytes .../default/panel/img/top-bg-highlight.png | Bin 201 -> 0 bytes .../public/default/panel/img/top-bg-light.png | Bin 157 -> 0 bytes .../default/panel/img/top-bg-strong.png | Bin 244 -> 0 bytes .../gwt/public/default/panel/img/top-bg.png | Bin 240 -> 0 bytes .../public/default/panel/img/top-left-em.gif | Bin 50 -> 0 bytes .../default/panel/img/top-left-highlight.png | Bin 248 -> 0 bytes .../default/panel/img/top-left-light.png | Bin 147 -> 0 bytes .../default/panel/img/top-left-small.png | Bin 147 -> 0 bytes .../default/panel/img/top-left-strong.png | Bin 296 -> 0 bytes .../gwt/public/default/panel/img/top-left.png | Bin 264 -> 261 bytes .../public/default/panel/img/top-right-em.gif | Bin 50 -> 0 bytes .../default/panel/img/top-right-highlight.png | Bin 249 -> 0 bytes .../default/panel/img/top-right-light.png | Bin 147 -> 0 bytes .../default/panel/img/top-right-small.png | Bin 147 -> 0 bytes .../default/panel/img/top-right-strong.png | Bin 296 -> 0 bytes .../public/default/panel/img/top-right.png | Bin 264 -> 400 bytes .../gwt/public/default/panel/panel.css | 166 ++++++++++ .../css => select}/filterselect.css | 2 +- .../default/select/{css => }/select.css | 0 .../default/slider/{css => }/slider.css | 0 .../default/splitpanel/css/splitpanel.css | 4 - .../public/default/splitpanel/img/bg_hor.png | Bin 0 -> 138 bytes .../public/default/splitpanel/img/bg_ver.png | Bin 0 -> 139 bytes .../public/default/splitpanel/splitpanel.css | 13 + .../terminal/gwt/public/default/styles.css | 30 +- .../public/default/table/{css => }/table.css | 0 .../public/default/tabsheet/css/tabsheet.css | 110 ------- .../public/default/tabsheet/img/tab-bg.png | Bin 221 -> 144 bytes .../gwt/public/default/tabsheet/tabsheet.css | 157 +++++++++ .../default/textfield/{css => }/textfield.css | 0 .../public/default/tree/{css => }/tree.css | 0 .../default/window/{css => }/window.css | 0 src/com/itmill/toolkit/ui/TabSheet.java | 18 +- 66 files changed, 644 insertions(+), 551 deletions(-) create mode 100644 src/com/itmill/toolkit/terminal/gwt/client/ui/HorizontalSplitPanelImages.java create mode 100644 src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheetPanel.java create mode 100644 src/com/itmill/toolkit/terminal/gwt/client/ui/VerticalSplitPanelImages.java rename src/com/itmill/toolkit/terminal/gwt/public/default/button/{css => }/button.css (100%) rename src/com/itmill/toolkit/terminal/gwt/public/default/caption/{css => }/caption.css (100%) create mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/common/common.css delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/common/css/common.css create mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/common/img/blank.png delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/common/img/shadow-em.png delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/common/img/shadow.png delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/common/img/window-bg.png delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/common/img/window-bottom-bg.gif rename src/com/itmill/toolkit/terminal/gwt/public/default/datefield/{css => }/datefield.css (100%) delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/panel/css/panel.css delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/bg-em.gif delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/bg-light.png delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/bottom-left-em.gif delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/bottom-left-light.png delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/bottom-right-em.gif delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/bottom-right-light.png delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-bg-em.gif delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-bg-highlight.png delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-bg-light.png delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-bg-strong.png delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-bg.png delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-left-em.gif delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-left-highlight.png delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-left-light.png delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-left-small.png delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-left-strong.png delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-right-em.gif delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-right-highlight.png delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-right-light.png delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-right-small.png delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-right-strong.png create mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/panel/panel.css rename src/com/itmill/toolkit/terminal/gwt/public/default/{filterselect/css => select}/filterselect.css (95%) rename src/com/itmill/toolkit/terminal/gwt/public/default/select/{css => }/select.css (100%) rename src/com/itmill/toolkit/terminal/gwt/public/default/slider/{css => }/slider.css (100%) delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/splitpanel/css/splitpanel.css create mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/splitpanel/img/bg_hor.png create mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/splitpanel/img/bg_ver.png create mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/splitpanel/splitpanel.css rename src/com/itmill/toolkit/terminal/gwt/public/default/table/{css => }/table.css (100%) delete mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/tabsheet/css/tabsheet.css create mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/tabsheet/tabsheet.css rename src/com/itmill/toolkit/terminal/gwt/public/default/textfield/{css => }/textfield.css (100%) rename src/com/itmill/toolkit/terminal/gwt/public/default/tree/{css => }/tree.css (100%) rename src/com/itmill/toolkit/terminal/gwt/public/default/window/{css => }/window.css (100%) diff --git a/src/com/itmill/toolkit/terminal/gwt/client/Caption.java b/src/com/itmill/toolkit/terminal/gwt/client/Caption.java index f40228f921..885d7a8016 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/Caption.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/Caption.java @@ -8,6 +8,8 @@ import com.google.gwt.user.client.ui.PopupPanel; public class Caption extends HTML { + public static final String CLASSNAME = "i-caption"; + private Paintable owner; private Element errorIndicatorElement; @@ -24,7 +26,7 @@ public class Caption extends HTML { public Caption(Paintable component) { super(); owner = component; - setStyleName("i-caption"); + setStyleName(CLASSNAME); } public void updateCaption(UIDL uidl) { diff --git a/src/com/itmill/toolkit/terminal/gwt/client/CaptionWrapper.java b/src/com/itmill/toolkit/terminal/gwt/client/CaptionWrapper.java index b0640fb90f..1957de0ce8 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/CaptionWrapper.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/CaptionWrapper.java @@ -1,11 +1,11 @@ package com.itmill.toolkit.terminal.gwt.client; import com.google.gwt.user.client.ui.FlowPanel; -import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; public class CaptionWrapper extends FlowPanel { + public static final String CLASSNAME = "i-captionwrapper"; Caption caption; Paintable widget; @@ -14,6 +14,7 @@ public class CaptionWrapper extends FlowPanel { add(caption); widget = toBeWrapped; add((Widget) widget); + setStyleName(CLASSNAME); } public void updateCaption(UIDL uidl) { diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/HorizontalSplitPanelImages.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/HorizontalSplitPanelImages.java new file mode 100644 index 0000000000..07bd6367a6 --- /dev/null +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/HorizontalSplitPanelImages.java @@ -0,0 +1,15 @@ +package com.itmill.toolkit.terminal.gwt.client.ui; + +import com.google.gwt.user.client.ui.AbstractImagePrototype; + +public interface HorizontalSplitPanelImages extends + com.google.gwt.user.client.ui.HorizontalSplitPanelImages { + + /** + * An image representing the drag thumb. + * + * @gwt.resource com/itmill/toolkit/terminal/gwt/public/default/common/img/blank.png + */ + AbstractImagePrototype horizontalSplitPanelThumb(); + +} diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/ICheckBox.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/ICheckBox.java index 016c8affc0..6282c9d5f8 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/ICheckBox.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/ICheckBox.java @@ -8,6 +8,8 @@ import com.itmill.toolkit.terminal.gwt.client.UIDL; public class ICheckBox extends com.google.gwt.user.client.ui.CheckBox implements Paintable { + + public static final String CLASSNAME = "i-checkbox"; String id; @@ -16,6 +18,7 @@ public class ICheckBox extends com.google.gwt.user.client.ui.CheckBox ApplicationConnection client; public ICheckBox() { + setStyleName(CLASSNAME); addClickListener(new ClickListener() { public void onClick(Widget sender) { diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java index 85131a46be..027fe3808e 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java @@ -294,7 +294,8 @@ public class IFilterSelect extends Composite implements Paintable, initWidget(panel); setStyleName(CLASSNAME); tb.addKeyboardListener(this); - popupOpener.setStyleName(CLASSNAME + "-popupopener"); + tb.setStyleName(CLASSNAME + "-input"); + popupOpener.setStyleName(CLASSNAME + "-button"); popupOpener.addClickListener(this); } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/ILabel.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/ILabel.java index 0ea08a2529..bb204679ef 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/ILabel.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/ILabel.java @@ -11,6 +11,7 @@ public class ILabel extends HTML implements Paintable { public ILabel() { super(); + setStyleName(CLASSNAME); } public ILabel(String text) { diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IOptionGroup.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IOptionGroup.java index fed7295edf..d8d759f814 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IOptionGroup.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IOptionGroup.java @@ -37,8 +37,9 @@ public class IOptionGroup extends IOptionGroupBase { op.setText(opUidl.getStringAttribute("caption")); } else { op = new RadioButton(id, opUidl.getStringAttribute("caption")); + op.setStyleName("i-radiobutton"); } - op.setStyleName(CLASSNAME_OPTION); + op.addStyleName(CLASSNAME_OPTION); op.setChecked(opUidl.getBooleanAttribute("selected")); op.setEnabled(!opUidl.getBooleanAttribute("disabled") && !readonly && !disabled); op.addClickListener(this); diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IPanel.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IPanel.java index 5e657130d4..ab36b3bce5 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IPanel.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IPanel.java @@ -91,8 +91,13 @@ public class IPanel extends FlowPanel implements Paintable { content.setHeight("0"); int height = getOffsetHeight(); content.setHeight(neededHeight-height + "px"); - } else + } else { content.setHeight(""); + // We don't need overflow:auto when panel height is not set + // (overflow:auto causes rendering errors at least in Firefox when a + // a panel is inside a tabsheet with overflow:auto set) + DOM.setStyleAttribute(content.getElement(), "overflow", "hidden"); + } } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/ISlider.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/ISlider.java index 78754e68c6..65a9f57f13 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/ISlider.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/ISlider.java @@ -156,7 +156,7 @@ public class ISlider extends Widget implements Paintable { DOM.setStyleAttribute(getElement(), "width", "auto"); } }; - adjust.schedule(100); + adjust.schedule(0); // Defer execution } } } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/ISplitPanel.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/ISplitPanel.java index 36a7171419..97a73a2f19 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/ISplitPanel.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/ISplitPanel.java @@ -1,14 +1,20 @@ package com.itmill.toolkit.terminal.gwt.client.ui; +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.DOM; +import com.google.gwt.user.client.Element; import com.google.gwt.user.client.ui.HorizontalSplitPanel; +import com.google.gwt.user.client.ui.HorizontalSplitPanelImages; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.VerticalSplitPanel; +import com.google.gwt.user.client.ui.VerticalSplitPanelImages; import com.google.gwt.user.client.ui.Widget; import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection; import com.itmill.toolkit.terminal.gwt.client.Paintable; import com.itmill.toolkit.terminal.gwt.client.UIDL; public class ISplitPanel extends SimplePanel implements Paintable { + public static final String CLASSNAME = "i-splitpanel"; public static final int ORIENTATION_HORIZONTAL = 0; public static final int ORIENTATION_VERTICAL = 1; @@ -24,20 +30,28 @@ public class ISplitPanel extends SimplePanel implements Paintable { public ISplitPanel(int orientation) { super(); - setOrientetion(orientation); + setOrientation(orientation); } - private void setOrientetion(int orientation) { + private void setOrientation(int orientation) { this.orientation = orientation; if(orientation == ORIENTATION_HORIZONTAL) { - this.sph = new HorizontalSplitPanel(); + this.sph = new HorizontalSplitPanel((HorizontalSplitPanelImages) GWT.create(com.itmill.toolkit.terminal.gwt.client.ui.HorizontalSplitPanelImages.class)); + this.sph.setStyleName(CLASSNAME+"-horizontal"); + // Ugly work-around to allow more advanced styling (GWT's heavy use of TABLE-elements is restricting) + Element handle = DOM.getChild(DOM.getChild(this.sph.getElement(), 0), 1); + DOM.setElementAttribute(handle, "className", CLASSNAME+"-handle"); this.setWidget(sph); if(spv != null) { // TODO cleanup contained widgets this.spv = null; } } else { - this.spv = new VerticalSplitPanel(); + this.spv = new VerticalSplitPanel((VerticalSplitPanelImages) GWT.create(com.itmill.toolkit.terminal.gwt.client.ui.VerticalSplitPanelImages.class)); + this.spv.setStyleName(CLASSNAME+"-vertical"); + // Ugly work-around to allow more advanced styling (GWT's heavy use of TABLE-elements is restricting) + Element handle = DOM.getChild(DOM.getChild(this.spv.getElement(), 0), 1); + DOM.setElementAttribute(handle, "className", CLASSNAME+"-handle"); this.setWidget(spv); if(sph != null) { // TODO cleanup contained widgets diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheet.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheet.java index 35698f03ff..df7401388e 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheet.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheet.java @@ -5,18 +5,16 @@ import java.util.Iterator; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; -import com.google.gwt.user.client.ui.DeckPanel; -import com.google.gwt.user.client.ui.Label; +import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.SourcesTabEvents; import com.google.gwt.user.client.ui.TabBar; import com.google.gwt.user.client.ui.TabListener; -import com.google.gwt.user.client.ui.TabPanel; import com.google.gwt.user.client.ui.Widget; import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection; import com.itmill.toolkit.terminal.gwt.client.Paintable; import com.itmill.toolkit.terminal.gwt.client.UIDL; -public class ITabsheet extends TabPanel implements Paintable { +public class ITabsheet extends FlowPanel implements Paintable { public static final String CLASSNAME = "i-tabsheet"; @@ -30,16 +28,20 @@ public class ITabsheet extends TabPanel implements Paintable { int activeTabIndex = 0; + private TabBar tb; + private ITabsheetPanel tp; private Element deco; - - TabListener tl = new TabListener() { + + private TabListener tl = new TabListener() { public void onTabSelected(SourcesTabEvents sender, int tabIndex) { - ITabsheet.this.client.updateVariable(id, "selected", tabIndex, - true); + if (client != null && activeTabIndex != tabIndex) + ITabsheet.this.client.updateVariable(id, "selected", "" + + tabKeys.get(tabIndex), true); } public boolean onBeforeTabSelected(SourcesTabEvents sender, int tabIndex) { + // TODO give user indication of progress return true; } @@ -48,49 +50,26 @@ public class ITabsheet extends TabPanel implements Paintable { public ITabsheet() { setStyleName(CLASSNAME); - addTabListener(new TabListener() { - - public void onTabSelected(SourcesTabEvents sender, int tabIndex) { - if (client != null && activeTabIndex != tabIndex) - ITabsheet.this.client.updateVariable(id, "selected", "" - + tabKeys.get(tabIndex), true); - } - - public boolean onBeforeTabSelected(SourcesTabEvents sender, - int tabIndex) { - return true; - } - - }); + tb = new TabBar(); + tp = new ITabsheetPanel(); + deco = DOM.createDiv(); + tp.setStyleName(CLASSNAME+"-content"); + tb.setStyleName(CLASSNAME+"-tabs"); + DOM.setElementProperty(deco, "className", CLASSNAME+"-deco"); + + add(tb); + add(tp); + DOM.appendChild(getElement(), deco); + + tb.addTabListener(tl); + + clearTabs(); } public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { this.client = client; id = uidl.getId(); - - DeckPanel dp = getDeckPanel(); - dp.setStyleName(CLASSNAME+"-content"); - - TabBar tb = getTabBar(); - tb.setStyleName(CLASSNAME+"-tabs"); - - // Add a decoration element for shadow - // TODO refactor tabsheet with plain DIV-implementation - /*if(!DOM.compare(deco, null)) { - DOM.removeChild(DOM.getParent(getElement()), deco); - deco = null; - } - deco = DOM.createDiv(); - DOM.setElementProperty(deco, "className", CLASSNAME+"-deco"); - DOM.appendChild(DOM.getParent(getElement()), deco); - */ - // Adjust width and height - String h = uidl.hasAttribute("height")? uidl.getStringAttribute("height") : ""; - String w = uidl.hasAttribute("width")? uidl.getStringAttribute("width") : ""; - setWidth(w!=""?w:"auto"); - //DOM.setStyleAttribute(deco, "width", w!=""?w:"auto"); - dp.setHeight(h!=""?h:"auto"); UIDL tabs = uidl.getChildUIDL(0); boolean keepCurrentTabs = tabKeys.size() == tabs.getNumberOfChildren(); @@ -105,42 +84,77 @@ public class ITabsheet extends TabPanel implements Paintable { UIDL tab = (UIDL) it.next(); if (tab.getBooleanAttribute("selected")) { activeTabIndex = index; - Widget content = client.getWidget(tab - .getChildUIDL(0)); - tb.selectTab(index); - remove(index); - insert(content, (String) captions.get(index), index); - this.selectTab(index); - ((Paintable)content).updateFromUIDL(tab - .getChildUIDL(0), client); + Widget content = client.getWidget(tab.getChildUIDL(0)); + ((Paintable)content).updateFromUIDL(tab.getChildUIDL(0), client); + tp.remove(index); + tp.insert(content, index); } index++; } } else { tabKeys.clear(); captions.clear(); - clear(); + clearTabs(); + int index = 0; for (Iterator it = tabs.getChildIterator(); it.hasNext();) { UIDL tab = (UIDL) it.next(); String key = tab.getStringAttribute("key"); String caption = tab.getStringAttribute("caption"); + captions.add(caption); tabKeys.add(key); - if (tab.getBooleanAttribute("selected")) { + + tb.addTab(caption); + + if(tab.getBooleanAttribute("selected")) { + Widget content = client.getWidget(tab.getChildUIDL(0)); + tp.add(content); activeTabIndex = index; - Widget content = client.getWidget(tab - .getChildUIDL(0)); - this.add(content, caption); - this.selectTab(this.getWidgetIndex(content)); - ((Paintable)content).updateFromUIDL(tab - .getChildUIDL(0), client); - } else { - this.add(new Label(), caption); - } + ((Paintable)content).updateFromUIDL(tab.getChildUIDL(0), client); + } else + tp.add(new ILabel("")); + index++; } } + + // Open selected tab + tb.selectTab(activeTabIndex); + tp.showWidget(activeTabIndex); + + // Adjust width and height + String h = uidl.hasAttribute("height")? uidl.getStringAttribute("height") : null; + String w = uidl.hasAttribute("width")? uidl.getStringAttribute("width") : null; + setWidth(w!=null?w:"auto"); + + // Try to approximate the height as close as possible + if(h!=null) { + // First, calculate needed pixel height + setHeight(h); + int neededHeight = getOffsetHeight(); + setHeight("auto"); + // Then calculate the size the content area needs to be + tp.setHeight("0"); + int height = getOffsetHeight(); + tp.setHeight(neededHeight-height + "px"); + } else { + tp.setHeight("auto"); + // We don't need overflow:auto when tabsheet height is not set + DOM.setStyleAttribute(tp.getElement(), "overflow", "hidden"); + } } + + private void clearTabs() { + int i = tb.getTabCount(); + while(i>0) + tb.removeTab(--i); + tp.clear(); + + // Get rid of unnecessary 100% cell heights in TabBar (really ugly hack) + Element tr = DOM.getChild(DOM.getChild(tb.getElement(), 0), 0); + Element rest = DOM.getChild(DOM.getChild(tr, DOM.getChildCount(tr)-1), 0); + DOM.removeElementAttribute(rest, "style"); + } } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheetPanel.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheetPanel.java new file mode 100644 index 0000000000..7ab01ed121 --- /dev/null +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheetPanel.java @@ -0,0 +1,102 @@ +package com.itmill.toolkit.terminal.gwt.client.ui; + +import com.google.gwt.user.client.DOM; +import com.google.gwt.user.client.ui.ComplexPanel; +import com.google.gwt.user.client.ui.Widget; + +/** + * A panel that displays all of its child widgets in a 'deck', where only one + * can be visible at a time. It is used by + * {@link com.itmill.toolkit.terminal.gwt.client.ui.ITabsheetPanel}. + * + * This class has the same basic functionality as the GWT DeckPanel + * {@link com.google.gwt.user.client.ui.DeckPanel}, with the exception + * that it doesn't manipulate the child widgets' width and height attributes. + */ +public class ITabsheetPanel extends ComplexPanel { + + private Widget visibleWidget; + + /** + * Creates an empty tabsheet panel. + */ + public ITabsheetPanel() { + setElement(DOM.createDiv()); + } + + /** + * Adds the specified widget to the deck. + * + * @param w the widget to be added + */ + public void add(Widget w) { + super.add(w, getElement()); + initChildWidget(w); + } + + /** + * Gets the index of the currently-visible widget. + * + * @return the visible widget's index + */ + public int getVisibleWidget() { + return getWidgetIndex(visibleWidget); + } + + /** + * Inserts a widget before the specified index. + * + * @param w the widget to be inserted + * @param beforeIndex the index before which it will be inserted + * @throws IndexOutOfBoundsException if beforeIndex is out of + * range + */ + public void insert(Widget w, int beforeIndex) { + super.insert(w, getElement(), beforeIndex, true); + initChildWidget(w); + } + + public boolean remove(Widget w) { + boolean removed = super.remove(w); + if (removed) { + resetChildWidget(w); + + if (visibleWidget == w) { + visibleWidget = null; + } + } + return removed; + } + + /** + * Shows the widget at the specified index. This causes the currently- visible + * widget to be hidden. + * + * @param index the index of the widget to be shown + */ + public void showWidget(int index) { + checkIndexBoundsForAccess(index); + + if (visibleWidget != null) { + visibleWidget.setVisible(false); + } + visibleWidget = getWidget(index); + visibleWidget.setVisible(true); + } + + /** + * Make the widget invisible, and set its width and height to full. + */ + private void initChildWidget(Widget w) { + w.setVisible(false); + } + + /** + * Make the widget visible, and clear the widget's width and height + * attributes. This is done so that any changes to the visibility, height, or + * width of the widget that were done by the panel are undone. + */ + private void resetChildWidget(Widget w) { + w.setVisible(true); + } +} diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/VerticalSplitPanelImages.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/VerticalSplitPanelImages.java new file mode 100644 index 0000000000..65bb9776b7 --- /dev/null +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/VerticalSplitPanelImages.java @@ -0,0 +1,15 @@ +package com.itmill.toolkit.terminal.gwt.client.ui; + +import com.google.gwt.user.client.ui.AbstractImagePrototype; + +public interface VerticalSplitPanelImages extends + com.google.gwt.user.client.ui.VerticalSplitPanelImages { + + /** + * An image representing the drag thumb. + * + * @gwt.resource com/itmill/toolkit/terminal/gwt/public/default/common/img/blank.png + */ + AbstractImagePrototype verticalSplitPanelThumb(); + +} diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/button/css/button.css b/src/com/itmill/toolkit/terminal/gwt/public/default/button/button.css similarity index 100% rename from src/com/itmill/toolkit/terminal/gwt/public/default/button/css/button.css rename to src/com/itmill/toolkit/terminal/gwt/public/default/button/button.css diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/caption/css/caption.css b/src/com/itmill/toolkit/terminal/gwt/public/default/caption/caption.css similarity index 100% rename from src/com/itmill/toolkit/terminal/gwt/public/default/caption/css/caption.css rename to src/com/itmill/toolkit/terminal/gwt/public/default/caption/caption.css diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/common/common.css b/src/com/itmill/toolkit/terminal/gwt/public/default/common/common.css new file mode 100644 index 0000000000..64dc530a00 --- /dev/null +++ b/src/com/itmill/toolkit/terminal/gwt/public/default/common/common.css @@ -0,0 +1,34 @@ +#itmtk-ajax-window { + background: #e9eced; + font-family: "Trebuchet MS", geneva, helvetica, arial, tahoma, verdana, sans-serif; + color: #464f52; + font-size: 12px; + line-height: 18px; +} + +input, select, textarea, button { + font-family: "Trebuchet MS", geneva, helvetica, arial, tahoma, verdana, sans-serif; + color: #464f52; +} + +select { + padding: 0; + margin: 0; +} + +.i-disabled { + opacity: 0.3; + filter: Alpha(opacity=30); +} + +.i-contextmenu { + background: #fff; + border: #000; +} + +/* Provide some extra whitespace for wrapped elements + (these elements usuallly need the extra space, since + they aren't even handling their own caption) */ +.i-captionwrapper { + margin: 0.3em 0 0 0; +} \ No newline at end of file diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/common/css/common.css b/src/com/itmill/toolkit/terminal/gwt/public/default/common/css/common.css deleted file mode 100644 index 64c9177eb0..0000000000 --- a/src/com/itmill/toolkit/terminal/gwt/public/default/common/css/common.css +++ /dev/null @@ -1,33 +0,0 @@ -body { - background: #f5f6f7 url(../img/window-bottom-bg.gif) no-repeat right bottom fixed; - font-family: helvetica, arial, tahoma, verdana, sans-serif; - color: #454a51; - font-size: 13px; - line-height: 19px; - padding: 8px; - margin: 0; -} - -#itmtk-ajax-window { - -} - -input, select, textarea, button { - font-family: helvetica, arial, tahoma, verdana, sans-serif; - font-size: 1em; -} - -select { - padding: 0; - margin: 0; -} - -.i-disabled { - opacity: 0.3; - filter: Alpha(opacity=30); -} - -.i-contextmenu { - background: #fff; - border: #000; -} \ No newline at end of file diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/common/img/blank.png b/src/com/itmill/toolkit/terminal/gwt/public/default/common/img/blank.png new file mode 100644 index 0000000000000000000000000000000000000000..2ba29d20c177ab1c50abd6f22c6556090041c01d GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx3?wy9o9qTsEa{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i=?1^9%x{{R0U$P7JnxeiD%mIV0) sGdMiEkp|@Oc)B=-RNP8RVBj!dU|?ck^v{ia2oz`VboFyt=akR{03>55l>h($ literal 0 HcmV?d00001 diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/common/img/shadow-em.png b/src/com/itmill/toolkit/terminal/gwt/public/default/common/img/shadow-em.png deleted file mode 100644 index a35c6b6b848d78ec65b143c75ee090a38c492c36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrJ!2~4T^fnv@QY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%X?eOhhE&{QkYRZIpW)cCV@zCJ yTnx8v-C}t9^eMyp_wO0LfB(+#_wQdO9)@EA0+HPFGCl%zF?hQAxvXra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%$#}XrhE&{2N=itWkjNyoUy#Lk hLIRUu!T}C}1O}%rW_g8Y681oK44$rjF6*2UngFy|BeMVi diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/common/img/window-bg.png b/src/com/itmill/toolkit/terminal/gwt/public/default/common/img/window-bg.png deleted file mode 100644 index 2bcda2dc630ff611b3996ab158d393109d9a93da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 470 zcmV;{0V)28P)u z_xSqYSA_4)ey_V@Yp_4xGm_~`5K>h1F1@$>fP>F(m@?C$XN-Qwxt zhIv=>-YEh^7HoN=I!h5 z^6l{R-s9@!=hJ38@!sO;`1$(W;OO%6_uS#> z^!4}k_W1bv``+W}_xSnt_xR`P@bK~V?C+kUO>Fn_2=k5uwh8_R_0Fy~X zK~#9!?7>A20#OVA(Bkgy?moE7{SQUcG(XcaEZOlMSYSa^-QbkCqzByNVYR{C4)2f_ zZ;%kHW}D~57nE)Ld_v>uh|g)=JVQ`@Ld9IrArGlj+TlgpD`dqkubD~l0U7ZE9)|-S zQ(JtEXS5)0v0n|SI~-9@*!Qu?kJ$C)n6GF~++(l9lI`E$&%Fg00DvnTYl<~UfdBvi M07*qoM6N<$f(0BVoB#j- diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/common/img/window-bottom-bg.gif b/src/com/itmill/toolkit/terminal/gwt/public/default/common/img/window-bottom-bg.gif deleted file mode 100644 index e8068d9a8be68f201581be275eefc13565ca752c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19540 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 diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/datefield/css/datefield.css b/src/com/itmill/toolkit/terminal/gwt/public/default/datefield/datefield.css similarity index 100% rename from src/com/itmill/toolkit/terminal/gwt/public/default/datefield/css/datefield.css rename to src/com/itmill/toolkit/terminal/gwt/public/default/datefield/datefield.css diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/panel/css/panel.css b/src/com/itmill/toolkit/terminal/gwt/public/default/panel/css/panel.css deleted file mode 100644 index 1815c43ff0..0000000000 --- a/src/com/itmill/toolkit/terminal/gwt/public/default/panel/css/panel.css +++ /dev/null @@ -1,306 +0,0 @@ -.i-panel { - margin: 8px 0 1px 0; -} - -.i-panel-caption { - font-size: 12px; - line-height: 12px; - font-weight: normal; - color: #2c3c49; - white-space: nowrap; - height: 27px; - padding: 0 5px 0 5px; - border: 1px solid #c1c6cc; - border-bottom: none; - background: #fff url(../img/top-bg.png) repeat-x top left; -} - -.i-panel-caption:before { - display: block; - height: 28px; - overflow: hidden; - background: transparent url(../img/top-right.png) no-repeat right top; - content: url(../img/top-left.png); - margin: -1px -6px -20px -6px; -} - -.i-panel-content { - border: 1px solid #c1c6cc; - border-top: none; - background-color: #fff; - overflow: auto; - padding: 8px; -} - -.i-panel-deco { - height: 9px; - background: transparent url(../../common/img/shadow.png) repeat-x left bottom; - margin-top: -2px; - position: relative; -} - -.i-panel-deco:before { - display: block; - height: 2px; - overflow: hidden; - background: transparent url(../img/bottom-right.png) no-repeat right top; - content: url(../img/bottom-left.png); -} - -.i-panel-nocaption { - border-top: 1px solid #c1c6cc; - background-color: #fff; -} - -.i-panel-nocaption:before { - display: block; - height: 2px; - overflow: hidden; - background: transparent url(../img/top-right-small.png) no-repeat right top; - content: url(../img/top-left-small.png); - margin-top: -1px; -} - - - -/* Strong style */ - -.i-panel-strong .i-panel-caption { - background-image: url(../img/top-bg-strong.png); - border-color: #6c9ad8; - color: #fff; - font-weight: bold; -} - -.i-panel-strong .i-panel-caption:before { - background-image: url(../img/top-right-strong.png); - content: url(../img/top-left-strong.png); -} - - - -/* Light style */ - -.i-panel-light .i-panel-caption { - background: transparent; - font-weight: bold; - border: none; - padding: 3px 0 0 2px; - height: 16px; - margin-bottom: 1px; - border-bottom: 1px solid #e7e7e8; -} - -.i-panel-light .i-panel-caption:before { - display: none; -} - -.i-panel-light .i-panel-caption:after { - display: block; - height: 2px; - overflow: hidden; - background: transparent url(../img/top-right-light.png) no-repeat top right; - content: url(../img/top-left-light.png); - margin: 4px 0 0 -2px; -} - -.i-panel-light .i-panel-content { - border: 1px solid #e7e7e8; - border-top: none; - background: #fff url(../img/bg-light.png) repeat-x 0 1px; -} - -.i-panel-light .i-panel-deco { - background: transparent; - height: 2px; -} - -.i-panel-light .i-panel-deco:before { - background: transparent url(../img/bottom-right-light.png) no-repeat top right; - content: url(../img/bottom-left-light.png); -} - -/* Light style without caption */ -.i-panel-light .i-panel-nocaption { - border-color: #e7e7e8; -} - -.i-panel-light .i-panel-nocaption:before { - background-image: url(../img/top-right-light.png); - content: url(../img/top-left-light.png); -} - - - -/* Highlight style */ - -.i-panel-highlight .i-panel-caption { - background-image: url(../img/top-bg-highlight.png); - background-color: #fffdec; - border-color: #c0baae; - color: #4e4640; -} - -.i-panel-highlight .i-panel-caption:before { - background-image: url(../img/top-right-highlight.png); - content: url(../img/top-left-highlight.png); -} - -.i-panel-highlight .i-panel-content { - background-color: #fffdec; - border-color: #c0baae; - color: #605b52; -} - -/* Highlight style without caption */ -.i-panel-highlight .i-panel-nocaption { - border-color: #c0baae; - background-color: #fffdec; -} - - - -/* Emphasized style */ - -.i-panel-emphasize .i-panel-caption { - background: #6899d9 url(../img/top-bg-em.gif) repeat-x; - border-color: #78a2db; - color: #fff; - font-weight: bold; - height: 22px; -} - -.i-panel-emphasize .i-panel-caption:before { - background-image: url(../img/top-right-em.gif); - content: url(../img/top-left-em.gif); -} - -.i-panel-emphasize .i-panel-content { - background: #3a6bab url(../img/bg-em.gif) repeat-x; - color: #dee6f2; - border-color: #78a2db; -} - -.i-panel-emphasize .i-panel-deco { - margin-top: -4px; - height: 11px; - background-image: url(../../common/img/shadow-em.png); -} - -.i-panel-emphasize .i-panel-deco:before { - background-image: url(../img/bottom-right-em.gif); - content: url(../img/bottom-left-em.gif); - height: 4px; -} - -/* Emphasized style without caption */ -.i-panel-emphasize .i-panel-nocaption { - background: #6899d9 url(../img/top-bg-em.gif) repeat-x; - border: 1px solid #78a2db; - border-bottom: none; - height: 3px; -} - -.i-panel-emphasize .i-panel-nocaption:before { - background-image: url(../img/top-right-em.gif); - content: url(../img/top-left-em.gif); - margin: -1px; -} - - - - - - - -/* IE specific rules (different selectors for IE6 and IE7. - * These selectors must be separate because IE6 won't - * apply them if they are grouped together. -*/ -* html .i-panel-caption { - padding-top: 7px; - height: 19px; -} -*+html .i-panel-caption { - padding-top: 7px; - height: 19px; -} - -* html .i-panel-deco { - position: static; - background: transparent; - margin: 0; - font-size: 1; - height: 7px; - overflow: hidden; - /* TODO change url when packaging is complete */ - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../com.itmill.toolkit.terminal.gwt.Client/component-themes/common/img/shadow.png", sizingMethod="scale"); -} - -/* Without caption */ -* html .i-panel-nocaption { - height: 1px; - overflow: hidden; - background: #c1c6cc; - border: none; -} - - -/* Light style */ - -* html .i-panel-light .i-panel-caption { - background: transparent; - font-weight: bold; - border: none; - padding: 3px 0 0 2px; - height: 16px; -} -*+html .i-panel-light .i-panel-caption { - background: transparent; - font-weight: bold; - border: none; - padding: 3px 0 0 2px; - height: 16px; -} - -* html .i-panel-light .i-panel-content { - border: 1px solid #e7e7e8; - background-position: 0 2px; -} -*+html .i-panel-light .i-panel-content { - border: 1px solid #e7e7e8; - background-position: 0 2px; -} - -* html .i-panel-light .i-panel-deco { - display: none; -} - -/* Without caption */ -* html .i-panel-light .i-panel-nocaption { - display: none; -} -*+html .i-panel-light .i-panel-nocaption { - display: none; -} - - -/* Emphasized style */ -* html .i-panel-emphasize .i-panel-caption { - height: 15px; -} -*+html .i-panel-emphasize .i-panel-caption { - height: 15px; -} - -* html .i-panel-emphasize .i-panel-content { - background-attachment: fixed; -} - -* html .i-panel-emphasize .i-panel-deco { - height: 7px; - margin-top: 0; - background: transparent; - /* TODO change url when packaging is complete */ - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../com.itmill.toolkit.terminal.gwt.Client/component-themes/common/img/shadow-em.png", sizingMethod="scale"); -} \ No newline at end of file diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/bg-em.gif b/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/bg-em.gif deleted file mode 100644 index 1c817bfa54dc37f7488b7ccc7b9a61bd9c14c92f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169 zcmZ?wbhEHbWMpt)IKsf-RJ_@%dbfMUj=-ivLCuFlT91ad9dj+)=2N@ZzF>o6(I&U@ z?VeS;f?JOGHyrS*-|teo)w^boN9E3d#)A%p8-45c+2pQuF4-qStL)Vb zNI>x?3z(+^B0+XCu&ONxG&y46doDQCLxira@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%2?h9sxc>hA`_G?0fB*jd_wV2T z|Nnpe`o&OikQ*o~?djqeQgJIOAyt8G5wn}gi59k*8y&<_I0O1H|fN32N2~x|z%oY(6 K#H`53U=09m4i6~+ diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/bottom-left-light.png b/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/bottom-left-light.png deleted file mode 100644 index 91e395dd4a3a2a7db3949b4f4f72a97f98cc8161..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^Od!m`3?yAM{)z!9mUKs7M+S!VC(K#9UIO`&C9V-A z!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$ZGeh61AIbUKYsl9|NsBz&tC`}*bxd8 p6!3I$45_%4l#rB=kix`az`!8Fz_!q4od!^j!PC{xWt~$(69Dl9D+&Mr diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/bottom-left.png b/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/bottom-left.png index 9ce9c8efe9810682aa4fa3bc367dd771c83880ad..d5c950bc455eaa9e2041c2182c7f2d98e2f6cff9 100644 GIT binary patch delta 193 zcmbQt_?}U*Gr-TCmrII^fq{Y7)59eQNOOWP2OE%lFp*7QqM}88qo<2wNX4zB8{4YS zAI`tO|Nn9J84?l_=jwianaL>6pc(b~(N*n3UGw%nINcHi7G(3VKPuxiG<5ak tEM)WJ^IOy9(7@aAcY%}$qc{@}!!>6A_zs^+d!VZrJYD@<);T3K0RUAuNlO3# delta 100 zcmaFQIGItgGr-TCmrII^fq{Y7)59eQNHc*j2Q!d#&G;)eQPIMRGr%Xr_4eI|w{G7# ycF!NeM{_2`Nk*1`G@$3~UQ+)@cCc7(8A5T-G@yGywoGBOFHn diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/bottom-right-em.gif b/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/bottom-right-em.gif deleted file mode 100644 index 1ffd8658cb83c1e52f3703e11af6343f4d5ce8c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 344 zcmZ?wbhEHbJi)=ju$h6OV$tpBuHzvsho&yu<6N@YyJk=Nj2l+jtNm(sF<=9VKUu)S zIv^5c1_R6g4<|fV@3nY+cK81TjlPu3c^RwL<-FckpmV+?_kP8?_cibTA6QV}p(E9Q zVoA}-9IN>kR+P9gh^)J@rtI|Fs{Ic(RQTx4KL27%)!Dq=_do2Y@mqiU{f|9$=imSS z-_Y39+|t_C-qG3B-P7CGKVjme$y26In_j`lz&2;@y!i_jE?T@~>9XZ3R<2sTX6?H5 z8#Zp*yk+aQ?K^hv+P!D*zWoOd9y)yF=&|D`PM$h_=Ipui7cO49eC6u3>o;!Rx_xIa z69dP?M~|O8efIpt%U7@8ynXln!^cmbzkL1n{m0K=zyJLG_n(28OU7fvf`iQ*!dfvW lHY_~cE}-l+$7AE7qumn5S$9rsTztG=fz_E$Mu3sQ8UWR*xTgRB diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/bottom-right-light.png b/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/bottom-right-light.png deleted file mode 100644 index 31e6252f909121e680f3ac8b418090ee806f2ed0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^Od!m`3?yAM{)z!9mUKs7M+S!VC(K#9UIO`&C9V-A z!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$ZGeh61AIbUKYsl9|NsBz&tC`}*bxd8 p6!3I$45_%4l#q~=ki^1az`!8Pz_v8-{Xd`_gQu&X%Q~loCIA5AEI9xG diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/bottom-right.png b/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/bottom-right.png index 001f63cad545b3c0a22384881cc2670fb0397853..3ad916f694cef2fb83f4ef3cb42b2627778797dd 100644 GIT binary patch delta 324 zcmbQt_<>2WGr-TCmrII^fq{Y7)59f*fr0%3kj=@#1|+lAZ5NoRXkO3A&z~LBGZ|bgV`ulmw_f59HzWPZoo%=Ww)Og=d zo8MM`wt4(>%idYfnXDk94C(KeTf5qS*{JV3W!v8wZswoQe!ltWS*75Yu}$vg=gZ z^y^{m$CIaADOmV0ciz4B9Y3;W-;V7&7u9{5fe4`ZlLf3w2SkGGWMCC~z#!Q6+2z0` QmJSuw%S%LY7Ai(^Q|t&~&S1sN0s7!=Mt wyjvgl);6leAjR7~RONQfx%B;_w?q>dL`oSRtkAj}0o23b>FVdQ&MBb@07UOr?EnA( diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-bg-light.png b/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-bg-light.png deleted file mode 100644 index 0f4652021402fbd0f12aa821147775983e6c55e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrF!3-ofN0qGwQY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%@dx;XxX#`FaN^pV6*Es9yZ!P1 z|NmKwcSixGL_A#_Ln>}1C8Q-JB%~xHB`|UrFff=faG%qXod=X>@O1TaS?83{1OQ1_ BFrxqf diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-bg-strong.png b/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-bg-strong.png deleted file mode 100644 index 8385dced7de2330a6e8cbc1f9d158b4e84ce11f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^j6f{K!3-oFZykFKq*&4&eH|GX)}JtE?Rp91OP07s zlmzFem6RtIr7}3CNRg7I!_iYejM6%tbW6X`~?rZ@t;?%;YxHU|0Cj81#*zDNS}bo)7Aq-sI`o-{srk=Hce+u;NA>DB%C6N}5zqJd!M0 qoLC#5QQ<|d}62BjvZR2H60wE-%!3GfMVy?68co$F`*|9$iF`NOk^ zwmrFj{^PqR|Nnmf^Xtq1|G)nJ{`&9FxBvfs{Qv*^*N;#C|Ns2`^Yeco_5I_4UF+(( zw#@^Yx8d~{nkYif$vv{Jh43` uxwOT}A$h^IZCn3E=IdA67u-FreSkrnjg|S)ZYhM;OXk;vd$@?2>|L`Dy#qi diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-left-small.png b/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-left-small.png deleted file mode 100644 index 047d62d054c73c434ba26de311e779f517014cea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^Od!m`3?yAM{)z!9mUKs7M+S!VC(K#9UIO`&C9V-A z!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$ZGeh61AIbUZ{K}*|M821$Ij@QHTVDp p1w36GLn>}1C8Q)JBr$LpFffQSu&Ig^EeFamc)I$ztaD0e0sx=;DGmSt diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-left-strong.png b/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-left-strong.png deleted file mode 100644 index 0ecac10257cd4e38d8abba73f690c3f31655fe2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 296 zcmV+@0oVSCP)$&KRj^EZ{#uMEv~3$rIBA zghX5}_O2;t+Ox)|Z`mva$#s-U}lhV=WTwP#VH1K OD}$%2pUXO@geCxoJxUA! delta 218 zcmV<0044v00*C@3iBL{Q4GJ0x0000DNk~Le000020000S2m=5B0DQEb{gEL!e@;+L zR7Kn2=GNTf&ePi7Dk}q=;pXD!>)PPu*WTpe=Ihnk+~er%-{tAv@ A`Tzg` diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-right-highlight.png b/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-right-highlight.png deleted file mode 100644 index 58f0127cc973c9661923493f522057e9bd3a61d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^%s?!|0U{@teLW1MSkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-%!3GfMVy?68co$F`*|9$iF`NOk^ zwmrFj{^PqR|Nnmf^Xtq1|G)nJ{`&9FxBvfs{Qv*^*N;#C|Ns2`^Yeco_5I_4UF+(( zw#@^Y|pxD^&mh diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-right-small.png b/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-right-small.png deleted file mode 100644 index a19338806f849b372cde9b77d159ec00f5a5d4ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^Od!m`3?yAM{)z!9mUKs7M+S!VC(K#9UIO`&C9V-A z!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$ZGeh61AIbUZ{K}*|M821$Ij@QHTVDp p1w36GLn>}1B_yRJBrtIpFffQQu=)2!oB+x(c)I$ztaD0e0syJpDYpOs diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-right-strong.png b/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-right-strong.png deleted file mode 100644 index 75ea5f536b1799b7b4ba96a0feacded88a07248b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 296 zcmV+@0oVSCP) diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-right.png b/src/com/itmill/toolkit/terminal/gwt/public/default/panel/img/top-right.png index a9261fea2296d9d26138f64f3684f7b23817f9a3..9fc0f8663583b2e7a0bc3b26ab7b10411e36803a 100644 GIT binary patch delta 356 zcmeBRn!v2s8Q|y6%O%Cdz`(%k>ERN@z`%Y1$mZl=1Cm+mwhK&DG_Pk=@^o+rN*J z)8bDX%sh9f#LmCB{>$mS<#+%8c4L->s#vo}SL|V`3E$+KZ?xj{cg_9ge=1*_7b3}E zc~kpzz_qM}K{sF8?(YkFWuqJI#SD>i$m?3faeQsqjeL`;?ajY8m!9J&hw3VtdTggX zkNokE6;If$pkg<@9^c`gb=K-|h0Rq5c8H)t_Sq`iT&WjOB~R8y-SxeFay>71+TrHn=j+et=l-Qwrg-Q&T=%-zinh5!HnKuJVFRCwAP%1I7@AOOI? zy5g>=p#A?xH6%UEp?I-KFRKhPF-ww78rkKMQ;;B|baKlflVo{ImBfO7uBG)8U;wSa V1TZnbzTyA?002ovPDHLkV1h(6b_Dra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%$#}XrhE&{2+Ee)a+y46h|Ns8} jE#C2;@nC!d12e;-rGf>=KZyGQ)iHRw`njxgN@xNA%XBO? literal 0 HcmV?d00001 diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/splitpanel/img/bg_ver.png b/src/com/itmill/toolkit/terminal/gwt/public/default/splitpanel/img/bg_ver.png new file mode 100644 index 0000000000000000000000000000000000000000..9dfe06dafb347383dbc1584998daf68d716bfe84 GIT binary patch literal 139 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!2~3Gi;~lT6id3JuOkD)`V;1?T`z%r$r9Iy zlHmNblJdl&R0hYC{G?O`&)mfH)S%SFl*+=BsWw1GvYsxEAr-fhb`?H1yS%^tf8!7R j%lGU5ACNe~#$mv4_KaY)?ku%0< delta 154 zcmV;L0A>G>0o?(R7YZ5(0{{R3LE6USks&yLHc(7dMeXtQ>+kd9=IQJ3^X%~S^Y-}Y z?egmH^X&2T?eX>N@bv2M^5f;^=k3I$Xcv4nwucPP>L~g(ob@`~(;P8yW!-*@)r`00000NkvWt IM6N<$f_WNM^#A|> diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/tabsheet/tabsheet.css b/src/com/itmill/toolkit/terminal/gwt/public/default/tabsheet/tabsheet.css new file mode 100644 index 0000000000..21ae68b2a1 --- /dev/null +++ b/src/com/itmill/toolkit/terminal/gwt/public/default/tabsheet/tabsheet.css @@ -0,0 +1,157 @@ +.i-tabsheet, +.i-tabsheet-content, +.i-tabsheet-deco { + outline: none; /* Prevent selection outline which might break layouts or cause scrollbars */ +} + + +.i-tabsheet-tabs { + empty-cells: hide; + border-collapse: collapse; + height: 48px; + background: transparent url(img/tabs-bg.png) repeat-x bottom left; +} + +.i-tabsheet-tabs .gwt-TabBarFirst { + display: none; +} + +.i-tabsheet-tabs .gwt-TabBarRest { + border: 1px solid #b6bbbc; + background: #f8f9f9 url(img/tab-bg.png); + height: 37px; +} + +.i-tabsheet-tabs .gwt-TabBarItem { + border: 1px solid #b6bbbc; + border-right: none; + height: 20px; + padding: 9px 15px 8px 15px; + margin-top: 9px; + color: #777f85; + font-size: 15px; + line-height: 15px; + background: #f8f9f9 url(img/tab-bg.png); + cursor: pointer; +} + +.i-tabsheet-tabs .gwt-TabBarItem-selected { + border: none; + background: transparent url(../panel/img/top-left.png) no-repeat; + margin-top: -9px; + padding-left: 16px; + height: 30px; + cursor: default; + color: #ee5311; +} + +.i-tabsheet-tabs .gwt-TabBarItem:hover { + color: #4b5257; +} + +.i-tabsheet-tabs .gwt-TabBarItem-selected:hover { + color: #ee5311; +} + +.i-tabsheet-tabs .gwt-TabBarItem-selected:before { + display: block; + height: 9px; + background: transparent url(../panel/img/top-right.png) repeat-x right top; + content: ""; + margin: -9px -16px 9px -6px; +} + +.i-tabsheet-content { + border: 1px solid #babfc0; + border-top: none; + border-bottom: none; + background-color: #fff; + overflow: auto; + padding: 15px 18px 6px 18px; +} + +.i-tabsheet-deco { + height: 9px; + background: transparent url(../panel/img/bottom-right.png) repeat-x right top; + margin-left: 9px; +} + +.i-tabsheet-deco:before { + display: block; + content: ""; + width: 9px; + height: 9px; + margin-left: -9px; + background: transparent url(../panel/img/bottom-left.png) no-repeat; +} + + + + +/* Fix Safari bug (one pixel table offset) by + adding one extra pixel in every browser */ +/* Actually, let Safari be a little different, it's a bug */ +/* +.i-tabsheet-content { + margin-left: 1px; +} +.i-tabsheet-tabs .gwt-TabBarFirst { + display: block; + width: 1px; + height: 1px; + overflow: hidden; +} +.i-tabsheet { + margin-left: -1px; +} +*/ + + + + + + + + +/* IE specific styles */ +* html .i-tabsheet-content { + border-bottom: 1px solid #babfc0; +} +*+html .i-tabsheet-content { + border-bottom: 1px solid #babfc0; +} + +* html .i-tabsheet-tabs { + height: 46px; +} +*+html .i-tabsheet-tabs { + height: 46px; +} + +* html .i-tabsheet-tabs .gwt-TabBarItem-selected { + border: 1px solid #babfc0; + border-bottom: none; + background: #fff; + margin-top: 0; + height: 23px; + padding: 18px 14px 6px 15px; + cursor: default; + color: #ee5311; +} +*+html .i-tabsheet-tabs .gwt-TabBarItem-selected { + border: 1px solid #babfc0; + border-bottom: none; + background: #fff; + margin-top: 0; + height: 23px; + padding: 18px 14px 6px 15px; + cursor: default; + color: #ee5311; +} + +* html .i-tabsheet-deco { + display: none; +} +*+html .i-tabsheet-deco { + display: none; +} \ No newline at end of file diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/textfield/css/textfield.css b/src/com/itmill/toolkit/terminal/gwt/public/default/textfield/textfield.css similarity index 100% rename from src/com/itmill/toolkit/terminal/gwt/public/default/textfield/css/textfield.css rename to src/com/itmill/toolkit/terminal/gwt/public/default/textfield/textfield.css diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/tree/css/tree.css b/src/com/itmill/toolkit/terminal/gwt/public/default/tree/tree.css similarity index 100% rename from src/com/itmill/toolkit/terminal/gwt/public/default/tree/css/tree.css rename to src/com/itmill/toolkit/terminal/gwt/public/default/tree/tree.css diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/window/css/window.css b/src/com/itmill/toolkit/terminal/gwt/public/default/window/window.css similarity index 100% rename from src/com/itmill/toolkit/terminal/gwt/public/default/window/css/window.css rename to src/com/itmill/toolkit/terminal/gwt/public/default/window/window.css diff --git a/src/com/itmill/toolkit/ui/TabSheet.java b/src/com/itmill/toolkit/ui/TabSheet.java index fac5ea5d4b..41409c1f83 100644 --- a/src/com/itmill/toolkit/ui/TabSheet.java +++ b/src/com/itmill/toolkit/ui/TabSheet.java @@ -73,11 +73,11 @@ public class TabSheet extends AbstractComponentContainer implements Sizeable { */ private boolean tabsHidden; - private int height; + private int height = -1; private int heightUnit; - private int width; + private int width = -1; private int widthUnit; @@ -204,13 +204,11 @@ public class TabSheet extends AbstractComponentContainer implements Sizeable { if (areTabsHidden()) target.addAttribute("hidetabs", true); - if(width > 0) { - target.addAttribute("width", width + UNIT_SYMBOLS[widthUnit]); - } else { - target.addAttribute("width", "100%"); + if(width > -1) { + target.addAttribute("width", getWidth() + UNIT_SYMBOLS[widthUnit]); } - if(height > 0) { - target.addAttribute("height", height + UNIT_SYMBOLS[widthUnit]); + if(height > -1) { + target.addAttribute("height", getHeight() + UNIT_SYMBOLS[heightUnit]); } target.startTag("tabs"); @@ -520,17 +518,21 @@ public class TabSheet extends AbstractComponentContainer implements Sizeable { public void setHeight(int height) { this.height = height; + requestRepaint(); } public void setHeightUnits(int units) { this.heightUnit = units; + requestRepaint(); } public void setWidth(int width) { this.width = width; + requestRepaint(); } public void setWidthUnits(int units) { this.widthUnit = units; + requestRepaint(); } } -- 2.39.5