import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.vaadin.client.ApplicationConnection;
import com.vaadin.client.Paintable;
+import com.vaadin.client.Profiler;
import com.vaadin.client.UIDL;
+import com.vaadin.client.communication.StateChangeEvent;
import com.vaadin.client.ui.AbstractFieldConnector;
import com.vaadin.client.ui.SimpleManagedLayout;
import com.vaadin.client.ui.VFilterSelect;
// update textbox text by a changed item caption.
private boolean oldSuggestionTextMatchTheOldSelection;
+ @Override
+ public void onStateChanged(StateChangeEvent stateChangeEvent) {
+ super.onStateChanged(stateChangeEvent);
+
+ Profiler.enter("ComboBoxConnector.onStateChanged update content");
+
+ getWidget().readonly = isReadOnly();
+ getWidget().updateReadOnly();
+
+ getWidget().immediate = getState().immediate;
+
+ getWidget().setTextInputEnabled(getState().textInputAllowed);
+
+ if (getState().inputPrompt != null) {
+ getWidget().inputPrompt = getState().inputPrompt;
+ } else {
+ getWidget().inputPrompt = "";
+ }
+
+ Profiler.leave("ComboBoxConnector.onStateChanged update content");
+ }
+
/*
* (non-Javadoc)
*
getWidget().client = client;
getWidget().paintableId = uidl.getId();
- getWidget().readonly = isReadOnly();
- getWidget().updateReadOnly();
-
if (!isRealUpdate(uidl)) {
return;
}
- // Inverse logic here to make the default case (text input enabled)
- // work without additional UIDL messages
- boolean noTextInput = uidl
- .hasAttribute(ComboBoxConstants.ATTR_NO_TEXT_INPUT)
- && uidl.getBooleanAttribute(ComboBoxConstants.ATTR_NO_TEXT_INPUT);
- getWidget().setTextInputEnabled(!noTextInput);
-
// not a FocusWidget -> needs own tabindex handling
getWidget().tb.setTabIndex(getState().tabIndex);
.getStringAttribute("filteringmode"));
}
- getWidget().immediate = getState().immediate;
-
getWidget().nullSelectionAllowed = uidl.hasAttribute("nullselect");
getWidget().nullSelectItem = uidl.hasAttribute("nullselectitem")
getWidget().pageLength = uidl.getIntAttribute("pagelength");
}
- if (uidl.hasAttribute(ComboBoxConstants.ATTR_INPUTPROMPT)) {
- // input prompt changed from server
- getWidget().inputPrompt = uidl
- .getStringAttribute(ComboBoxConstants.ATTR_INPUTPROMPT);
- } else {
- getWidget().inputPrompt = "";
- }
-
- if (uidl.hasAttribute("suggestionPopupWidth")) {
- getWidget().suggestionPopupWidth = uidl
- .getStringAttribute("suggestionPopupWidth");
- } else {
- getWidget().suggestionPopupWidth = null;
- }
-
if (uidl.hasAttribute("suggestionPopupWidth")) {
getWidget().suggestionPopupWidth = uidl
.getStringAttribute("suggestionPopupWidth");
&& uidl.hasAttribute("selectedCaption")) {
// scrolling to correct page is disabled, caption is passed as a
// special parameter
- getWidget().setSelectedCaption(
- uidl.getStringAttribute("selectedCaption"));
+ getWidget().setSelectedCaption(uidl
+ .getStringAttribute("selectedCaption"));
} else {
resetSelection();
}
// just clear the input if the value has changed from something
// else to null
if (getWidget().selectedOptionKey != null
- || (getWidget().allowNewItem && !getWidget().tb
- .getValue().isEmpty())) {
+ || (getWidget().allowNewItem
+ && !getWidget().tb.getValue().isEmpty())) {
boolean openedPopupWithNonScrollingMode = (getWidget().popupOpenerClicked
&& getWidget().getSelectedCaption() != null);
if (!openedPopupWithNonScrollingMode) {
- getWidget().tb.setValue("");
+ getWidget().tb.setValue("");
} else {
getWidget().tb
.setValue(getWidget().getSelectedCaption());
import com.vaadin.server.PaintException;
import com.vaadin.server.PaintTarget;
import com.vaadin.server.Resource;
-import com.vaadin.shared.ui.combobox.ComboBoxConstants;
import com.vaadin.shared.ui.combobox.ComboBoxState;
import com.vaadin.shared.ui.combobox.FilteringMode;
public String getStyle(ComboBox source, Object itemId);
}
- private String inputPrompt = null;
-
/**
* Holds value of property pageLength. 0 disables paging.
*/
* @return the current input prompt, or null if not enabled
*/
public String getInputPrompt() {
- return inputPrompt;
+ return getState(false).inputPrompt;
}
/**
* the desired input prompt, or null to disable
*/
public void setInputPrompt(String inputPrompt) {
- this.inputPrompt = inputPrompt;
- markAsDirty();
+ getState().inputPrompt = inputPrompt;
}
private boolean isFilteringNeeded() {
public void paintContent(PaintTarget target) throws PaintException {
isPainting = true;
try {
- if (inputPrompt != null) {
- target.addAttribute(ComboBoxConstants.ATTR_INPUTPROMPT,
- inputPrompt);
- }
-
- if (!textInputAllowed) {
- target.addAttribute(ComboBoxConstants.ATTR_NO_TEXT_INPUT, true);
- }
-
// clear caption change listeners
getCaptionChangeListener().clear();
* selection
*/
public void setTextInputAllowed(boolean textInputAllowed) {
- this.textInputAllowed = textInputAllowed;
- markAsDirty();
+ getState().textInputAllowed = textInputAllowed;
}
/**
* @return
*/
public boolean isTextInputAllowed() {
- return textInputAllowed;
+ return getState(false).textInputAllowed;
}
@Override
return (ComboBoxState) super.getState();
}
+ @Override
+ protected ComboBoxState getState(boolean markAsDirty) {
+ return (ComboBoxState) super.getState(markAsDirty);
+ }
+
/**
* Returns the filtered options for the current page using a container
* filter.