From 70c02ffa756f1e38332cd306d31683f55bf13839 Mon Sep 17 00:00:00 2001 From: Jouni Koivuviita Date: Mon, 8 Oct 2007 10:29:16 +0000 Subject: [PATCH] -WidgetSet naming change: "paging"-style table should now be IPagingTable.java. -FilterSelect styles 60% done. -Panel sizing (iLayout) refactored (again). -Tabsheet sizing now done before content rendering. -Util.isIE refactored to isIE6. -ExpandLayout(int orientation) constructor added. -API change: Select now has setColumns(). svn changeset:2454/svn branch:trunk --- .../terminal/gwt/client/DefaultWidgetSet.java | 8 +- .../toolkit/terminal/gwt/client/Util.java | 9 +- .../terminal/gwt/client/ui/IExpandLayout.java | 4 +- .../terminal/gwt/client/ui/IFilterSelect.java | 50 ++++++++++- .../terminal/gwt/client/ui/IPanel.java | 75 +++++++--------- .../terminal/gwt/client/ui/ITabsheet.java | 46 +++++----- .../gwt/public/default/common/common.css | 71 ++++++++------- .../public/default/datefield/datefield.css | 33 +++---- .../gwt/public/default/panel/panel.css | 7 +- .../public/default/select/filterselect.css | 81 +++++++++++++++--- .../default/select/img/bg-left-filter.png | Bin 0 -> 379 bytes .../default/select/img/bg-right-filter.png | Bin 0 -> 477 bytes .../gwt/public/default/table/table.css | 6 ++ .../gwt/public/default/tabsheet/tabsheet.css | 2 +- .../public/default/textfield/textfield.css | 5 +- src/com/itmill/toolkit/ui/ExpandLayout.java | 5 ++ src/com/itmill/toolkit/ui/Select.java | 36 +++++--- 17 files changed, 273 insertions(+), 165 deletions(-) create mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/select/img/bg-left-filter.png create mode 100644 src/com/itmill/toolkit/terminal/gwt/public/default/select/img/bg-right-filter.png diff --git a/src/com/itmill/toolkit/terminal/gwt/client/DefaultWidgetSet.java b/src/com/itmill/toolkit/terminal/gwt/client/DefaultWidgetSet.java index baaef447d1..6112f98884 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/DefaultWidgetSet.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/DefaultWidgetSet.java @@ -214,13 +214,9 @@ public class DefaultWidgetSet implements WidgetSet { return "com.itmill.toolkit.terminal.gwt.client.ui.ITextField"; } } else if ("table".equals(tag)) { - if (uidl.hasAttribute("style")) { - if ("paging".equals(uidl.getStringAttribute("style"))) { - return "com.itmill.toolkit.terminal.gwt.client.ui.ITablePaging"; - } - } else { return "com.itmill.toolkit.terminal.gwt.client.ui.IScrollTable"; - } + } else if("pagingtable".equals(tag)) { + return "com.itmill.toolkit.terminal.gwt.client.ui.ITablePaging"; } else if ("datefield".equals(tag)) { if (uidl.hasAttribute("style")) { if ("calendar".equals(uidl.getStringAttribute("style"))) { diff --git a/src/com/itmill/toolkit/terminal/gwt/client/Util.java b/src/com/itmill/toolkit/terminal/gwt/client/Util.java index 9af2794ff0..ce993f13bc 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/Util.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/Util.java @@ -20,14 +20,13 @@ public class Util { }-*/; /** - * Detects if current browser is IE6. Use to isola + * Detects if current browser is IE. * - * @return true if IE6 + * @return true if IE */ - public static native boolean isIE6() /*-{ + public static native boolean isIE() /*-{ var browser=$wnd.navigator.appName; - var version=parseFloat($wnd.navigator.appVersion); - if (browser=="Microsoft Internet Explorer" && (version < 7) ) { + if (browser=="Microsoft Internet Explorer") { return true; } return false; diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IExpandLayout.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IExpandLayout.java index 751ea4924c..ecbfcf35a7 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IExpandLayout.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IExpandLayout.java @@ -137,7 +137,7 @@ public class IExpandLayout extends IOrderedLayout implements // add temp element to make some measurements Element meter = createWidgetWrappper(); DOM.setStyleAttribute(meter, "overflow", "hidden"); - DOM.setStyleAttribute(meter, "height", "0px"); + DOM.setStyleAttribute(meter, "height", "0"); DOM.appendChild(childContainer, meter); int usedSpace = DOM.getElementPropertyInt(meter, "offsetTop") - DOM.getElementPropertyInt(DOM.getFirstChild(childContainer), @@ -147,6 +147,8 @@ public class IExpandLayout extends IOrderedLayout implements int freeSpace = getOffsetHeight() - usedSpace; DOM.setStyleAttribute(expandedElement, "height", freeSpace + "px"); + // Component margins will bleed if overflow is not hidden + DOM.setStyleAttribute(expandedElement, "overflow", "hidden"); DOM.setStyleAttribute(expandedWidget.getElement(), "position", origiginalPositioning); 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 72bc9358af..cd28799e71 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java @@ -23,6 +23,7 @@ import com.google.gwt.user.client.ui.SuggestOracle.Suggestion; import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection; import com.itmill.toolkit.terminal.gwt.client.Paintable; import com.itmill.toolkit.terminal.gwt.client.UIDL; +import com.itmill.toolkit.terminal.gwt.client.Util; /** * @@ -264,7 +265,7 @@ public class IFilterSelect extends Composite implements Paintable, private final SuggestionPopup suggestionPopup = new SuggestionPopup(); - private final HTML popupOpener = new HTML("v"); + private final HTML popupOpener = new HTML(""); private final Image selectedItemIcon = new Image(); @@ -372,6 +373,7 @@ public class IFilterSelect extends Composite implements Paintable, currentSuggestions.clear(); UIDL options = uidl.getChildUIDL(0); totalSuggestions = options.getIntAttribute("totalMatches"); + String captions = ""; if (clientSideFiltering) { allSuggestions = new ArrayList(); } @@ -387,6 +389,11 @@ public class IFilterSelect extends Composite implements Paintable, tb.setText(suggestion.getReplacementString()); currentSuggestion = suggestion; } + + // Collect captions so we can calculate minimum width for textarea + if(captions.length() > 0) + captions += "|"; + captions += suggestion.getReplacementString(); } if (filtering && lastFilter.equals(uidl.getStringVariable("filter"))) { @@ -394,6 +401,23 @@ public class IFilterSelect extends Composite implements Paintable, totalSuggestions); filtering = false; } + + // Calculate minumum textarea width + int minw = minWidth(captions); + if(Util.isIE()) { + Element spacer = DOM.createDiv(); + DOM.setStyleAttribute(spacer, "width", minw+"px"); + DOM.setStyleAttribute(spacer, "height", "0"); + DOM.setStyleAttribute(spacer, "overflow", "hidden"); + DOM.appendChild(panel.getElement(), spacer); + } else { + DOM.setStyleAttribute(tb.getElement(), "minWidth", minw+"px"); + } + + // Set columns (width) is given + if(uidl.hasAttribute("cols")) + DOM.setStyleAttribute(getElement(), "width", uidl.getIntAttribute("cols")+"em"); + } public void onSuggestionSelected(FilterSelectSuggestion suggestion) { @@ -480,4 +504,28 @@ public class IFilterSelect extends Composite implements Paintable, tb.setFocus(true); tb.selectAll(); } + + /* + * Calculate minumum width for FilterSelect textarea + */ + private native int minWidth(String captions) /*-{ + if(!captions || captions.length <= 0) + return 0; + captions = captions.split("|"); + var d = $wnd.document.createElement("div"); + var html = ""; + for(var i=0; i < captions.length; i++) { + html += "
" + captions[i] + "
"; + // TODO apply same CSS classname as in suggestionmenu + } + d.style.position = "absolute"; + d.style.top = "0"; + d.style.left = "0"; + d.style.visibility = "hidden"; + d.innerHTML = html; + $wnd.document.body.appendChild(d); + var w = d.offsetWidth; + $wnd.document.body.removeChild(d); + return w; + }-*/; } 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 bebb6da93a..1926575903 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IPanel.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IPanel.java @@ -24,6 +24,8 @@ public class IPanel extends SimplePanel implements Paintable, private Element bottomDecoration = DOM.createDiv(); private Element contentNode = DOM.createDiv(); + + private String height; public IPanel() { super(); @@ -54,30 +56,21 @@ public class IPanel extends SimplePanel implements Paintable, this.client = client; this.id = uidl.getId(); - // Size panel - String h = uidl.hasVariable("height") ? uidl - .getStringVariable("height") : null; + // Panel size. Height needs to be saved for later use String w = uidl.hasVariable("width") ? uidl.getStringVariable("width") : null; - + height = uidl.hasVariable("height") ? uidl.getStringVariable("height") + : null; setWidth(w != null ? w : ""); - if (h != null) { - setHeight(h); - } else { - DOM.setStyleAttribute(contentNode, "height", ""); - // 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(contentNode, "overflow", "hidden"); - } - // TODO optimize: if only the caption has changed, don't re-render whole // content if (getWidget() != null) { clear(); } + // Add proper style name for root element + // TODO refactor to support additional styles set from server-side if (uidl.hasAttribute("style")) setStyleName(CLASSNAME + " " + CLASSNAME + "-" + uidl.getStringAttribute("style")); @@ -91,14 +84,15 @@ public class IPanel extends SimplePanel implements Paintable, DOM.setElementProperty(captionNode, "className", CLASSNAME + "-caption"); } else { - // Theme needs this to work around different paddings + // Theme needs this to work around different styling DOM.setElementProperty(captionNode, "className", CLASSNAME + "-nocaption"); DOM.setInnerHTML(captionNode, ""); } - + + // Height adjustment iLayout(); - + // Render content UIDL layoutUidl = uidl.getChildUIDL(0); Widget layout = client.getWidget(layoutUidl); @@ -108,36 +102,25 @@ public class IPanel extends SimplePanel implements Paintable, } public void iLayout() { - String h = DOM.getStyleAttribute(getElement(), "height"); - if (h != null && h != "") { - // need to fix containers height properly - - boolean hasChildren = getWidget() != null; - Element contentEl = null; - String origPositioning = null; - if (hasChildren) { - // remove children temporary form normal flow to detect proper - // size - contentEl = getWidget().getElement(); - origPositioning = DOM.getStyleAttribute(contentEl, "position"); - DOM.setStyleAttribute(contentEl, "position", "absolute"); - } + // In this case we need to fix containers height properly + if (height != null && height != "") { + // First, calculate needed pixel height + setHeight(height); + int neededHeight = getOffsetHeight(); + setHeight(""); + // Then calculate the size the content area needs to be + DOM.setStyleAttribute(contentNode, "height", "0"); + DOM.setStyleAttribute(contentNode, "overflow", "hidden"); + int h = getOffsetHeight(); + int total = neededHeight-h; + if(total < 0) + total = 0; + DOM.setStyleAttribute(contentNode, "height", total + "px"); + DOM.setStyleAttribute(contentNode, "overflow", ""); + } else { DOM.setStyleAttribute(contentNode, "height", ""); - int availableH = DOM.getElementPropertyInt(getElement(), - "clientHeight"); - - int usedH = DOM - .getElementPropertyInt(bottomDecoration, "offsetTop") - - DOM.getElementPropertyInt(getElement(), "offsetTop") - + DOM.getElementPropertyInt(bottomDecoration, - "offsetHeight"); - int contentH = availableH - usedH; - if (contentH < 0) - contentH = 0; - DOM.setStyleAttribute(contentNode, "height", contentH + "px"); - if (hasChildren) { - DOM.setStyleAttribute(contentEl, "position", origPositioning); - } + // We don't need overflow:auto when height is not set + DOM.setStyleAttribute(contentNode, "overflow", "hidden"); } Util.runAnchestorsLayout(this); } 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 c11e7a2ab2..03d4a45598 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheet.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheet.java @@ -74,6 +74,29 @@ public class ITabsheet extends FlowPanel implements Paintable { // Use cached sub-tree if available if(uidl.getBooleanAttribute("cached")) return; + + // 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 calculate the height as close as possible + if(h!=null) { + // First, calculate needed pixel height + setHeight(h); + int neededHeight = getOffsetHeight(); + setHeight(""); + // Then calculate the size the content area needs to be + tp.setHeight("0"); + DOM.setStyleAttribute(tp.getElement(), "overflow", "hidden"); + int height = getOffsetHeight(); + tp.setHeight(neededHeight-height + "px"); + DOM.setStyleAttribute(tp.getElement(), "overflow", ""); + } else { + tp.setHeight("auto"); + // We don't need overflow:auto when tabsheet height is not set + DOM.setStyleAttribute(tp.getElement(), "overflow", "hidden"); + } UIDL tabs = uidl.getChildUIDL(0); boolean keepCurrentTabs = tabKeys.size() == tabs.getNumberOfChildren(); @@ -89,8 +112,6 @@ public class ITabsheet extends FlowPanel implements Paintable { if (tab.getBooleanAttribute("selected")) { activeTabIndex = index; UIDL contentUIDL = tab.getChildUIDL(0); - - // Otherwise render new content Widget content = client.getWidget(contentUIDL); ((Paintable)content).updateFromUIDL(contentUIDL, client); tp.remove(index); @@ -129,27 +150,6 @@ public class ITabsheet extends FlowPanel implements Paintable { // 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"); - } } 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 index 83fb91f904..b60375cb83 100644 --- a/src/com/itmill/toolkit/terminal/gwt/public/default/common/common.css +++ b/src/com/itmill/toolkit/terminal/gwt/public/default/common/common.css @@ -4,34 +4,45 @@ html, body { height:100%; } -#itmtk-ajax-window { - background: #e9eced; - font-family: "Trebuchet MS", geneva, helvetica, arial, tahoma, verdana, sans-serif; - color: #464f52; - font-size: 12px; - line-height: 18px; - height:100%; +#itmtk-ajax-window { + background: #e9eced; + font-family: "Trebuchet MS", geneva, helvetica, arial, tahoma, verdana, sans-serif; + color: #464f52; + font-size: 13px; + line-height: 18px; } .i-view { height:100%; -} - -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); -} - +} + +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); +} + +/** + * Layout styles + */ + +.i-orderedlayout { + margin: 15px 18px; +} + +/** + * Context menu styles + */ + .i-contextmenu { background: #e9eced; font-family: "Trebuchet MS", geneva, helvetica, arial, tahoma, verdana, sans-serif; @@ -78,11 +89,11 @@ select { margin-right: 10px; vertical-align: middle; } - -/* 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; + +/* Provide some extra whitespace for wrapped elements + (these elements usually need the extra space, since + they aren't even handling their own caption) */ +.i-captionwrapper { + margin: 0.3em 0 0 0; } diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/datefield/datefield.css b/src/com/itmill/toolkit/terminal/gwt/public/default/datefield/datefield.css index bbad2bacb9..c541daea35 100644 --- a/src/com/itmill/toolkit/terminal/gwt/public/default/datefield/datefield.css +++ b/src/com/itmill/toolkit/terminal/gwt/public/default/datefield/datefield.css @@ -1,3 +1,12 @@ +.i-datefield .i-button { + width: 22px; + height: 20px; + padding: 0; + overflow: hidden; + border: none; + background: transparent url(../icons/16/calendar.png) no-repeat 50% 50%; + text-indent: -90000px; +} .i-datefield-calendarpanel { width: 22em; } @@ -12,12 +21,12 @@ .i-datefield-calendarpanel .i-button { width: 22px; height: 22px; - font-size: 1.1em; + font-size: 0.9em; padding: 0; - line-height: 1em; + line-height: 0.9em; } .i-datefield-calendarpanel-month { - font-size: 1.1em; + font-size: 1em; } .i-datefield-calendarpanel-day { cursor: pointer; @@ -65,22 +74,8 @@ padding: 5px; background: #fff; } -.i-datefield-calendar:before { - display: block; - height: 2px; - overflow: hidden; - background: transparent url(../../panel/img/top-right-small.png) no-repeat right top; - content: url(../../panel/img/top-left-small.png); - margin: -6px -6px 3px -6px; -} -.i-datefield-calendar:after { - display: block; - height: 2px; - overflow: hidden; - background: transparent url(../../panel/img/bottom-right.png) no-repeat right top; - content: url(../../panel/img/bottom-left.png); - margin: 5px -6px -6px -6px; -} + + .i-datefield-entrycalendar-hours { height: 150px; diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/panel/panel.css b/src/com/itmill/toolkit/terminal/gwt/public/default/panel/panel.css index dc15fcd04a..9b91f64438 100644 --- a/src/com/itmill/toolkit/terminal/gwt/public/default/panel/panel.css +++ b/src/com/itmill/toolkit/terminal/gwt/public/default/panel/panel.css @@ -52,7 +52,7 @@ border-bottom: none; background-color: #fff; overflow: auto; - padding: 15px 18px 6px 18px; + /*padding: 15px 18px 6px 18px;*/ } .i-panel-deco { @@ -117,13 +117,14 @@ .i-tabsheet .i-panel-light .i-panel-caption { border-left: none; border-right: none; - margin: -16px -18px 0 -18px; + /*margin: -16px -18px 0 -18px;*/ + margin-top: -1px; padding-top: 14px; border-top: 1px solid #babfc0; } .i-panel .i-panel-light .i-panel-content, .i-tabsheet .i-panel-light .i-panel-content { - margin: 0 -18px 16px -18px; + /*margin: 0 -18px 16px -18px;*/ } diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/select/filterselect.css b/src/com/itmill/toolkit/terminal/gwt/public/default/select/filterselect.css index 3e8ab642cb..04f1207343 100644 --- a/src/com/itmill/toolkit/terminal/gwt/public/default/select/filterselect.css +++ b/src/com/itmill/toolkit/terminal/gwt/public/default/select/filterselect.css @@ -1,24 +1,50 @@ -.i-filterselect-suggestpopup { - background: #fff; - font-size:small; +.i-filterselect { + height: 23px; + background: transparent url(img/bg-left-filter.png) no-repeat; + margin-right: 1px; + white-space: nowrap; } -.i-filterselect-suggestmenu .gwt-MenuItem { - border: 1px solid black; - border-width: 0 1px 1px 1px; +.i-filterselect-input { + border: none; + background: transparent; + width: 97%; + height: 20px; + margin: 3px 0 0 4px; + padding: 0; + font-size: 13px; } -.i-filterselect-suggestmenu .gwt-MenuItem-selected { - background: yellow; +.i-filterselect-button { + float: right; + margin: -23px -1px 0 0; + width: 25px; + height: 23px; + cursor: pointer; + background: transparent url(img/bg-right-filter.png); + position: relative; +} +.i-filterselect-button:hover { + background-position: bottom left; } -.i-filterselect { - white-space: nowrap; +.i-filterselect-suggestpopup { + background: #f6f7f7; + border: 1px solid #b6bbbc; + font-family: "Trebuchet MS", geneva, helvetica, arial, tahoma, verdana, sans-serif; + color: #464f52; + font-size: 12px; + line-height: 18px; } -.i-filterselect-button { - display:inline; - background:red; +.i-filterselect-suggestmenu .gwt-MenuItem { + padding: 1px 5px; + cursor: pointer; +} + +.i-filterselect-suggestmenu .gwt-MenuItem-selected { + background: #c6cccd; + color: #444d4e; } .i-filterselect-nextpage-on, @@ -34,3 +60,32 @@ color: #666; } + + + +/* IE specific styles */ + +* html .i-filterselect { + +} +* html .i-filterselect-input { + margin-top: 2px; +} + +/* For some silly reason IE6 leaks some negative margins to the text input */ +* html .i-panel .i-panel-light .i-panel-content .i-filterselect-input, +* html .i-tabsheet .i-panel-light .i-panel-content .i-filterselect-input { + margin-left: 22px; +} +*+html .i-filterselect-input { + margin-top: 1px; +} +* html .i-filterselect-button { + position: static; + display: inline; + margin-top: -24px; +} +*+html .i-filterselect-button { + position: static; +} + diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/select/img/bg-left-filter.png b/src/com/itmill/toolkit/terminal/gwt/public/default/select/img/bg-left-filter.png new file mode 100644 index 0000000000000000000000000000000000000000..2a11f324caa429e20472e2bf2990dbc2805c2aee GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0y~yV7&umi*qmoNwq(3VtQ&&YGO)d;mK4Rpd!BjpAgqQ2M>Mu^5w&a4>xY# z`TF(izkmNOUb%Ac;K3cc_nbR-?*04s-+%mg`0(M)J9lp1zWw|6@4W{PUB7wj*s){# z4jn#z{P^R?kH3BUwr%&G|6t&GV{~AOwr(dUJI80?1cvQ#3IBB7FK!1qjKR~@&t;ucLK6TB$iLkH literal 0 HcmV?d00001 diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/select/img/bg-right-filter.png b/src/com/itmill/toolkit/terminal/gwt/public/default/select/img/bg-right-filter.png new file mode 100644 index 0000000000000000000000000000000000000000..c09d3632c25763334359b1595cae3adb9c00da57 GIT binary patch literal 477 zcmeAS@N?(olHy`uVBq!ia0vp^l0dA-!3-o{c{sTMDVB6cUq=Rp^(V|(yIz76l(C#5QQ<|d}62BjvZR2H60wE-&X3h)VWy&uCqXYrEziJS|Uuh?_& z(3dY?zJC4s;lqc2|NiaRz31T36D!wmc-5_Yo;#*zjgb=BL8_ymhL-r_(i4kxpU`^9Xs}_RekTl!&`UnK6vop z+AUiaEMM{a_wSo`?i@dU{PE+*-@bj@wtLTiFxb}hb_LK?dL==A!4MH5NrtBW;!vQ@ z`JOJ0Ar-ftOghciV(_IpK&LWzy85}Sb4q9e0BUmrS^xk5 literal 0 HcmV?d00001 diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/table/table.css b/src/com/itmill/toolkit/terminal/gwt/public/default/table/table.css index 459c0b0b59..914c469958 100644 --- a/src/com/itmill/toolkit/terminal/gwt/public/default/table/table.css +++ b/src/com/itmill/toolkit/terminal/gwt/public/default/table/table.css @@ -3,6 +3,12 @@ overflow: hidden; } +.i-table.table-inline { + border-left: none; + border-right: none; + /*margin: -16px -18px 0 -18px;*/ +} + .i-table-header-wrap { height: 36px; background: #e7edf3 url(img/header-bg.png) repeat-x; 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 index 21ae68b2a1..bc25835680 100644 --- a/src/com/itmill/toolkit/terminal/gwt/public/default/tabsheet/tabsheet.css +++ b/src/com/itmill/toolkit/terminal/gwt/public/default/tabsheet/tabsheet.css @@ -67,7 +67,7 @@ border-bottom: none; background-color: #fff; overflow: auto; - padding: 15px 18px 6px 18px; + /*padding: 15px 18px 6px 18px;*/ } .i-tabsheet-deco { diff --git a/src/com/itmill/toolkit/terminal/gwt/public/default/textfield/textfield.css b/src/com/itmill/toolkit/terminal/gwt/public/default/textfield/textfield.css index da7bbf32d7..c8d695b724 100644 --- a/src/com/itmill/toolkit/terminal/gwt/public/default/textfield/textfield.css +++ b/src/com/itmill/toolkit/terminal/gwt/public/default/textfield/textfield.css @@ -1,7 +1,5 @@ .i-textfield { - font-size: 1.1em; - color: #444; - background: #fff url(../img/bg.png) repeat-x; + background: #fff url(img/bg.png) repeat-x; padding: 2px; border: 1px solid #b6b6b6; border-top-color: #9d9d9d; @@ -11,7 +9,6 @@ } .i-textfield-focus { - color: #111; border-color: #4376c3; border-bottom-color: #6696dd; border-right-color: #6696dd; diff --git a/src/com/itmill/toolkit/ui/ExpandLayout.java b/src/com/itmill/toolkit/ui/ExpandLayout.java index a03d18f210..8a0b412bac 100644 --- a/src/com/itmill/toolkit/ui/ExpandLayout.java +++ b/src/com/itmill/toolkit/ui/ExpandLayout.java @@ -36,6 +36,11 @@ public class ExpandLayout extends OrderedLayout implements Sizeable { public ExpandLayout() { } + + public ExpandLayout(int orientation) { + this(); + setOrientation(orientation); + } /** * @param c diff --git a/src/com/itmill/toolkit/ui/Select.java b/src/com/itmill/toolkit/ui/Select.java index e49002e8a0..c0ebf98492 100644 --- a/src/com/itmill/toolkit/ui/Select.java +++ b/src/com/itmill/toolkit/ui/Select.java @@ -28,35 +28,23 @@ package com.itmill.toolkit.ui; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.OutputStreamWriter; -import java.io.UnsupportedEncodingException; -import java.net.URL; -import java.net.URLEncoder; -import java.nio.charset.Charset; -import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.HashSet; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.Map; import java.util.Set; -import com.itmill.toolkit.Application; import com.itmill.toolkit.data.Container; import com.itmill.toolkit.data.Item; import com.itmill.toolkit.data.Property; import com.itmill.toolkit.data.util.IndexedContainer; -import com.itmill.toolkit.terminal.DownloadStream; import com.itmill.toolkit.terminal.KeyMapper; import com.itmill.toolkit.terminal.PaintException; import com.itmill.toolkit.terminal.PaintTarget; import com.itmill.toolkit.terminal.Resource; -import com.itmill.toolkit.terminal.URIHandler; import com.itmill.toolkit.ui.select.OptionFilter; import com.itmill.toolkit.ui.select.StartsWithFilter; @@ -214,6 +202,12 @@ public class Select extends AbstractField implements Container, private String filterstring; + /** + * How many visible columns (~characters) does select occupy visually. + * Used to size select appropriately. Minus one sets to 100% width. + */ + private int columns = -1; + /* Constructors ********************************************************* */ /** @@ -284,6 +278,8 @@ public class Select extends AbstractField implements Container, target.addAttribute("selectmode", "multi"); if (isNewItemsAllowed()) target.addAttribute("allownewitem", true); + if (getColumns() > -1) + target.addAttribute("cols", getColumns()); // Constructs selected keys array String[] selectedKeys; @@ -1504,4 +1500,18 @@ public class Select extends AbstractField implements Container, return optionFilter; } + /** + * Set visible columns. + */ + public void setColumns(int cols) { + this.columns = cols; + } + + /** + * Get visible columns. + */ + public int getColumns() { + return this.columns; + } + } -- 2.39.5