]> source.dussan.org Git - vaadin-framework.git/commitdiff
Implemented missing word wrap for TextArea (in TextField). Fixes #6003.
authorMarko Grönroos <magi@iki.fi>
Thu, 18 Nov 2010 15:40:31 +0000 (15:40 +0000)
committerMarko Grönroos <magi@iki.fi>
Thu, 18 Nov 2010 15:40:31 +0000 (15:40 +0000)
svn changeset:16045/svn branch:6.5

src/com/vaadin/terminal/gwt/client/ui/VTextField.java
src/com/vaadin/ui/TextField.java
tests/src/com/vaadin/tests/tickets/Ticket6003.java [new file with mode: 0644]

index 2bfa3f5cdcf06844e522fd435a10365f2bce1663..4ba6256b29252e8c1534eb90f48abc67548ebfac 100644 (file)
@@ -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;
+    }
 }
index 245c4989594e8b50a1292f5147e74fe8ef77c528..e4a48f52de42d8f705223ec3b370f6d9955200b1 100644 (file)
@@ -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 (file)
index 0000000..4e3f129
--- /dev/null
@@ -0,0 +1,61 @@
+package com.vaadin.tests.tickets;\r
+\r
+import com.vaadin.data.Property;\r
+import com.vaadin.data.Property.ValueChangeEvent;\r
+import com.vaadin.tests.components.TestBase;\r
+import com.vaadin.ui.CheckBox;\r
+import com.vaadin.ui.HorizontalLayout;\r
+import com.vaadin.ui.TextArea;\r
+import com.vaadin.ui.VerticalLayout;\r
+import com.vaadin.ui.Window;\r
+\r
+public class Ticket6003 extends TestBase {\r
+\r
+    @Override\r
+    public void setup() {\r
+        Window main = new Window("The Main Window");\r
+        setMainWindow(main);\r
+\r
+        final VerticalLayout mainLayout = new VerticalLayout();\r
+        main.setContent(mainLayout);\r
+\r
+        HorizontalLayout layout = new HorizontalLayout();\r
+\r
+        TextArea area1 = new TextArea("Wrapping");\r
+        area1.setWordwrap(true); // The default\r
+        area1.setValue("A quick brown fox jumps over the lazy dog");\r
+\r
+        final TextArea area2 = new TextArea("Nonwrapping");\r
+        area2.setWordwrap(false);\r
+        area2.setValue("Victor jagt zwölf Boxkämpfer quer "\r
+                + "über den Sylter Deich");\r
+\r
+        layout.addComponent(area1);\r
+        layout.addComponent(area2);\r
+        layout.setSpacing(true);\r
+\r
+        mainLayout.addComponent(layout);\r
+\r
+        CheckBox onoff = new CheckBox("Wrap state for the right field");\r
+        onoff.setValue(false);\r
+        onoff.addListener(new Property.ValueChangeListener() {\r
+            @Override\r
+            public void valueChange(ValueChangeEvent event) {\r
+                area2.setWordwrap((Boolean) event.getProperty().getValue());\r
+            }\r
+        });\r
+        onoff.setImmediate(true);\r
+\r
+        mainLayout.addComponent(onoff);\r
+    }\r
+\r
+    @Override\r
+    protected String getDescription() {\r
+        return "";\r
+    }\r
+\r
+    @Override\r
+    protected Integer getTicketNumber() {\r
+        return 6003;\r
+    }\r
+}\r