Warning: session_start(): open(/var/lib/php/sessions/sess_2h7pghr23md1dp60bor0vgfa6b, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
sbool AutoComboBox3_handleTab = true;
sclass AutoComboBox3 extends JComboBox {
F1> entryMaker; // called (serially) in non-AWT thread
ReliableSingleThread rst = new(r { update() });
S textBehindModel;
*() { this(null); }
*(F1> *entryMaker) {
setSelectedIndex(-1);
setEditable(true);
JTextField text = cast this.getEditor().getEditorComponent();
text.setFocusable(true);
text.addKeyListener(new KeyAdapter {
public void /*keyPressed*/keyReleased(KeyEvent key) {
if (key.getKeyCode() == KeyEvent.VK_ENTER) ret;
if (key.getKeyCode() == KeyEvent.VK_ESCAPE) { hidePopup(); ret; }
if (AutoComboBox3_handleTab && key.getKeyCode() == KeyEvent.VK_TAB /*&& key.getModifiers() == 0*/) {
_print("Have tab event (modifiers=" + key.getModifiers() + ")");
if (key.getModifiers() == 0 && isPopupVisible()) {
setSelectedIndex(0); // accept item
hidePopup();
} else // standard tab behavior
swing_standardTabBehavior(key);
ret;
}
JTextField tf = cast getEditor().getEditorComponent();
if (tf.getCaretPosition() != l(tf.getText())) ret;
rst.trigger();
}
});
if (AutoComboBox3_handleTab)
text.setFocusTraversalKeysEnabled(false);
}
Collection getSuggestions(S text) {
ret callF(entryMaker, text);
}
void update {
final JTextField tf = cast getEditor().getEditorComponent();
fS calculatedText = getText(tf);
swing {
if (eq(calculatedText, textBehindModel)) ret;
unswing;
final Vector list = new Vector(getSuggestions());
swing {
if (nempty(list)) {
S text = getText(tf);
setModel(new DefaultComboBoxModel(list));
textBehindModel = calculatedText;
setSelectedIndex(-1);
tf.setText(text);
showPopup();
} else
hidePopup();
}
}
}
}