Author: smartini Date: Wed Feb 20 11:55:20 2013 New Revision: 1448109 URL: http://svn.apache.org/r1448109 Log: PIVOT-893: add maximumLength property to Label (like TextInput and others)
Modified: pivot/branches/2.0.x/wtk/src/org/apache/pivot/wtk/Label.java pivot/branches/2.0.x/wtk/src/org/apache/pivot/wtk/LabelListener.java pivot/branches/2.0.x/wtk/src/org/apache/pivot/wtk/skin/LabelSkin.java Modified: pivot/branches/2.0.x/wtk/src/org/apache/pivot/wtk/Label.java URL: http://svn.apache.org/viewvc/pivot/branches/2.0.x/wtk/src/org/apache/pivot/wtk/Label.java?rev=1448109&r1=1448108&r2=1448109&view=diff ============================================================================== --- pivot/branches/2.0.x/wtk/src/org/apache/pivot/wtk/Label.java (original) +++ pivot/branches/2.0.x/wtk/src/org/apache/pivot/wtk/Label.java Wed Feb 20 11:55:20 2013 @@ -52,6 +52,14 @@ public class Label extends Component { listener.textChanged(label, previousText); } } + + @Override + public void maximumLengthChanged(Label label, int previousMaximumLength) { + for (LabelListener listener : this) { + listener.maximumLengthChanged(label, previousMaximumLength); + } + } + } private static class LabelBindingListenerList extends WTKListenerList<LabelBindingListener> @@ -79,6 +87,7 @@ public class Label extends Component { } private String text = null; + private int maximumLength = 32767; private String textKey = null; private BindType textBindType = BindType.BOTH; @@ -102,7 +111,17 @@ public class Label extends Component { } public void setText(String text) { - String previousText = this.text; + // TODO: in 2.1 verify if enable this constraint (like in other classes) + // if (text == null) { + // throw new IllegalArgumentException(); + // } + // + // if (text.length() > maximumLength) { + if (text != null && text.length() > maximumLength) { + throw new IllegalArgumentException("Text length is greater than maximum length."); + } + + String previousText = this.text; if (previousText != text) { this.text = text; labelListeners.textChanged(this, previousText); @@ -120,6 +139,44 @@ public class Label extends Component { } /** + * Returns the maximum length of the label text. + * + * @return + * The maximum length of the label text. + */ + public int getMaximumLength() { + return maximumLength; + } + + /** + * Sets the maximum length of the label text. + * + * @param maximumLength + * The maximum length of the label text. + */ + public void setMaximumLength(int maximumLength) { + if (maximumLength < 0) { + throw new IllegalArgumentException("maximumLength is negative."); + } + + int previousMaximumLength = this.maximumLength; + if (previousMaximumLength != maximumLength) { + this.maximumLength = maximumLength; + + if (text != null) { + // Truncate the text, if necessary (do not allow listeners to vote on this change) + int length = text.length(); + if (length > maximumLength) { + setText(text.substring(0, maximumLength)); + } + + } + + labelListeners.maximumLengthChanged(this, previousMaximumLength); + } + } + + /** * Sets the label's text key. * * @param textKey Modified: pivot/branches/2.0.x/wtk/src/org/apache/pivot/wtk/LabelListener.java URL: http://svn.apache.org/viewvc/pivot/branches/2.0.x/wtk/src/org/apache/pivot/wtk/LabelListener.java?rev=1448109&r1=1448108&r2=1448109&view=diff ============================================================================== --- pivot/branches/2.0.x/wtk/src/org/apache/pivot/wtk/LabelListener.java (original) +++ pivot/branches/2.0.x/wtk/src/org/apache/pivot/wtk/LabelListener.java Wed Feb 20 11:55:20 2013 @@ -16,15 +16,42 @@ */ package org.apache.pivot.wtk; + /** * Label listener interface. */ public interface LabelListener { /** + * Label listener adapter. + */ + public static class Adapter implements LabelListener { + + @Override + public void textChanged(Label label, String previousText) { + // empty block + } + + @Override + public void maximumLengthChanged(Label label, int previousMaximumLength) { + // empty block + } + } + + + /** * Called when a label's text has changed. * * @param label * @param previousText */ public void textChanged(Label label, String previousText); + + /** + * Called when a label text maximum length has changed. + * + * @param label + * @param previousMaximumLength + */ + public void maximumLengthChanged(Label label, int previousMaximumLength); + } Modified: pivot/branches/2.0.x/wtk/src/org/apache/pivot/wtk/skin/LabelSkin.java URL: http://svn.apache.org/viewvc/pivot/branches/2.0.x/wtk/src/org/apache/pivot/wtk/skin/LabelSkin.java?rev=1448109&r1=1448108&r2=1448109&view=diff ============================================================================== --- pivot/branches/2.0.x/wtk/src/org/apache/pivot/wtk/skin/LabelSkin.java (original) +++ pivot/branches/2.0.x/wtk/src/org/apache/pivot/wtk/skin/LabelSkin.java Wed Feb 20 11:55:20 2013 @@ -675,4 +675,10 @@ public class LabelSkin extends Component public void textChanged(Label label, String previousText) { invalidateComponent(); } + + @Override + public void maximumLengthChanged(Label label, int previousMaximumLength) { + invalidateComponent(); + } + }