@ -6,6 +6,7 @@ import com.fr.base.Style;
import com.fr.base.TextFormat ;
import com.fr.data.core.FormatField ;
import com.fr.data.core.FormatField.FormatContents ;
import com.fr.design.gui.icheckbox.UICheckBox ;
import com.fr.design.i18n.Toolkit ;
import com.fr.design.border.UIRoundedBorder ;
import com.fr.design.constants.LayoutConstants ;
@ -22,6 +23,8 @@ import com.fr.general.ComparatorUtils;
import com.fr.stable.StringUtils ;
import java.math.BigDecimal ;
import java.math.RoundingMode ;
import javax.swing.* ;
import javax.swing.border.Border ;
import javax.swing.border.TitledBorder ;
@ -63,6 +66,8 @@ public class FormatPane extends AbstractBasicStylePane implements GlobalNameObse
private JPanel contentPane ;
private JPanel txtCenterPane ;
private JPanel centerPane ;
private JPanel optionPane ;
private UICheckBox roundingBox ;
private JPanel formatFontPane ;
private FRFontPane frFontPane ;
private boolean isRightFormat ;
@ -123,7 +128,23 @@ public class FormatPane extends AbstractBasicStylePane implements GlobalNameObse
// centerPane.setBorder(LEFT_BORDER);
frFontPane . setBorder ( LEFT_BORDER ) ;
Component [ ] [ ] components = getComponent ( fontPane , centerPane , typePane ) ;
JPanel option = new JPanel ( new BorderLayout ( ) ) ;
option . add ( new UILabel ( Toolkit . i18nText ( "Fine-Design_Report_Base_Option" ) , SwingConstants . LEFT ) , BorderLayout . WEST ) ;
roundingBox = new UICheckBox ( Toolkit . i18nText ( "Fine-Design_Report_Base_Option_Half_Up" ) ) ;
roundingBox . setBorder ( BorderFactory . createEmptyBorder ( 0 , 40 , 0 , 0 ) ) ;
roundingBox . addItemListener ( new ItemListener ( ) {
@Override
public void itemStateChanged ( ItemEvent e ) {
}
} ) ;
roundingBox . setGlobalName ( "roundingBox" ) ;
option . add ( roundingBox , BorderLayout . CENTER ) ;
optionPane = new JPanel ( new CardLayout ( ) ) ;
optionPane . add ( new JPanel ( ) , "hide" ) ;
optionPane . setPreferredSize ( new Dimension ( 0 , 0 ) ) ;
optionPane . add ( option , "show" ) ;
Component [ ] [ ] components = getComponent ( fontPane , centerPane , typePane , optionPane ) ;
this . add ( createContentPane ( components ) , BorderLayout . CENTER ) ;
}
@ -137,11 +158,12 @@ public class FormatPane extends AbstractBasicStylePane implements GlobalNameObse
}
protected Component [ ] [ ] getComponent ( JPanel fontPane , JPanel centerPane , JPanel typePane ) {
protected Component [ ] [ ] getComponent ( JPanel fontPane , JPanel centerPane , JPanel typePane , JPanel optionPane ) {
return new Component [ ] [ ] {
new Component [ ] { null , null } ,
new Component [ ] { new UILabel ( Toolkit . i18nText ( "Fine-Design_Report_Base_Format" ) , SwingConstants . LEFT ) , typePane } ,
new Component [ ] { centerPane , null } ,
new Component [ ] { optionPane , null } ,
new Component [ ] { fontPane , frFontPane } ,
} ;
}
@ -220,6 +242,7 @@ public class FormatPane extends AbstractBasicStylePane implements GlobalNameObse
setPatternComboBoxAndList ( FormatContents . CURRENCY , pattern ) ;
} else if ( pattern . indexOf ( "%" ) > 0 ) {
setPatternComboBoxAndList ( FormatContents . PERCENT , pattern ) ;
this . roundingBox . setSelected ( ( ( CoreDecimalFormat ) format ) . getRoundingMode ( ) . equals ( RoundingMode . HALF_UP ) ) ;
} else if ( pattern . indexOf ( "E" ) > 0 ) {
setPatternComboBoxAndList ( FormatContents . SCIENTIFIC , pattern ) ;
} else {
@ -286,7 +309,8 @@ public class FormatPane extends AbstractBasicStylePane implements GlobalNameObse
}
if ( isRightFormat ) {
if ( StringUtils . isNotEmpty ( patternString ) ) {
return FormatField . getInstance ( ) . getFormat ( getFormatContents ( ) , patternString ) ;
RoundingMode roundingMode = roundingBox . isSelected ( ) ? RoundingMode . HALF_UP : RoundingMode . HALF_EVEN ;
return FormatField . getInstance ( ) . getFormat ( getFormatContents ( ) , patternString , roundingMode ) ;
}
}
return null ;
@ -342,6 +366,15 @@ public class FormatPane extends AbstractBasicStylePane implements GlobalNameObse
centerPane . setPreferredSize ( new Dimension ( 270 , 65 ) ) ;
cardLayout . show ( centerPane , "show" ) ;
}
CardLayout optionLayout = ( ( CardLayout ) optionPane . getLayout ( ) ) ;
if ( getFormatContents ( ) = = FormatContents . PERCENT ) {
optionPane . setPreferredSize ( new Dimension ( 100 , 20 ) ) ;
optionLayout . show ( optionPane , "show" ) ;
} else {
optionPane . setPreferredSize ( new Dimension ( 0 , 0 ) ) ;
optionLayout . show ( optionPane , "hide" ) ;
roundingBox . setSelected ( false ) ;
}
}
}
@ -370,7 +403,9 @@ public class FormatPane extends AbstractBasicStylePane implements GlobalNameObse
* update
* /
public Style update ( Style style ) {
if ( ComparatorUtils . equals ( globalNameListener . getGlobalName ( ) , "textField" ) | | ComparatorUtils . equals ( globalNameListener . getGlobalName ( ) , "typeComboBox" ) ) {
if ( ComparatorUtils . equals ( globalNameListener . getGlobalName ( ) , "textField" )
| | ComparatorUtils . equals ( globalNameListener . getGlobalName ( ) , "typeComboBox" )
| | ComparatorUtils . equals ( globalNameListener . getGlobalName ( ) , "roundingBox" ) ) {
return style . deriveFormat ( this . update ( ) ) ;
} else {
return style . deriveFRFont ( this . frFontPane . update ( style . getFRFont ( ) ) ) ;