Browse Source

fixes #1133

svn changeset:3029/svn branch:trunk
tags/6.7.0.beta1
Matti Tahvonen 16 years ago
parent
commit
f28318c002
1 changed files with 60 additions and 45 deletions
  1. 60
    45
      src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java

+ 60
- 45
src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java View File

@@ -419,6 +419,7 @@ public class IFilterSelect extends Composite implements Paintable,
private int totalMatches;
private boolean allowNewItem;
private boolean nullSelectionAllowed;
private boolean enabled;

public IFilterSelect() {
selectedItemIcon.setVisible(false);
@@ -484,6 +485,14 @@ public class IFilterSelect extends Composite implements Paintable,
paintableId = uidl.getId();
this.client = client;

if (uidl.hasAttribute("disabled") || uidl.hasAttribute("readonly")) {
tb.setEnabled(false);
enabled = false;
} else {
tb.setEnabled(true);
enabled = true;
}

if (client.updateComponent(this, uidl, true)) {
return;
}
@@ -585,7 +594,7 @@ public class IFilterSelect extends Composite implements Paintable,
}

public void onKeyDown(Widget sender, char keyCode, int modifiers) {
if (suggestionPopup.isAttached()) {
if (enabled && suggestionPopup.isAttached()) {
switch (keyCode) {
case KeyboardListener.KEY_DOWN:
suggestionPopup.selectNextItem();
@@ -618,26 +627,28 @@ public class IFilterSelect extends Composite implements Paintable,
}

public void onKeyUp(Widget sender, char keyCode, int modifiers) {
switch (keyCode) {
case KeyboardListener.KEY_ENTER:
case KeyboardListener.KEY_TAB:
; // NOP
break;
case KeyboardListener.KEY_DOWN:
case KeyboardListener.KEY_UP:
case KeyboardListener.KEY_PAGEDOWN:
case KeyboardListener.KEY_PAGEUP:
if (suggestionPopup.isAttached()) {
if (enabled) {
switch (keyCode) {
case KeyboardListener.KEY_ENTER:
case KeyboardListener.KEY_TAB:
; // NOP
break;
} else {
// open popup as from gadget
filterOptions(0, "");
tb.selectAll();
case KeyboardListener.KEY_DOWN:
case KeyboardListener.KEY_UP:
case KeyboardListener.KEY_PAGEDOWN:
case KeyboardListener.KEY_PAGEUP:
if (suggestionPopup.isAttached()) {
break;
} else {
// open popup as from gadget
filterOptions(0, "");
tb.selectAll();
break;
}
default:
filterOptions(currentPage);
break;
}
default:
filterOptions(currentPage);
break;
}
}

@@ -645,39 +656,43 @@ public class IFilterSelect extends Composite implements Paintable,
* Listener for popupopener
*/
public void onClick(Widget sender) {
// ask suggestionPopup if it was just closed, we are using GWT Popup's
// auto close feature
if (!suggestionPopup.isJustClosed()) {
filterOptions(0, "");
}
DOM.eventPreventDefault(DOM.eventGetCurrentEvent());
tb.selectAll();
tb.setFocus(true);
if (enabled) {
// ask suggestionPopup if it was just closed, we are using GWT
// Popup's
// auto close feature
if (!suggestionPopup.isJustClosed()) {
filterOptions(0, "");
}
DOM.eventPreventDefault(DOM.eventGetCurrentEvent());
tb.selectAll();
tb.setFocus(true);

}
}

/*
* 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 += "<div>" + captions[i] + "</div>";
// 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;
}-*/;
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 += "<div>" + captions[i] + "</div>";
// 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;
}-*/;

public void onFocus(Widget sender) {
// NOP

Loading…
Cancel
Save