diff options
-rw-r--r-- | src/com/vaadin/terminal/gwt/client/ui/VTextField.java | 37 | ||||
-rw-r--r-- | src/com/vaadin/ui/TextField.java | 8 | ||||
-rw-r--r-- | tests/src/com/vaadin/tests/tickets/Ticket6003.java | 61 |
3 files changed, 92 insertions, 14 deletions
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VTextField.java b/src/com/vaadin/terminal/gwt/client/ui/VTextField.java index 2bfa3f5cdc..4ba6256b29 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VTextField.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VTextField.java @@ -67,6 +67,7 @@ public class VTextField extends TextBoxBase implements Paintable, Field, private String inputPrompt = null; private boolean prompting = false; private int lastCursorPos = -1; + private boolean wordwrap = true; public VTextField() { this(DOM.createInputText()); @@ -108,8 +109,7 @@ public class VTextField extends TextBoxBase implements Paintable, Field, } if (listenTextChangeEvents - && (event.getTypeInt() & TEXTCHANGE_EVENTS) == event - .getTypeInt()) { + && (event.getTypeInt() & TEXTCHANGE_EVENTS) == event.getTypeInt()) { deferTextChangeEvent(); } @@ -199,20 +199,18 @@ public class VTextField extends TextBoxBase implements Paintable, Field, inputPrompt = uidl.getStringAttribute(ATTR_INPUTPROMPT); - setMaxLength(uidl.hasAttribute("maxLength") ? uidl - .getIntAttribute("maxLength") : -1); + setMaxLength(uidl.hasAttribute("maxLength") ? uidl.getIntAttribute("maxLength") + : -1); immediate = uidl.getBooleanAttribute("immediate"); listenTextChangeEvents = client.hasEventListeners(this, "ie"); if (listenTextChangeEvents) { - textChangeEventMode = uidl - .getStringAttribute(ATTR_TEXTCHANGE_EVENTMODE); + textChangeEventMode = uidl.getStringAttribute(ATTR_TEXTCHANGE_EVENTMODE); if (textChangeEventMode.equals(TEXTCHANGE_MODE_EAGER)) { textChangeEventTimeout = 1; } else { - textChangeEventTimeout = uidl - .getIntAttribute(ATTR_TEXTCHANGE_TIMEOUT); + textChangeEventTimeout = uidl.getIntAttribute(ATTR_TEXTCHANGE_TIMEOUT); } sinkEvents(TEXTCHANGE_EVENTS); attachCutEventListener(getElement()); @@ -222,8 +220,8 @@ public class VTextField extends TextBoxBase implements Paintable, Field, setColumns(new Integer(uidl.getStringAttribute("cols")).intValue()); } - final String text = uidl.hasVariable("text") ? uidl - .getStringVariable("text") : null; + final String text = uidl.hasVariable("text") ? uidl.getStringVariable("text") + : null; setPrompting(inputPrompt != null && focusedTextField != this && (text == null || text.equals(""))); @@ -280,6 +278,11 @@ public class VTextField extends TextBoxBase implements Paintable, Field, } }); } + + // For backward compatibility; to be moved to TextArea + if (uidl.hasAttribute("wordwrap")) { + setWordwrap(uidl.getBooleanAttribute("wordwrap")); + } } protected void onCut() { @@ -538,4 +541,18 @@ public class VTextField extends TextBoxBase implements Paintable, Field, valueChange(false); } + // For backward compatibility; to be moved to TextArea + public void setWordwrap(boolean enabled) { + if (enabled == wordwrap) + return; // No change + + if (enabled) { + DOM.removeElementAttribute(getElement(), "wrap"); + DOM.setStyleAttribute(getElement(), "overflow", null); + } else { + DOM.setElementAttribute(getElement(), "wrap", "off"); + DOM.setStyleAttribute(getElement(), "overflow", "auto"); + } + wordwrap = enabled; + } } diff --git a/src/com/vaadin/ui/TextField.java b/src/com/vaadin/ui/TextField.java index 245c498959..e4a48f52de 100644 --- a/src/com/vaadin/ui/TextField.java +++ b/src/com/vaadin/ui/TextField.java @@ -198,9 +198,9 @@ public class TextField extends AbstractTextField implements if (rows != 0) { target.addAttribute("rows", String.valueOf(rows)); target.addAttribute("multiline", true); - if (!isWordwrap()) { - target.addAttribute("wordwrap", false); - } + + // For backward compatibility; to be moved to TextArea + target.addAttribute("wordwrap", isWordwrap()); } if (getInputPrompt() != null) { @@ -484,7 +484,7 @@ public class TextField extends AbstractTextField implements textChangeEventPending = true; } - /* ** Text Change Events ** */ + /* ** Text Change Events ** */ /** * Sets the mode how the TextField triggers {@link TextChangeEvent}s. diff --git a/tests/src/com/vaadin/tests/tickets/Ticket6003.java b/tests/src/com/vaadin/tests/tickets/Ticket6003.java new file mode 100644 index 0000000000..4e3f129a6a --- /dev/null +++ b/tests/src/com/vaadin/tests/tickets/Ticket6003.java @@ -0,0 +1,61 @@ +package com.vaadin.tests.tickets;
+
+import com.vaadin.data.Property;
+import com.vaadin.data.Property.ValueChangeEvent;
+import com.vaadin.tests.components.TestBase;
+import com.vaadin.ui.CheckBox;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.TextArea;
+import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.Window;
+
+public class Ticket6003 extends TestBase {
+
+ @Override
+ public void setup() {
+ Window main = new Window("The Main Window");
+ setMainWindow(main);
+
+ final VerticalLayout mainLayout = new VerticalLayout();
+ main.setContent(mainLayout);
+
+ HorizontalLayout layout = new HorizontalLayout();
+
+ TextArea area1 = new TextArea("Wrapping");
+ area1.setWordwrap(true); // The default
+ area1.setValue("A quick brown fox jumps over the lazy dog");
+
+ final TextArea area2 = new TextArea("Nonwrapping");
+ area2.setWordwrap(false);
+ area2.setValue("Victor jagt zwölf Boxkämpfer quer "
+ + "über den Sylter Deich");
+
+ layout.addComponent(area1);
+ layout.addComponent(area2);
+ layout.setSpacing(true);
+
+ mainLayout.addComponent(layout);
+
+ CheckBox onoff = new CheckBox("Wrap state for the right field");
+ onoff.setValue(false);
+ onoff.addListener(new Property.ValueChangeListener() {
+ @Override
+ public void valueChange(ValueChangeEvent event) {
+ area2.setWordwrap((Boolean) event.getProperty().getValue());
+ }
+ });
+ onoff.setImmediate(true);
+
+ mainLayout.addComponent(onoff);
+ }
+
+ @Override
+ protected String getDescription() {
+ return "";
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return 6003;
+ }
+}
|