/******************************************************************************* * Copyright (c) 2016 Weasis Team and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Nicolas Roduit - initial API and implementation *******************************************************************************/ package org.weasis.core.api.gui.util; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.text.NumberFormat; import javax.swing.text.DefaultFormatterFactory; import javax.swing.text.NumberFormatter; import org.weasis.core.api.util.LocalUtil; /** * The Class DecFormater. * */ public class DecFormater { private static NumberFormat df1 = LocalUtil.getNumberInstance(); // 1 decimals private static NumberFormat df2 = LocalUtil.getNumberInstance(); // 2 decimals private static NumberFormat df4 = LocalUtil.getNumberInstance(); // 4 decimals private static NumberFormat percent2 = LocalUtil.getPercentInstance(); // Scientific format with 4 decimals private static DecimalFormat dfSci = new DecimalFormat("0.####E0"); //$NON-NLS-1$ static { df1.setMaximumFractionDigits(1); df2.setMaximumFractionDigits(2); df4.setMaximumFractionDigits(4); percent2.setMaximumFractionDigits(2); dfSci.setDecimalFormatSymbols(DecimalFormatSymbols.getInstance(LocalUtil.getLocaleFormat())); } public static String oneDecimal(Number val) { return df1.format(val); } public static String twoDecimal(Number val) { return df2.format(val); } public static String fourDecimal(Number val) { return df4.format(val); } public static String percentTwoDecimal(Number val) { return percent2.format(val); } public static String scientificFormat(Number val) { return dfSci.format(val); } public static DefaultFormatterFactory setPreciseDoubleFormat(double min, double max) { NumberFormatter displayFormatter = new NumberFormatter(new DecimalFormat("#,##0.##")); //$NON-NLS-1$ displayFormatter.setValueClass(Double.class); NumberFormatter editFormatter = new NumberFormatter(new DecimalFormat("#,##0.0#############")); //$NON-NLS-1$ editFormatter.setValueClass(Double.class); editFormatter.setMinimum(min); editFormatter.setMaximum(max); editFormatter.setAllowsInvalid(true); return new DefaultFormatterFactory(displayFormatter, displayFormatter, editFormatter); } }