Spec-Zone .ru
спецификации, руководства, описания, API
|
001/* 002 * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. 003 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 004 * 005 * This code is free software; you can redistribute it and/or modify it 006 * under the terms of the GNU General Public License version 2 only, as 007 * published by the Free Software Foundation. Oracle designates this 008 * particular file as subject to the "Classpath" exception as provided 009 * by Oracle in the LICENSE file that accompanied this code. 010 * 011 * This code is distributed in the hope that it will be useful, but WITHOUT 012 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 013 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 014 * version 2 for more details (a copy is included in the LICENSE file that 015 * accompanied this code). 016 * 017 * You should have received a copy of the GNU General Public License version 018 * 2 along with this work; if not, write to the Free Software Foundation, 019 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 020 * 021 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 022 * or visit www.oracle.com if you need additional information or have any 023 * questions. 024 */ 025 026package javafx.util.converter; 027 028import java.text.*; 029import javafx.util.StringConverter; 030 031/** 032 * <p>{@link StringConverter} implementation that can use a {@link Format} 033 * instance.</p> 034 * 035 * @since 2.2 036 */ 037public class FormatStringConverter<T> extends StringConverter<T> { 038 039 // ------------------------------------------------------ Private properties 040 041 final Format format; 042 043 // ------------------------------------------------------------ Constructors 044 045 public FormatStringConverter(Format format) { 046 this.format = format; 047 } 048 049 // ------------------------------------------------------- Converter Methods 050 051 /** {@inheritDoc} */ 052 @Override public T fromString(String value) { 053 try { 054 // If the specified value is null or zero-length, return null 055 if (value == null) { 056 return null; 057 } 058 059 value = value.trim(); 060 061 if (value.length() < 1) { 062 return null; 063 } 064 065 // Create and configure the parser to be used 066 Format _format = getFormat(); 067 068 // Perform the requested parsing, and attempt to conver the output 069 // back to T 070 return (T) _format.parseObject(value); 071 } catch (ParseException ex) { 072 throw new RuntimeException(ex); 073 } 074 } 075 076 /** {@inheritDoc} */ 077 @Override public String toString(T value) { 078 // If the specified value is null, return a zero-length String 079 if (value == null) { 080 return ""; 081 } 082 083 // Create and configure the formatter to be used 084 Format _format = getFormat(); 085 086 // Perform the requested formatting 087 return _format.format(value); 088 } 089 090 /** 091 * <p>Return a <code>Format</code> instance to use for formatting 092 * and parsing in this {@link StringConverter}.</p> 093 */ 094 protected Format getFormat() { 095 return format; 096 } 097}