@ -1,9 +1,12 @@
package com.fr.design.fit.attrpane ;
import com.finebi.cbb.utils.CompareUtils ;
import com.fr.design.ExtraDesignClassManager ;
import com.fr.design.designer.IntervalConstants ;
import com.fr.design.fit.FitStateCompatible ;
import com.fr.design.fun.PcFitProvider ;
import com.fr.design.gui.icombobox.UIComboBox ;
import com.fr.design.gui.ilable.UILabel ;
import com.fr.design.i18n.Toolkit ;
import com.fr.design.layout.FRGUIPaneFactory ;
import com.fr.design.layout.TableLayoutHelper ;
import com.fr.design.widget.DataModify ;
@ -17,23 +20,30 @@ import java.awt.Color;
import java.awt.Component ;
import java.awt.event.ItemEvent ;
import java.awt.event.ItemListener ;
import java.util.HashMap ;
import java.util.Map ;
import java.util.Set ;
/ * *
* Created by kerry on 2020 - 04 - 22
* /
public class PcFitExpandablePane extends JPanel {
UIComboBox comboBox = new UIComboBox (
new String [ ] { com . fr . design . i18n . Toolkit . i18nText ( "Fine-Designer_Fit_Ec_Double_Fit" ) ,
com . fr . design . i18n . Toolkit . i18nText ( "Fine-Designer_Fit_Ec_Hor_Fit" ) ,
com . fr . design . i18n . Toolkit . i18nText ( "Fine-Designer_Fit_Ec_No_Fit" ) } ) ;
UILabel tipLabel = new UILabel ( com . fr . design . i18n . Toolkit . i18nText ( "Fine-Designer_Fit_Ec_No_Fit_Tip" ) ) ;
Item [ ] defaultItems = new Item [ ] { new Item ( Toolkit . i18nText ( "Fine-Designer_Fit_Ec_Double_Fit" ) , 2 , Toolkit . i18nText ( "Fine-Designer_Fit_Ec_Double_Fit_Tip" ) ) ,
new Item ( Toolkit . i18nText ( "Fine-Designer_Fit_Ec_Hor_Fit" ) , 1 , Toolkit . i18nText ( "Fine-Designer_Fit_Ec_Hor_Fit_Tip" ) ) ,
new Item ( Toolkit . i18nText ( "Fine-Designer_Fit_Ec_No_Fit" ) , 3 , Toolkit . i18nText ( "Fine-Designer_Fit_Ec_No_Fit_Tip" ) ) } ;
UIComboBox comboBox = new UIComboBox ( ) ;
UILabel tipLabel = new UILabel ( Toolkit . i18nText ( "Fine-Designer_Fit_Ec_No_Fit_Tip" ) ) ;
Map < Integer , String > contentDisplayType = new HashMap < > ( ) ;
Map < String , String > contentDisplayTip = new HashMap < > ( ) ;
public PcFitExpandablePane ( DataModify attrPane ) {
init ( attrPane ) ;
}
public void init ( final DataModify attrPane ) {
initComboBox ( ) ;
this . setLayout ( FRGUIPaneFactory . createBorderLayout ( ) ) ;
JPanel pcFitPane = FRGUIPaneFactory . createBorderLayout_S_Pane ( ) ;
final JPanel borderPane = FRGUIPaneFactory . createBorderLayout_S_Pane ( ) ;
@ -42,11 +52,11 @@ public class PcFitExpandablePane extends JPanel {
comboBox . addItemListener ( new ItemListener ( ) {
@Override
public void itemStateChanged ( ItemEvent e ) {
tipLabel . setText ( ScaleTipType . getScaleTip ( comboBox . getSelectedIndex ( ) ) . getTip ( ) ) ;
tipLabel . setText ( contentDisplayTip . get ( comboBox . getSelectedItem ( ) ) ) ;
}
} ) ;
Component [ ] [ ] components = new Component [ ] [ ] {
new Component [ ] { new UILabel ( com . fr . design . i18n . Toolkit . i18nText ( "Fine-Designer_Fit_Ec_Content_Display_Type" ) ) , comboBox } ,
new Component [ ] { new UILabel ( Toolkit . i18nText ( "Fine-Designer_Fit_Ec_Content_Display_Type" ) ) , comboBox } ,
new Component [ ] { tipLabel , null } ,
} ;
JPanel panel = TableLayoutHelper . createGapTableLayoutPane ( components , TableLayoutHelper . FILL_LASTCOLUMN , IntervalConstants . INTERVAL_W0 , IntervalConstants . INTERVAL_W0 ) ;
@ -58,50 +68,61 @@ public class PcFitExpandablePane extends JPanel {
this . add ( pcFitPane , BorderLayout . CENTER ) ;
}
private void initComboBox ( ) {
for ( Item item : defaultItems ) {
comboBox . addItem ( item . value ) ;
contentDisplayType . put ( item . key , item . value ) ;
contentDisplayTip . put ( item . value , item . tip ) ;
}
Set < PcFitProvider > pcFitProviders = ExtraDesignClassManager . getInstance ( ) . getArray ( PcFitProvider . XML_TAG ) ;
for ( PcFitProvider pcFitProvider : pcFitProviders ) {
comboBox . addItem ( pcFitProvider . getContentDisplayValue ( ) ) ;
contentDisplayType . put ( pcFitProvider . getContentDisplayKey ( ) , pcFitProvider . getContentDisplayValue ( ) ) ;
contentDisplayTip . put ( pcFitProvider . getContentDisplayValue ( ) , pcFitProvider . getContentDisplayTip ( ) ) ;
}
}
public ReportFitAttr update ( ) {
ReportFitAttr fitAttr = getReportFitAttr ( ) ;
fitAttr . setFitStateInPC ( FitStateCompatible . getOldTypeFromNew ( comboBox . getSelectedIndex ( ) ) ) ;
ReportFitAttr fitAttr = getDefaultReportFitAttr ( ) ;
String selectType = ( String ) comboBox . getSelectedItem ( ) ;
for ( Integer key : contentDisplayType . keySet ( ) ) {
if ( CompareUtils . isEqual ( contentDisplayType . get ( key ) , selectType ) ) {
fitAttr . setFitStateInPC ( key ) ;
}
}
return fitAttr ;
}
public void populate ( ReportFitAttr fitAttr ) {
if ( fitAttr = = null ) {
fitAttr = getReportFitAttr ( ) ;
if ( fitAttr = = null | | ! contentDisplayType . keySet ( ) . contains ( fitAttr . fitStateInPC ( ) ) ) {
fitAttr = getDefaultReportFitAttr ( ) ;
}
String selectType = contentDisplayType . get ( fitAttr . fitStateInPC ( ) ) ;
for ( int i = 0 ; i < comboBox . getItemCount ( ) ; i + + ) {
if ( CompareUtils . isEqual ( selectType , comboBox . getItemAt ( i ) ) ) {
comboBox . setSelectedIndex ( i ) ;
tipLabel . setText ( contentDisplayTip . get ( selectType ) ) ;
}
}
int selectIndex = FitStateCompatible . getNewTypeFromOld ( fitAttr . fitStateInPC ( ) ) ;
comboBox . setSelectedIndex ( selectIndex ) ;
tipLabel . setText ( ScaleTipType . getScaleTip ( selectIndex ) . getTip ( ) ) ;
}
private ReportFitAttr getReportFitAttr ( ) {
private ReportFitAttr getDefaultReportFitAttr ( ) {
ReportFitAttr fitAttr = new ReportFitAttr ( ) ;
fitAttr . setFitStateInPC ( FitAttrState . NOT_FIT . getState ( ) ) ;
return fitAttr ;
}
private enum ScaleTipType {
EC_DOUBLE_FIT ( 0 , com . fr . design . i18n . Toolkit . i18nText ( "Fine-Designer_Fit_Ec_Double_Fit_Tip" ) ) ,
EC_HOR_FIT ( 1 , com . fr . design . i18n . Toolkit . i18nText ( "Fine-Designer_Fit_Ec_Hor_Fit_Tip" ) ) ,
EC_NO_FIT ( 2 , com . fr . design . i18n . Toolkit . i18nText ( "Fine-Designer_Fit_Ec_No_Fit_Tip" ) ) ;
private int index ;
private String tip ;
class Item {
public String value ;
public int key ;
public String tip ;
ScaleTipType ( int index , String tip ) {
this . index = index ;
Item ( String value , int key , String tip ) {
this . value = value ;
this . key = key ;
this . tip = tip ;
}
public String getTip ( ) {
return tip ;
}
public static ScaleTipType getScaleTip ( int selectIndex ) {
for ( ScaleTipType tipType : values ( ) ) {
if ( selectIndex = = tipType . index ) {
return tipType ;
}
}
return EC_NO_FIT ;
}
}
}