src/share/classes/java/time/format/TextStyle.java

Print this page




  44  *    and/or other materials provided with the distribution.
  45  *
  46  *  * Neither the name of JSR-310 nor the names of its contributors
  47  *    may be used to endorse or promote products derived from this software
  48  *    without specific prior written permission.
  49  *
  50  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  51  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  52  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  53  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  54  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  55  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  56  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  57  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  58  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  59  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  60  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  61  */
  62 package java.time.format;
  63 


  64 /**
  65  * Enumeration of the style of text output to use.



  66  * <p>
  67  * This defines the "size" of the text to be output.









  68  *
  69  * <h3>Specification for implementors</h3>
  70  * This is immutable and thread-safe enum.
  71  *
  72  * @since 1.8
  73  */
  74 public enum TextStyle {
  75     // ordered from large to small

  76 
  77     /**
  78      * Full text, typically the full description.
  79      * For example, day-of-week Monday might output "Monday".
  80      */
  81     FULL,





  82     /**
  83      * Short text, typically an abbreviation.
  84      * For example, day-of-week Monday might output "Mon".
  85      */
  86     SHORT,





  87     /**
  88      * Narrow text, typically a single letter.
  89      * For example, day-of-week Monday might output "M".
  90      */
  91     NARROW;















































  92 












  93 }


  44  *    and/or other materials provided with the distribution.
  45  *
  46  *  * Neither the name of JSR-310 nor the names of its contributors
  47  *    may be used to endorse or promote products derived from this software
  48  *    without specific prior written permission.
  49  *
  50  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  51  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  52  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  53  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  54  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  55  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  56  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  57  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  58  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  59  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  60  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  61  */
  62 package java.time.format;
  63 
  64 import java.util.Calendar;
  65 
  66 /**
  67  * Enumeration of the style of text formatting and parsing.
  68  * <p>
  69  * Text styles define three sizes for the formatted text - 'full', 'short' and 'narrow'.
  70  * Each of these three sizes is available in both 'standard' and 'stand-alone' variations.
  71  * <p>
  72  * The difference between the three sizes is obvious in most languages.
  73  * For example, in English the 'full' month is 'January', the 'short' month is 'Jan'
  74  * and the 'narrow' month is 'J'. Note that the narrow size is often not unique.
  75  * For example, 'January', 'June' and 'July' all have the 'narrow' text 'J'.
  76  * <p>
  77  * The difference between the 'standard' and 'stand-alone' forms is trickier to describe
  78  * as there is no difference in English. However, in other languages there is a difference
  79  * in the word used when the text is used alone, as opposed to in a complete date.
  80  * For example, the word used for a month when used alone in a date picker is different
  81  * to the word used for month in association with a day and year in a date.
  82  *
  83  * <h3>Specification for implementors</h3>
  84  * This is immutable and thread-safe enum.


  85  */
  86 public enum TextStyle {
  87     // ordered from large to small
  88     // ordered so that bit 0 of the ordinal indicates stand-alone.
  89 
  90     /**
  91      * Full text, typically the full description.
  92      * For example, day-of-week Monday might output "Monday".
  93      */
  94     FULL(Calendar.LONG_FORMAT, 0),
  95     /**
  96      * Full text for stand-alone use, typically the full description.
  97      * For example, day-of-week Monday might output "Monday".
  98      */
  99     FULL_STANDALONE(Calendar.LONG_STANDALONE, 0),
 100     /**
 101      * Short text, typically an abbreviation.
 102      * For example, day-of-week Monday might output "Mon".
 103      */
 104     SHORT(Calendar.SHORT_FORMAT, 1),
 105     /**
 106      * Short text for stand-alone use, typically an abbreviation.
 107      * For example, day-of-week Monday might output "Mon".
 108      */
 109     SHORT_STANDALONE(Calendar.SHORT_STANDALONE, 1),
 110     /**
 111      * Narrow text, typically a single letter.
 112      * For example, day-of-week Monday might output "M".
 113      */
 114     NARROW(Calendar.NARROW_FORMAT, 1),
 115     /**
 116      * Narrow text for stand-alone use, typically a single letter.
 117      * For example, day-of-week Monday might output "M".
 118      */
 119     NARROW_STANDALONE(Calendar.NARROW_STANDALONE, 1);
 120 
 121     private final int calendarStyle;
 122     private final int zoneNameStyleIndex;
 123 
 124     private TextStyle(int calendarStyle, int zoneNameStyleIndex) {
 125         this.calendarStyle = calendarStyle;
 126         this.zoneNameStyleIndex = zoneNameStyleIndex;
 127     }
 128 
 129     /**
 130      * Returns true if the Style is a stand-alone style.
 131      * @return true if the style is a stand-alone style.
 132      */
 133     public boolean isStandalone() {
 134         return (ordinal() & 1) == 1;
 135     }
 136 
 137     /**
 138      * Returns the stand-alone style with the same size.
 139      * @return the stand-alone style with the same size
 140      */
 141     public TextStyle asStandalone() {
 142         return TextStyle.values()[ordinal()  | 1];
 143     }
 144 
 145     /**
 146      * Returns the normal style with the same size.
 147      *
 148      * @return the normal style with the same size
 149      */
 150     public TextStyle asNormal() {
 151         return TextStyle.values()[ordinal() & ~1];
 152     }
 153 
 154     /**
 155      * Returns the {@code Calendar} style corresponding to this {@code TextStyle}.
 156      *
 157      * @return the corresponding {@code Calendar} style
 158      */
 159     int toCalendarStyle() {
 160         return calendarStyle;
 161     }
 162 
 163     /**
 164      * Returns the relative index value to an element of the {@link
 165      * java.text.DateFormatSymbols#getZoneStrings() DateFormatSymbols.getZoneStrings()}
 166      * value, 0 for long names and 1 for short names (abbreviations). Note that these values
 167      * do <em>not</em> correspond to the {@link java.util.TimeZone#LONG} and {@link
 168      * java.util.TimeZone#SHORT} values.
 169      *
 170      * @return the relative index value to time zone names array
 171      */
 172     int zoneNameStyleIndex() {
 173         return zoneNameStyleIndex;
 174     }
 175 }