Browse Source

resolve conflict

master
hzzz 7 years ago
parent
commit
ae2dff9a14
  1. 2
      designer_base/src/com/fr/design/actions/help/AboutPane.java
  2. 4
      designer_base/src/com/fr/design/actions/help/WebDemoAction.java
  3. 33
      designer_base/src/com/fr/design/gui/style/BackgroundSpecialPane.java
  4. 88
      designer_base/src/com/fr/design/locale/designer.properties
  5. 111
      designer_base/src/com/fr/design/locale/designer_en_US.properties
  6. 2420
      designer_base/src/com/fr/design/locale/designer_ja_JP.properties
  7. 51
      designer_base/src/com/fr/design/locale/designer_ko_KR.properties
  8. 48
      designer_base/src/com/fr/design/locale/designer_zh_CN.properties
  9. 226
      designer_base/src/com/fr/design/locale/designer_zh_TW.properties
  10. 3
      designer_base/src/com/fr/design/module/DesignModule.java
  11. 4
      designer_base/src/com/fr/design/utils/DesignUtils.java
  12. 11
      designer_base/src/com/fr/start/BaseDesigner.java
  13. 12
      designer_base/src/com/fr/start/StartServer.java
  14. 188
      designer_chart/src/com/fr/design/ChartEnvManager.java
  15. 69
      designer_chart/src/com/fr/design/chart/report/GisMapDataPane4Chart.java
  16. 341
      designer_chart/src/com/fr/design/chart/report/GisMapTableDataContentPane4Chart.java
  17. 68
      designer_chart/src/com/fr/design/chart/report/MapCubeDataPane4Chart.java
  18. 133
      designer_chart/src/com/fr/design/chart/report/MapDataPane4Chart.java
  19. 113
      designer_chart/src/com/fr/design/chart/report/MapMoreCubeLayerPane4Chart.java
  20. 79
      designer_chart/src/com/fr/design/chart/report/MapSinglePane4Chart.java
  21. 93
      designer_chart/src/com/fr/design/chart/report/MapTableCubeDataPane4Chart.java
  22. 268
      designer_chart/src/com/fr/design/chart/report/MapTableDataSinglePane4Chart.java
  23. 244
      designer_chart/src/com/fr/design/mainframe/AbstractChartDataPane4Chart.java
  24. 111
      designer_chart/src/com/fr/design/mainframe/AbstractMapPlotPane4ToolBar.java
  25. 521
      designer_chart/src/com/fr/design/mainframe/ChartArea.java
  26. 230
      designer_chart/src/com/fr/design/mainframe/ChartDesigner.java
  27. 211
      designer_chart/src/com/fr/design/mainframe/ChartDesignerUI.java
  28. 558
      designer_chart/src/com/fr/design/mainframe/ChartToolBarPane.java
  29. 98
      designer_chart/src/com/fr/design/mainframe/DesignerFrame4Chart.java
  30. 203
      designer_chart/src/com/fr/design/mainframe/GisMapPlotPane4ToolBar.java
  31. 339
      designer_chart/src/com/fr/design/mainframe/MapArrayPane.java
  32. 210
      designer_chart/src/com/fr/design/mainframe/MapPlotPane4ToolBar.java
  33. 90
      designer_chart/src/com/fr/design/mainframe/PlotToolBarFactory.java
  34. 91
      designer_chart/src/com/fr/design/mainframe/ToolTip4Chart.java
  35. 170
      designer_chart/src/com/fr/design/mainframe/actions/ChartDownLoadWorker.java
  36. 51
      designer_chart/src/com/fr/design/mainframe/actions/ChartFeedBackAciton.java
  37. 25
      designer_chart/src/com/fr/design/mainframe/actions/ChartUpdateAction.java
  38. 56
      designer_chart/src/com/fr/design/mainframe/actions/ChartWebAction.java
  39. 35
      designer_chart/src/com/fr/design/mainframe/actions/OpenChartAction.java
  40. 74
      designer_chart/src/com/fr/design/mainframe/actions/UpdateOnlineAction.java
  41. 69
      designer_chart/src/com/fr/design/mainframe/actions/UpdateVersion.java
  42. 55
      designer_chart/src/com/fr/design/mainframe/chart/ChartDesignEditPane.java
  43. 238
      designer_chart/src/com/fr/design/mainframe/chart/UpdateOnLinePane.java
  44. 71
      designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDesignerDataPane.java
  45. 48
      designer_chart/src/com/fr/design/mainframe/chart/gui/data/ChartDesignDataLoadPane.java
  46. 124
      designer_chart/src/com/fr/design/mainframe/chart/gui/data/EmbbeddDataPane.java
  47. 123
      designer_chart/src/com/fr/design/mainframe/chart/gui/data/ExcelDataPane.java
  48. 117
      designer_chart/src/com/fr/design/mainframe/chart/gui/data/ImportSetChartDataPane.java
  49. 101
      designer_chart/src/com/fr/design/mainframe/chart/gui/data/JSONDataPane.java
  50. 69
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/AreaPlotPane4ToolBar.java
  51. 72
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/BarPlotPane4ToolBar.java
  52. 72
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/BubblePlotPane4ToolBar.java
  53. 138
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/ChartDesignerImagePane.java
  54. 73
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/ColumnPlotPane4ToolBar.java
  55. 54
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/CustomPlotPane4ToolBar.java
  56. 54
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/DonutPlotPane4ToolBar.java
  57. 52
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/GanttPlotPane4ToolBar.java
  58. 57
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/LinePlotPane4ToolBar.java
  59. 69
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/MeterPlotPane4ToolBar.java
  60. 58
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/PiePlotPane4ToolBar.java
  61. 134
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/PlotPane4ToolBar.java
  62. 51
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/RadarPlotPane4ToolBar.java
  63. 53
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/RangePlotPane4ToolBar.java
  64. 52
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/StockPlotPane4ToolBar.java
  65. 45
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/UserDefinedChartTypePane.java
  66. 72
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/XYSCatterPlotPane4ToolBar.java
  67. 38
      designer_form/src/com/fr/design/mainframe/FormArea.java

2
designer_base/src/com/fr/design/actions/help/AboutPane.java

@ -47,7 +47,7 @@ public class AboutPane extends JPanel {
BoxCenterAlignmentCopyablePane buildCopyPane = new BoxCenterAlignmentCopyablePane(
getBuildTitle(),
GeneralUtils.readBuildNO(),
GeneralUtils.readFullBuildNO(),
new String[]{
Inter.getLocText("FR-Designer-Basic_Copy_Build_NO"),
Inter.getLocText("FR-Designer-Basic_Copy_Build_NO_OK")

4
designer_base/src/com/fr/design/actions/help/WebDemoAction.java

@ -23,7 +23,7 @@ public class WebDemoAction extends UpdateAction {
* @param evt 事件
*/
public void actionPerformed(ActionEvent evt) {
StartServer.browerDemoURL();
StartServer.browserDemoURL();
}
public static final MenuKeySet PRODUCT_DEMO = new MenuKeySet() {
@ -34,7 +34,7 @@ public class WebDemoAction extends UpdateAction {
@Override
public String getMenuName() {
return Inter.getLocText("Product_Demo");
return Inter.getLocText("FR-Product_Demo");
}
@Override

33
designer_base/src/com/fr/design/gui/style/BackgroundSpecialPane.java

@ -1,6 +1,12 @@
package com.fr.design.gui.style;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import com.fr.design.ExtraDesignClassManager;
import com.fr.design.event.UIObserverListener;
import com.fr.design.fun.BackgroundQuickUIProvider;
import com.fr.design.mainframe.backgroundpane.*;
/**
@ -40,11 +46,26 @@ public class BackgroundSpecialPane extends BackgroundPane{
fireStateChanged();
}
});
return new BackgroundQuickPane[] {
new NullBackgroundQuickPane(),
colorBackgroundPane,
imageBackgroundPane,
gradientPane
};
//hugh:表单支持背景接口
List<BackgroundQuickPane> kinds = new ArrayList<BackgroundQuickPane>();
kinds.add(new NullBackgroundQuickPane());
kinds.add(colorBackgroundPane);
kinds.add(imageBackgroundPane);
kinds.add(gradientPane);
Set<BackgroundQuickUIProvider> providers = ExtraDesignClassManager.getInstance().getArray(BackgroundQuickUIProvider.MARK_STRING);
for (BackgroundQuickUIProvider provider : providers) {
BackgroundQuickPane newTypePane = provider.appearanceForBackground();
newTypePane.registerChangeListener(new UIObserverListener() {
@Override
public void doChange() {
fireStateChanged();
}
});
kinds.add(newTypePane);
}
return kinds.toArray(new BackgroundQuickPane[kinds.size()]);
}
}

88
designer_base/src/com/fr/design/locale/designer.properties

@ -1,4 +1,3 @@
# generated time: \u661F\u671F\u56DB \u5341\u4E00\u6708 24 12:02:51 CST 2016
FR-Designer-BBSLogin_Account=
FR-Designer-BBSLogin_Connection-Failure=
FR-Designer-BBSLogin_Connection-Failure-Tip=
@ -12,7 +11,7 @@ FR-Designer-BBSLogin_Switch-Account=
FR-Designer-BBSLogin_Privite-Message=
FR-Designer-BBSLogin_Times=
FR-Designer-BBSLogin_Username-Empty-Tip=
FR-Designer-Basic_More_Color=
FR-Designer-Basic_More_Color=More colors
FR-Designer-Estate_Any=
FR-Designer-Estate_Default_Font=
FR-Designer-Estate_Default_Null=
@ -87,18 +86,18 @@ FR-Designer_Currency_Line=
FR-Designer_Current_tab=
FR-Designer_Custom=
FR-Designer_Custom-Angle=
FR-Designer_DS-Dictionary=
FR-Designer_DS-Dictionary=Dictionary
FR-Designer_Data-confusion=
FR-Designer_Data_Type=
FR-Designer_Double_Click_Edit_OR_Clear=
FR-Designer_Email=
FR-Designer_Email=email
FR-Designer_Enabled=
FR-Designer_End-Date=
FR-Designer_ExportAndOutput=
FR-Designer_FRFont=
FR-Designer_FS_Close_Other_Templates=
FR-Designer_File=
FR-Designer_Filter_Conditions=
FR-Designer_FS_Close_Other_Templates=close other templates
FR-Designer_File=File
FR-Designer_Filter_Conditions=Filter Conditions
FR-Designer_Finish-Modify-Share=
FR-Designer_Fit=
FR-Designer_Fit-App=
@ -106,7 +105,7 @@ FR-Designer_Font-Family=
FR-Designer_Font-Size=
FR-Designer_Forbid_Drag_into_Adapt_Pane=Forbid Drag into Para Pane
FR-Designer_Forbid_Drag_into_Para_Pane=Forbid Drag into Para Pane
FR-Designer_Foreground=
FR-Designer_Foreground=Foreground
FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=Form authority editing can not be supported
FR-Designer_Form-Report=
FR-Designer_Form_EmbeddedTD=
@ -117,12 +116,12 @@ FR-Designer_Forum=
FR-Designer_Get-Cube=
FR-Designer_Help=
FR-Designer_Hide=
FR-Designer_Hyperlink=
FR-Designer_Hyperlink=Hyperlink
FR-Designer_Hyperlink-Form_link=
FR-Designer_IDCard=
FR-Designer_Icon=
FR-Designer_Index=
FR-Designer_Input_Rule=
FR-Designer_Input_Rule=Input Rule
FR-Designer_Language_Default=
FR-Designer_Layout=
FR-Designer_Layout-HBox=
@ -143,7 +142,7 @@ FR-Designer_M_Help-Tutorial=
FR-Designer_Max_Value=
FR-Designer_Min_Value=
FR-Designer_MobilePhone=
FR-Designer_New_Value=
FR-Designer_New_Value=New_Value
FR-Designer_None=
FR-Designer_PaperSize-Mobile=
FR-Designer_PaperSize-Mobile-Large=
@ -152,12 +151,12 @@ FR-Designer_Para-Body=
FR-Designer_Parameters=
FR-Designer_Phone=
FR-Designer_PostCode=
FR-Designer_Present=
FR-Designer_Preview=
FR-Designer_Present=Present
FR-Designer_Preview=Preview
FR-Designer_Preview-Data-Confusion=
FR-Designer_Product_Demo=
FR-Designer_Query_Type=
FR-Designer_Refresh=
FR-Designer_Refresh=Refresh
FR-Designer_Refresh_Parameter_In_SQL=
FR-Designer_Reg_Expressions=
FR-Designer_Reg_Max_Length=
@ -195,8 +194,8 @@ FR-Designer_Vertical-RightToLeft=
FR-Designer_VerticalBoxLayout=
FR-Designer_Visible=
FR-Designer_WLayout-Border-ToolTips=
FR-Designer_WaterMark=
FR-Designer_Widget=
FR-Designer_WaterMark=WaterMark
FR-Designer_Widget=Widget
FR-Designer_Widget-Settings=
FR-Designer_Widget-Visible=
FR-Designer_XMLA_Explain=
@ -401,14 +400,14 @@ FR-Designer_Choose_Language=
FR-Designer_Work_After_Restart_Designer=
FR-Designer_Setting-Ruler-Units=
FR-Designer_PageSetup-mm=
FR-Designer_Unit_CM=
FR-Designer_Unit_CM=CM
FR-Designer_Page-Setup-Scale-Units=
FR-Designer_Report-Design-Ruler-Units=
FR-Designer_Web_Preview_Port_Setting=
FR-Designer_Designer_Language=
FR-Designer_Unit_INCH=
FR-Designer_Unit_INCH=INCH
FR-Designer_Web_Preview_Port=
FR-Designer_Unit_PT=
FR-Designer_Unit_PT=PT
FR-Designer-Write_Auto_Stash=auto stash
FR-Designer_Printer_Native_Button=
FR-Designer_Event_ShowWidgets=
@ -483,10 +482,10 @@ FR-Designer_Browser_Background=Browser Background
FR-Designer_Import_Css=Import Css
FR-Designer_Import_JavaScript=Import JavaScript
FR-Designer-Datasource-Param_DES=<html>&nbsp;you can type "${abc}" as a parameter, here, abc is a parameter name. <br/>&nbsp;for example\: select * from table where id\=${abc}.<br/>&nbsp;select * from table where id\='${abc}'.(if the field id is typeof string)</html>
FR-Designer-DS-Database_Query=
FR-Designer_Is_Share_DBTableData=
FR-Designer-LayerPageReport_PageQuery=
FR-Designer-LayerPageReport_Define_PageQuerySQL=
FR-Designer-DS-Database_Query=Database Query
FR-Designer_Is_Share_DBTableData=Is_Share_DBTableData
FR-Designer-LayerPageReport_PageQuery=Query for page
FR-Designer-LayerPageReport_Define_PageQuerySQL=Define sql for page
FR-Designer_Event=
FR-Designer_Properties=
FR-Designer_Permissions_Edition=Permissions Edition
@ -512,7 +511,7 @@ FR-Designer_Attribute=
FR-Designer_Form_Editing_Listeners=
FR-Designer_Form_Basic_Properties=
FR-Designer_DS_Dictionary=
FR-Designer_Create_Tree=
FR-Designer_Create_Tree=Create Tree
FR-Designer_Set_Callback_Function=
FR-Designer_ConfirmDialog_Content=
FR-Designer_ConfirmDialog_Title=
@ -558,11 +557,7 @@ FR-Designer_Auto_Adjust_Size=Auto adjust
FR-Designer_Show_As_Download=Display the binary content using download link
FR-Designer_File_Name_For_Download=File Name For Download
FR-Designer_No=No
FR-Designer_Pagination=Page Break
FR-Designer-Move_Tab_First=move to first
FR-Designer-Move_Tab_End=move to end
FR-Designer-Move_Tab_Next=move to next
FR-Designer-Move_Tab_Prev=move to previous
FR-Designer_Pagination=Pagination
FR-Designer_DS_TableData=Data Set
FR-Designer_Parameter-Formula=Formula
FR-Designer_Plugin_Should_Update_Please_Contact_Developer=Plugin version is too low, and is not compatible with current API. Please contact the developer to update.
@ -830,7 +825,7 @@ Form-TextArea=TextArea
FR-Designer_Https_Enable=
Widget-Custom_Widget_Config=Custom Widget
already_exists=already exists
FR-Designer_Original_Marked_Filed=Original Marked Filed
Original_Marked_Filed=Original Marked Filed
BackgroundTexture-Sand=Beach
Values=Values
Not_use_a_cell_attribute_table_editing=You may not use a cell attribute table editing
@ -862,7 +857,7 @@ RP_Authority_Edit=Authority
Warnning=Warning
RoleName_Can_Not_Be_Null=RoleName_Can_Not_Be_Null
Application=Applications
Formula_Dictionary_Display_Examples_Html=<html>the real value is \
Formula_Dictionary_Display_Examples_Html=<html>the real value is \=range(100), the real value($$$)'s display value is \=0 - $$$, <br>the result is 1, 2, ..., 100 and -1, -2, ..., -100.<br></html>
ECP-error_pwd=
FR-Hyperlink_ChartHyperlink=
M_Edit-FormatBrush=Format Painter
@ -993,7 +988,7 @@ Background-Background_is_NULL=No Background
FR-Designer_Sytle-FRFont=Font
Gradation=Gradation
The_current_list_is_empty=The current list is empty
Formula_Dictionary_Display_Examples=the real value is \
Formula_Dictionary_Display_Examples=the real value is \=range(100), the real value($$$)'s display value is \=0 - $$$, \nthe result is 1, 2, ..., 100 and -1, -2, ..., -100.
Schedule-Template_Parameter=Template Parameter
JSShow=Show In Action
Level_coordinates=Level coordinates
@ -1158,7 +1153,7 @@ Multiline=Multiline
Datasource-Convert_Charset=Convert Char Set
DashBoard-ConnectionList=ConnectionList
Utils-Submit_Forcibly=Submit Forcibly
FR-Designer_Parent_Marked_Field=Parent Marked Field
Parent_Marked_Field=Parent Marked Field
Logout=Logout
FR-Designer_Show_Blank_Row=
FR-Base_Format=
@ -1197,7 +1192,7 @@ Privilege-Selected_None_Of_Any_Items=Selected None Of Any Items
FRFont-Size=Size
Function-J2EE_server=J2EE server
FR-Designer_Allow_Blank=All Blank
FR-Designer_Build_Tree_Accord_Parent_Marked_Filed=Build Tree according parent's marked filed
Build_Tree_Accord_Parent_Marked_Filed=Build Tree according parent's marked filed
Preference-Horizontal_Scroll_Bar_Visible=Horizontal Scroll Bar Visible
Scope=Scope
Save_All_Records_In_Memory=Save All Records in Memory
@ -1266,7 +1261,7 @@ DateFormat-Custom_Warning=Note\: Custom date format does not support the format
Unit_MM=MM
Server-Start=Start
CellPage-Can_Break_On_Paginate=Can Break On Paginate
FR-Designer_Build_Tree_Accord_Marked_Filed_Length=Build Tree according marked filed's length
Build_Tree_Accord_Marked_Filed_Length=Build Tree according marked filed's length
ComboCheckBox-Start_Symbol=Start Symbol
Real=Real
RWA-Batch_Modify_Cells=Batch Modify Cells
@ -1375,7 +1370,7 @@ Not_Exsit=not exist in WorkSheet.
Utils-Insert_Row=Insert Row
Utils-Delete_Row=Delete Row
not_support_authority_edit=this element does not support authority edit
Formula_Tips=The formula must be from the beginning of the "\
Formula_Tips=The formula must be from the beginning of the "\="\!
FR-Action_Copy=
Compile_Success=Compile Success
BackgroundTexture-RecycledPaper=Recycled Paper
@ -1540,7 +1535,7 @@ FR-Designer_Cancel=
Button-Group-Display-Columns=Display Column Count
Widget-Height=Height
Examples=Examples
Formula_Dictionary_Display_Example=the real value is \
Formula_Dictionary_Display_Example=the real value is \=range(100), the real value($$$)'s display value is \=0 - $$$, \nthe result is 1, 2, ..., 100 and -1, -2, ..., -100.
StyleAlignment-Horizontal=Horizontal
HyperLink_Must_Alone_Reset=HyperLink_Must_Alone_Reset
ExpandD-Expand_Direction=Display Data Direction
@ -1714,7 +1709,7 @@ Condition_Display=Condition Display
FR-Server-Design_template_unopened=
Function-Function_Class_Name=Function Class Name
Schedule-Template=Template
FR-Designer_Tree_Data_Field=Tree Data Field
Tree_Data_Field=Tree Data Field
Border-Style-Normal=Rectangular
Top_And_Double_Bottom_Border_Line=Top And Double Bottom Border Line
FR-Server_Embedded_Server_Start=Server in Design-Start
@ -1990,4 +1985,19 @@ FormulaD-Data_Fields=Data Fields
FR-Designer_Role=Role
FR-Designer_Permissions=Permissions
FR-Designer_Form_Button=Button
FR-Designer_WF_Name=Name
FR-Designer_WF_Name=Name
FR-Designer_Double=Double
FR-Designer_Query=
FR-Designer_Font=Font
FR-Designer_Confirm=
FR-Designer_Parameter=
FR-Designer-Plugin_Plugin=Plugin
FR-Designer_Background=Background
Template=Template
FR-Designer_Parent_Marked_Field=Parent Marked Field
FR-Designer_Original_Marked_Filed=Original Marked Filed
FR-Designer_Build_Tree_Accord_Parent_Marked_Filed=Build Tree according parent's marked filed
FR-Designer_Build_Tree_Accord_Marked_Filed_Length=Build Tree according marked filed's length
FR-Product_Demo=Demo
FR-Designer_Tree_Data_Field=Tree Data Field

111
designer_base/src/com/fr/design/locale/designer_en_US.properties

@ -1,4 +1,3 @@
# generated time: \u661F\u671F\u56DB \u5341\u4E00\u6708 24 12:02:51 CST 2016
FR-Designer-BBSLogin_Account=User name
FR-Designer-BBSLogin_Connection-Failure=Connection failure, check your network status
FR-Designer-BBSLogin_Connection-Failure-Tip=Tip
@ -9,19 +8,19 @@ FR-Designer-BBSLogin_Password=Password
FR-Designer-BBSLogin_Password-Empty-Tip=Password can not be null
FR-Designer-BBSLogin_Register-Account=Register Account
FR-Designer-BBSLogin_Switch-Account=Switch Account
FR-Designer-BBSLogin_Privite-Message=Privite Message
FR-Designer-BBSLogin_Privite-Message=Private Message
FR-Designer-BBSLogin_Times=times
FR-Designer-BBSLogin_Username-Empty-Tip=User name can not be null
FR-Designer-Basic_More_Color=More Color...
FR-Designer-Basic_More_Color=More colors
FR-Designer-Estate_Any=Any
FR-Designer-Estate_Default_Font=Default font
FR-Designer-Estate_Default_Null=Default null
FR-Designer-Estate_Default_Text=Default
FR-Designer-Estate_Parameter_Null_Text=Parameter is null, then display as
FR-Designer-Estate_Parameter_Null_Text=Parameter is null, then display as
FR-Designer-Estate_Radio-Group=Common button group controls of real estate
FR-Designer-Estate_Selected_Font=Selected font
FR-Designer-Estate_Widget_Value=Control value
FR-Designer-Layout_Adaptive_Layout=Adaptive layout
FR-Designer-Layout_Adaptive_Layout=Adaptive Layout
FR-Designer-Output_Background_Set=Background set
FR-Designer-Output_Default_Background=Default background
FR-Designer-Output_Excel_Page=Excel Export(page break)
@ -29,7 +28,7 @@ FR-Designer-Output_Excel_Sheet=Excel Export(one page per sheet)
FR-Designer-Output_Excel_Simple=Excel Export(original)
FR-Designer-Plugin_PluginMarket_Coding=Plugin store is developing, stay tuned
FR-Desinger-Plugin_Updater_UpdateAndUpgrade=Update&Upgrade
FR-Desinger-Plugin_Updater_Checking_Jar_Update=Checking jarpackage update
FR-Desinger-Plugin_Updater_Checking_Jar_Update=Checking JARpackage update
FR-Desinger-Plugin_Updater_Checking_Version_Update=Checking version update
FR-Desinger-Plugin_Updater_Update=update
FR-Desinger-Plugin_Updater_Upgrade=upgrade
@ -68,7 +67,7 @@ FR-Designer_Block-intersect=The overlap between block and block is prohibited
FR-Designer_BorderLayout=BorderLayout
FR-Designer_Button-Hotkeys=Hotkeys
FR-Designer_Button-Icon=Button Icon
FR-Designer_Button-Name=Button Name
FR-Designer_Button-Name=Button Name
FR-Designer_Button-Type=Button Type
FR-Designer_CardLayout=TabLayout
FR-Designer_Cell=cell
@ -91,20 +90,20 @@ FR-Designer_DS-Dictionary=Data Dictionary
FR-Designer_Data-confusion=Data Confusion
FR-Designer_Data_Type=Data type
FR-Designer_Double_Click_Edit_OR_Clear=Double Click to Edit or Clear
FR-Designer_Email=Mail
FR-Designer_Email=Email
FR-Designer_Enabled=Enabled
FR-Designer_End-Date=End Date
FR-Designer_ExportAndOutput=Export
FR-Designer_FRFont=Font
FR-Designer_FS_Close_Other_Templates=Close other templates
FR-Designer_File=file
FR-Designer_Filter_Conditions=Filter condition
FR-Designer_File=File
FR-Designer_Filter_Conditions=Filter Conditions
FR-Designer_Finish-Modify-Share=Finish Modification And Share
FR-Designer_Fit-App=App self-adaption
FR-Designer_Fit=self-adaption
FR-Designer_Font-Family=Font name
FR-Designer_Font-Size=Font size
FR-Designer_Forbid_Drag_into_Adapt_Pane=Form body cannot be dragged into the object
FR-Designer_Forbid_Drag_into_Adapt_Pane=Form body cannot be dragged into the object
FR-Designer_Forbid_Drag_into_Para_Pane=The object cannot be dragged into the parameter panel
FR-Designer_Foreground=Foreground
FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=Form permissions edition is not supported
@ -115,7 +114,6 @@ FR-Designer_Format_explan=Format explain
FR-Designer_Allow-Blank=Allow Blank
FR-Designer_Formula=Formula
FR-Designer_Forum=Forum
FR-Designer_Get-CubeGetting cube=
FR-Designer_Help=Help
FR-Designer_Hide=Hide
FR-Designer_Hyperlink=Hyperlink
@ -136,7 +134,7 @@ FR-Designer_M-Help=Help
FR-Designer_M-Insert=Insert
FR-Designer_M-Repeat-Freeze=Duplicate and freeze
FR-Designer_M-Server=Server
FR-Designer_M-SwitchWorkspace=Switch Working Directory
FR-Designer_M-SwitchWorkspace=Switch Working Directory
FR-Designer_M-Template=Template
FR-Designer_MDX_Explain=Syntax Reference MDX syntax.\nFor example\:\nWITH\nMEMBER [Measures].[Special Discount] AS\n[Measures].[Discount Amount] * 1.5\nSELECT\n[Measures].[Special Discount] on COLUMNS,\nNON EMPTY [Product].[Product].MEMBERS ON Rows\nFROM [Adventure Works]\nWHERE [Product].[Category].[Bikes]\nNOTE\: COLUMNS, ROWS can be replaced by 0,1, the query axis only supports returning two axis
FR-Designer_M_Help-About_Software=About software
@ -144,7 +142,7 @@ FR-Designer_M_Help-Tutorial=Help tutorial
FR-Designer_Max_Value=max value
FR-Designer_Min_Value=min value
FR-Designer_MobilePhone=Mobile phone
FR-Designer_New_Value=new value
FR-Designer_New_Value=New Value
FR-Designer_None=none
FR-Designer_PaperSize-Mobile=Mobile
FR-Designer_PaperSize-Mobile-Large=Large screen
@ -153,7 +151,7 @@ FR-Designer_Para-Body=Parameter interface
FR-Designer_Parameters=Parameters
FR-Designer_Phone=Phone
FR-Designer_PostCode=Postcode
FR-Designer_Present=present
FR-Designer_Present=Present
FR-Designer_Preview=Preview
FR-Designer_Preview-Data-Confusion=Preview Data After Confusion
FR-Designer_Product_Demo=Demo
@ -163,7 +161,7 @@ FR-Designer_Refresh_Parameter_In_SQL=Whether to refresh parameters in the SQL
FR-Designer_Reg_Expressions=Regular expressions
FR-Designer_Reg_Max_Length=max length
FR-Designer_Reg_Min_Length=min length
FR-Designer_ReportColumns-Columns=Multi-columns/lines
FR-Designer_ReportColumns-Columns=Fixed columns per line
FR-Designer_Return-Date=Return Date
FR-Designer_RichText=Insert Rich Text
FR-Designer_RichTextEditor=Rich Text Editor
@ -174,7 +172,7 @@ FR-Designer_Search=Search
FR-Designer_Set=Set
FR-Designer_Share-Template=Share Template
FR-Designer_Simple_general=Simple custom query
FR-Designer_Song_TypeFace=Song typeface
FR-Designer_Song_TypeFace=Song TypeFace
FR-Designer_Start-Date=Start Date
FR-Designer_Subscript=Subscript
FR-Designer_Superscript=Superscript
@ -183,7 +181,7 @@ FR-Designer_Swatch=Sample
FR-Designer_Tab_title=Tab title
FR-Designer_TableData=Data set
FR-Designer_Thank_guest=Special thanks to
FR-Designer_Thanks-To=Thanks
FR-Designer_Thanks-To=Thanks To
FR-Designer_Title=Title
FR-Designer_Total=Total
FR-Designer_UnSignIn=Not Sign In
@ -241,7 +239,7 @@ FR-Designer_Refresh_Successfully=Refresh successfully
FR-Designer_SQL-Table=Tab
FR-Designer_SQL-View=View
FR-Designer_Failed=Failed
FR-Designer_Chart_Field_Name=FieldName
FR-Designer_Chart_Field_Name=Field Name
FR-Designer_FormulaD-Text=Text
FR-Designer_FormulaD-Logical=Logical Function
FR-Designer_FormulaD-Array=Array
@ -250,13 +248,13 @@ FR-Designer_FormulaD-Other=Other Functions
FR-Designer_FormulaD-All=All Functions
FR-Designer_Function=Function
FR-Designer_Select=Sel
FR-Designer_Edit=Edit
FR-Designer_Edit=Edt
FR-Designer_Description=Description
FR-Designer_Role_changed_isRefresh=Roles change, whether to refresh
FR-Designer_FS_Name=FineBI
FR-Designer_Datasource-Parameter=Datasource Parameter
FR-Designer_Tree-ComboBox=Tree Combobox
FR-Designer_Form-Iframe=Iframe
FR-Designer_Tree-ComboBox=Drop-down Tree
FR-Designer_Form-Iframe=WebView
FR-Designer_Type=Type
FR-Designer_User-defined=User_defined
FR-Designer_Simple_general_forV6=Simple general for Version6+
@ -268,11 +266,11 @@ FR-Designer_Parameters_name=parameters name
FR-Designer_SAP_datatype=SAP datatype
FR-Designer_Return_set_name=Return set
FR-Designer_Datatype=Datatype
FR-Designer_Corre_parameter=Corresponse parameter
FR-Designer_Corre_parameter=Corresponding parameter
FR-Designer_Default_value=Default value
FR-Designer_SAP_column_name=Column name
FR-Designer_Table_name=Table name
FR-Designer_Columns_choosed=Columns choosed
FR-Designer_Columns_choosed=Columns chosen
FR-Designer_Where_claus=Where claus
FR-Designer_PreStyle=Pre Style
FR-Designer_Loading=Loading
@ -288,18 +286,18 @@ FR-Designer_file-is-locked=File is locked by others.
FR-Designer_Custom_Icon_Message1=The 16 * 16 standard PNG image is better.
FR-Designer_Add=Add
FR-Designer_Custom_Icon_Message2=The icon name is already exist or your operation is unreasonable.
FR-Designer_Tooltips=Tooltips
FR-Designer_Remove=Remove
FR-Designer_Tooltips=Tip
FR-Designer_Remove=Delete
FR-Designer_Custom_Icon_SelectIcon=Select icon
FR-Designer_Click_this_button=Click this button to set path
FR-Designer_Custom_Icon_Message3=The icon name is already exist.
FR-Designer_Set_default_browser=Cannot find the default browser, please set default browser in Intenet options .
FR-Designer_Set_default_browser=Cannot find the default browser, please set default browser in Internet options .
FR-Designer_Open=Open
FR-Designer_Utils-OpenDemoEnv=To open the demo, it needs to switch to the workspace\:
FR-Designer_Utils-switch=\nThe current unsaved editing files will be saved under current environment?\nGo on?
FR-Designer_Utils-NewDemoEnv=To open the demo,it needs to create the workspace\:
FR-Designer_Save_As_Global_Style=Save as Global Style
FR-Designer_Input_The_Name_Of_Gloabel_Style=Input the name of gloabel style
FR-Designer_Input_The_Name_Of_Gloabel_Style=Input the name of global style
FR-Designer_This_Name_Has_Exsit=This name has existed
FR-Designer_Shortcut_Set=Shortcut Setting
FR-Designer_Feature_Name=Feature Name\:
@ -332,7 +330,7 @@ FR-Designer_Event_Set=Event Setup
FR-Designer_Blow_set=Following Settings
FR-Designer_I_Want_To_Set_Single=Individually set for the report
FR-Designer_Using_Server_Report_View_Settings=Use server report settings
FR-Designer_ErrorHandlerTemplate=Error Template Definition
FR-Designer_ErrorHandlerTemplate=Error Template Definition
FR-Designer_Save_Path=Save Path
FR-Designer-Collect_OSXTips=Tip\: Press control + v to paste the activation code
FR-Designer_X_Coordinate=Abscissa
@ -358,7 +356,7 @@ FR-Designer-Series_Dismenber_As_Single=Regard consecutive separators as one
FR-Designer_KeyPoint=KeyPoint
FR-Designer_loadedTreeModel=loadedTreeModel
FR-Designer-Failed_to_load_the_plugin=Failed to load the plugin\uFF0Cplease update the plugin\:
FR-Designer-Plugin_Please_Update_Jar=Please Update Jar
FR-Designer-Plugin_Please_Update_Jar=Please Update Jar To\:
FR-Designer-Invalid_Page_Number=Invalid Page Number
FR-Designer_XMLA_Database=DB
FR-Designer_XMLA_UserName=User name
@ -381,7 +379,7 @@ FR-Designer_Clear_All=Clear All
FR-Designer_Log=Log
FR-Designer-Plugin_Expire_Dialog_Title=Plug expired
FR-Designer-Plugin_Expire_Dialog_Text=Plugin expired, go sail soft application center to make a purchase.
FR-Designer-Plugin_Finerest_Addon=Fineres Addon
FR-Designer-Plugin_Finerest_Addon=Fineres Plugins
FR-Designer_Performance_First=Performance First
FR-Designer_Total_N_Grade=Total\:${N}Layer
FR-Designer-BBSLogin_Login-Title=BBS Login
@ -394,7 +392,7 @@ FR-Designer_Product_improve=Product improvement
FR-Designer_Join_Product_improve=Join product improvement plan
FR-Designer_Preference-Function=Function
FR-Designer_max_undo_limit=Max
FR-Designer_Surport_String_To_Formula=Surport String To Formula
FR-Designer_Surport_String_To_Formula=Support String To Formula
FR-Designer_Always=Default execute this operation
FR-Designer_Export_Setting=Export Configuration
FR-Designer_Select_Export_Log_Directory=Select Export Log Directory
@ -559,10 +557,6 @@ FR-Designer_Show_As_Download=Display the binary content using download link
FR-Designer_File_Name_For_Download=File Name For Download
FR-Designer_No=No
FR-Designer_Pagination=Page Break
FR-Designer-Move_Tab_First=move to first
FR-Designer-Move_Tab_End=move to end
FR-Designer-Move_Tab_Next=move to next
FR-Designer-Move_Tab_Prev=move to previous
FR-Designer_DS_TableData=Data Set
FR-Designer_Parameter-Formula=Formula
FR-Designer_Plugin_Should_Update_Please_Contact_Developer=Plugin version is too low, and is not compatible with current API. Please contact the developer to update.
@ -831,7 +825,7 @@ Form-TextArea=Text Fields
FR-Designer_Https_Enable=Start https
Widget-Custom_Widget_Config=Custom control
already_exists=Already exists
FR-Designer_Original_Marked_Filed=Original Tag Field
Original_Marked_Filed=Original Tag Field
BackgroundTexture-Sand=Beach
Values=Values
Not_use_a_cell_attribute_table_editing=You may not use a cell attribute table editing
@ -863,7 +857,7 @@ RP_Authority_Edit=Permission
Warnning=Warning
RoleName_Can_Not_Be_Null=Role name can not be null or duplicate
Application=Applications
Formula_Dictionary_Display_Examples_Html=<html>Real value range is \
Formula_Dictionary_Display_Examples_Html=<html>Real value range is \=range(100), displayed formula of every $$$ in the range is \=0 - $$$, <br> the real result is 1, 2, ..., 100 and diaplay result is -1, -2, ..., -100.<br>&nbsp;</html>
ECP-error_pwd=Password Error
FR-Hyperlink_ChartHyperlink=Chart Hyperlink
M_Edit-FormatBrush=Format Painter
@ -994,7 +988,7 @@ Background-Background_is_NULL=No Background
FR-Designer_Sytle-FRFont=Font
Gradation=Gradation
The_current_list_is_empty=The current list is empty
Formula_Dictionary_Display_Examples=\Real value range is \
Formula_Dictionary_Display_Examples=\Real value range is \=range(100), displayed formula of every $$$ in the range is \=0 - $$$, \n the real result is 1, 2, ..., 100 and diaplay result is -1, -2, ..., -100.
Schedule-Template_Parameter=Template Parameter
JSShow=Dynamic display
Level_coordinates=Hierarchy coordinate
@ -1159,7 +1153,7 @@ Multiline=Multi-line edit
Datasource-Convert_Charset=Encoding Conversion
DashBoard-ConnectionList=Data Connection
Utils-Submit_Forcibly=Submit forcibly
FR-Designer_Parent_Marked_Field=Parent Tag Field
Parent_Marked_Field=Parent Tag Field
Logout=Logout
FR-Designer_Show_Blank_Row=Supplement blank line
FR-Base_Format=Format
@ -1198,7 +1192,7 @@ Privilege-Selected_None_Of_Any_Items=Selected None
FRFont-Size=Size
Function-J2EE_server=J2EE server
FR-Designer_Allow_Blank=Allow NULLs
FR-Designer_Build_Tree_Accord_Parent_Marked_Filed=Build Tree according to the parent tag field of the selected data set
Build_Tree_Accord_Parent_Marked_Filed=Build Tree according to the parent tag field of the selected data set
Preference-Horizontal_Scroll_Bar_Visible=Horizontal Scroll Bar Visible
Scope=Scope
Save_All_Records_In_Memory=Save All Records in Memory
@ -1267,7 +1261,7 @@ DateFormat-Custom_Warning=Note\: Custom date format does not support the format
Unit_MM=MM
Server-Start=Start
CellPage-Can_Break_On_Paginate=Can break when paging
FR-Designer_Build_Tree_Accord_Marked_Filed_Length=Build tree according to tag field's length
Build_Tree_Accord_Marked_Filed_Length=Build tree according to tag field's length
ComboCheckBox-Start_Symbol=Initializer
Real=Real
RWA-Batch_Modify_Cells=Batch Modify Cells
@ -1376,7 +1370,7 @@ Not_Exsit=Not exist in report
Utils-Insert_Row=Insert Row
Utils-Delete_Row=Delete Row
not_support_authority_edit=this element does not support authority edit
Formula_Tips=The formula must be begin with "\
Formula_Tips=The formula must be begin with "\="\!
FR-Action_Copy=Copy
Compile_Success=Compile Successfully
BackgroundTexture-RecycledPaper=Recycled Paper
@ -1541,7 +1535,7 @@ FR-Designer_Cancel=Cancel
Button-Group-Display-Columns=Number of columns displayed
Widget-Height=Control Height
Examples=Examples
Formula_Dictionary_Display_Example=Real value range is \
Formula_Dictionary_Display_Example=Real value range is \=range(100), displayed formula of every $$$ in the range is \=0 - $$$, \n the real result is 1, 2, ..., 100 and diaplay result is -1, -2, ..., -100.
StyleAlignment-Horizontal=Horizontal
HyperLink_Must_Alone_Reset=Multiple hyperlink
ExpandD-Expand_Direction=Extension Direction
@ -1715,7 +1709,7 @@ Condition_Display=Condition Display
FR-Server-Design_template_unopened=Can't open the template
Function-Function_Class_Name=Function Class Name
Schedule-Template=Template name
FR-Designer_Tree_Data_Field=Tree Data Field
Tree_Data_Field=Tree Data Field
Border-Style-Normal=Rectangular Border
Top_And_Double_Bottom_Border_Line=Top and bottom double border
FR-Server_Embedded_Server_Start=Built-in server-Open
@ -1792,7 +1786,7 @@ Form-DataTable=DataTable
Sub_Report_ToolTips=Sub Report ToolTips
Right_Top=Upper right
M_Edit-Merge_Cell=Merge Cell
FR-Designer_Restore_Default=Back to default\
FR-Designer_Restore_Default=Back to default
Component_Interval=Components Interval
Cover_None=Override None
Datasource-From_Database=DB table
@ -1803,7 +1797,7 @@ ParentCell_Setting=Parent Cell Setting
Only_selected_cell_can_paste_only=Paste when cell is selected
M_Report-Report_Columns=Multi-columns/lines
Unit_Hundred=Hundred
FR-Designer_DataTable-Build=
FR-Designer_DataTable-Build=Quick build (hierarchical)
Widget-Form_Widget_Config=Form control
Server-version-tip-moreInfo=Conform the version numbers of FineReport Designer and the deployment server are consistent, in order to avoid the problems caused by inconsistent versions. If you open the template produced by higher designer vision, error may occurs or the original template properties missed. If the Designer Version you used to create the template is higher than the final deployment server version, the server may not be able to properly load the template.
Actions=Task
@ -1823,7 +1817,7 @@ BackgroundTexture-Cork=Cork
M_Format-Data_Map=Data Dictionary
FR-mobile_native_analysis=native analysis
HighLight=High Light
FR-Designer_Dropdown-More-Preview=
FR-Designer_Dropdown-More-Preview=Drop down for more
local=local
FR-Designer_Gradation=Gradation
PageSetup-Finis_Start_Column=Duplicate Last Column
@ -1900,7 +1894,7 @@ All_Border_Line=All Border
FR-Utils-Please_Input_a_New_Name=Input a New Name
FR-Base_Formula_Plugin=Plugin Function
Two_Rows_Of_Three_Grid=A grid with 2 rows and 3 columns
FR-Designer_Certificate_Pass=Certificate Password\
FR-Designer_Certificate_Pass=Certificate Password
Bubble-Series_Name=Series Name
M-New_Multi_Report=New Aggregate Report
BackgroundTexture-PinkTissuePaper=Pink Sandpaper
@ -1946,7 +1940,7 @@ Widget-User_Defined=Predefine
Url_location=Absolute path
Disk_File=Disk File
Inside=Inside
FR-Designer_filedChosen=
FR-Designer_filedChosen=Dependent fields
ServerM-Predefined_Styles=Predefined Styles
is_need_word_adjust=Word Auto Adjust
Background-Null=No Background
@ -1991,4 +1985,19 @@ FormulaD-Data_Fields=Data Items
FR-Designer_Role=Role
FR-Designer_Permissions=Permissions
FR-Designer_Form_Button=Button
FR-Designer_WF_Name=Name
FR-Designer_WF_Name=Name
FR-Designer_Double=Decimal
FR-Designer_Query=Query
FR-Designer_Font=Font
FR-Designer_Confirm=OK
FR-Designer_Parameter=Parameter
FR-Designer-Plugin_Plugin=Plugin
FR-Designer_Background=BG
Template=Template
FR-Designer_Original_Marked_Filed=Original Tag Field
FR-Designer_Build_Tree_Accord_Marked_Filed_Length=Build tree according to tag field's length
FR-Designer_Tree_Data_Field=Tree Data Field
FR-Designer_Parent_Marked_Field=Parent Tag Field
FR-Designer_Build_Tree_Accord_Parent_Marked_Filed=Build Tree according to the parent tag field of the selected data set
FR-Product_Demo=Demo

2420
designer_base/src/com/fr/design/locale/designer_ja_JP.properties

File diff suppressed because it is too large Load Diff

51
designer_base/src/com/fr/design/locale/designer_ko_KR.properties

@ -1,4 +1,3 @@
# generated time: \u661F\u671F\u56DB \u5341\u4E00\u6708 24 12:02:51 CST 2016
FR-Designer-BBSLogin_Account=\u7528\u6237\u540D
FR-Designer-BBSLogin_Connection-Failure=\uB124\uD2B8\uC6CC\uD06C\uB9C1\uD06C\uC2E4\uD328.\uD604\uC7AC\uB124\uD2B8\uC6CC\uD06C\uC0C1\uD0DC\uB97C\uAC80\uC0AC\uD574\uC8FC\uC2ED\uC2DC\uC624.
FR-Designer-BBSLogin_Connection-Failure-Tip=\uC54C\uB9BC
@ -12,7 +11,7 @@ FR-Designer-BBSLogin_Switch-Account=\uC804\uD658\uACC4\uC815\uBC88\uD638
FR-Designer-BBSLogin_Privite-Message=\uAC1C\uC778\u0020\uBA54\uC2DC\uC9C0
FR-Designer-BBSLogin_Times=\uD68C
FR-Designer-BBSLogin_Username-Empty-Tip=\uC0AC\uC6A9\uC790\uC774\uB984\uC740\uBE48\uCE78\uC73C\uB85C\uB458\uC218\uC5C6\uC2B5\uB2C8\uB2E4.
FR-Designer-Basic_More_Color=\uC0C9\uB354\uBCF4\uAE30...
FR-Designer-Basic_More_Color=\uB354\uBCF4\uAE30\uC0C9
FR-Designer-Estate_Any=\uC81C\uD55C\uC5C6\uC74C
FR-Designer-Estate_Default_Font=\uAE30\uBCF8\uAE00\uAF34
FR-Designer-Estate_Default_Null=\uAE30\uBCF8\uBE44\uC5B4\uC788\uC74C
@ -76,7 +75,7 @@ FR-Designer_Chart_Cell=\uCC28\uD2B8 \uD558\uC774\uD37C\uB9C1\uD06C-\uC140 \uC5F0
FR-Designer_Chart_Float=\uCC28\uD2B8\uD558\uC774\uD37C\uB9C1\uD06C-\uC5F0\uB3D9\uC11C\uC2A4\uD39C\uC2A4\uC694\uC18C
FR-Designer_Chart_Float_chart=\uCC28\uD2B8 \uD558\uC774\uD37C\uB9C1\uD06C-\uC704\uC82F \uCC28\uD2B8
FR-Designer_Check-for-Updates=\uC5C5\uB370\uC774\uD2B8\uAC80\uC0AC
FR-Designer_Choose-Data-Confusion-Tip=\\ud63c\uD569\uD560\uD544\uB4DC\uB97C\uC120\uD0DD\uD6C4\uBBF8\uB9AC\uBCF4\uAE30
FR-Designer_Choose-Data-Confusion-Tip=\\ud63c\uD569\uD560\uD544\uB4DC\uB97C\uC120\uD0DD\uD6C4\uBBF8\uB9AC\uBCF4\uAE30
FR-Designer_Close=\uB2EB\uAE30
FR-Designer_Column=\uC5F4
FR-Designer_Column_Measure=\uC5F4\uCD95/\uCE21\uC815\uAC12
@ -106,7 +105,7 @@ FR-Designer_Font-Family=\uAE00\uAF34\uBA85\uCE6D
FR-Designer_Font-Size=\uAE00\uAF34\uD06C\uAE30
FR-Designer_Forbid_Drag_into_Adapt_Pane=\uD574\uB2F9\uAC1D\uCCB4\uB294\uD3FC\uD14C\uC774\uBE14\uBC14\uB514\uB4DC\uB798\uADF8\uB97C\uD5C8\uC6A9\uD558\uC9C0\uC54A\uC2B5\uB2C8\uB2E4.
FR-Designer_Forbid_Drag_into_Para_Pane=\uD574\uB2F9\uAC1D\uCCB4\uB294\uB9E4\uAC1C\uBCC0\uC218\uD328\uB110\uC744\uB4DC\uB798\uADF8\uD560\uC218\uC5C6\uC2B5\uB2C8\uB2E4.
FR-Designer_Foreground=\uC0C9
FR-Designer_Foreground=\uBE44\uC804
FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=\uD3FC\uAD8C\uD55C\uD3B8\uC9D1\uC744\uC9C0\uC6D0\uD558\uC9C0\uC54A\uC2B5\uB2C8\uB2E4.
FR-Designer_Form-Report=\uBB38\uC11C\uBE14\uB7ED
FR-Designer_Form_EmbeddedTD=\uD3FC(\uB0B4\uC7A5\uB370\uC774\uD130)
@ -162,7 +161,7 @@ FR-Designer_Refresh_Parameter_In_SQL=SQL\uC758\uB9E4\uAC1C\uBCC0\uC218\uB97C\uC0
FR-Designer_Reg_Expressions=\uC815\uADDC\uD45C\uD604\uC2DD
FR-Designer_Reg_Max_Length=\uCD5C\uB300\uAE38\uC774
FR-Designer_Reg_Min_Length=\uCD5C\uC18C\uAE38\uC774
FR-Designer_ReportColumns-Columns=\uC140\uB098\uB204\uAE30
FR-Designer_ReportColumns-Columns=\uC5F4\uC140\uB098\uB204\uAE30
FR-Designer_Return-Date=\uB0A0\uC9DC\uB3CC\uC544\uAC00\uAE30
FR-Designer_RichText=\uB9AC\uCE58\uD14D\uC2A4\uD2B8\uBC15\uC2A4\uC0BD\uC785
FR-Designer_RichTextEditor=\uB9AC\uCE58\uD14D\uC2A4\uD2B8\uBC15\uC2A4\uD3B8\uC9D1\uAE30
@ -446,7 +445,6 @@ FR-Designer_WLayout-Absolute-ToolTips=\uC790\uC720\uC2DD\uB808\uC774\uC544\uC6C3
FR-Designer_Add_all=\uBAA8\uB450\uCD94\uAC00
FR-Designer_Reset=
FR-Designer_Language_Change_Successful=
FR-Designer_Template_Web_Attributes=
FR-Designer_Basic=\uAE30\uBCF8
FR-Designer_Printers(Server)=\uD504\uB9B0\uD130(\uC11C\uBC84)
FR-Designer_Pagination_Setting=\uD398\uC774\uC9C0\uB098\uB204\uAE30\uBBF8\uB9AC\uBCF4\uAE30\uC124\uC815
@ -472,7 +470,7 @@ FR-Designer_Exporting=\uB0B4\uBCF4\uB0B4\uAE30\uC911
FR-Designer_Export-PDF=PDF\uC11C\uC2DD
FR-Designer_Button_OK=\uD655\uC778
FR-Designer_Button_Cancel=\uCDE8\uC18C
FR-Designer_JavaScript=
FR-Designer_JavaScript=\uC790\uBC14\uC2A4\uD06C\uB9BD\uD2B8
FR-Designer_JavaScript_Form_Submit=
FR-Designer_JavaScript_Commit_to_Database=
FR-Designer_JavaScript_Custom=
@ -485,7 +483,7 @@ FR-Designer_Attribute=
FR-Designer_Form_Editing_Listeners=
FR-Designer_Form_Basic_Properties=
FR-Designer_DS_Dictionary=
FR-Designer_Create_Tree=
FR-Designer_Create_Tree=\uD2B8\uB9AC\uC0DD\uC131
FR-Designer_Set_Callback_Function=
FR-Designer_ConfirmDialog_Content=
FR-Designer_ConfirmDialog_Title=
@ -827,7 +825,7 @@ Form-TextArea=\uD14D\uC2A4\uD2B8\uC601\uC5ED
FR-Designer_Https_Enable=\uC2E4\uD589https
Widget-Custom_Widget_Config=\uC0AC\uC6A9\uC790\uC815\uC758\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4
already_exists=\uC774\uBBF8\uC874\uC7AC\uD569\uB2C8\uB2E4.
FR-Designer_Original_Marked_Filed=\uCD08\uAE30\uD0DC\uADF8\uD544\uB4DC
Original_Marked_Filed=\uCD08\uAE30\uD0DC\uADF8\uD544\uB4DC
BackgroundTexture-Sand=\uBAA8\uB798\uC0AC\uC7A5
Values=\uAC12
Not_use_a_cell_attribute_table_editing=\uC140\uC18D\uC131\uC73C\uB85C\uD45C\uB97C\uD3B8\uC9D1\uD560\uC218\uC5C6\uC2B5\uB2C8\uB2E4.
@ -859,7 +857,7 @@ RP_Authority_Edit=\uAD8C\uD55C\uD3B8\uC9D1
Warnning=\uC54C\uB9BC
RoleName_Can_Not_Be_Null=\uC5ED\uD560\uC774\uB984\uC740\uBE44\uC5B4\uC788\uAC70\uB098\uC911\uBCF5\uB418\uC5B4\uC11C\uB294\uC548\uB429\uB2C8\uB2E4.
Application=\uC560\uD50C\uB9AC\uCF00\uC774\uC158
Formula_Dictionary_Display_Examples_Html=<html>\uC2E4\uC81C\uAC12\uBC94\uC704:\
Formula_Dictionary_Display_Examples_Html=<html>\uC2E4\uC81C\uAC12\uBC94\uC704:\=0 - $$$\uFF0C<br>\uCD5C\uC885\uACB0\uACFC\uC758\uC2E4\uC81C\uAC12: 1, 2, ..., 100,\uD45C\uC2DC\uAC12: -1, -2, ... , -100. <br>&nbsp;</html>
ECP-error_pwd=\uBE44\uBC00\uBC88\uD638\uC785\uB825\uC624\uB958
FR-Hyperlink_ChartHyperlink=\uCC28\uD2B8\uD558\uC774\uD37C\uB9C1\uD06C
M_Edit-FormatBrush=\uC11C\uC2DD\uD504\uB9B0\uD2B8(B)
@ -990,7 +988,7 @@ Background-Background_is_NULL=\uBC30\uACBD\uC5C6\uC74C
FR-Designer_Sytle-FRFont=\uAE00\uAF34
Gradation=\uB2E8\uACC4
The_current_list_is_empty=\uD604\uC7AC\uB9AC\uC2A4\uD2B8\uBE44\uC5B4\uC788\uC74C
Formula_Dictionary_Display_Examples=\\uc2e4\uC81C\uAC12\uBC94\uC704:\
Formula_Dictionary_Display_Examples=\\uc2e4\uC81C\uAC12\uBC94\uC704:\=0 - $$$\uFF0C\n \uCD5C\uC885\uACB0\uACFC\uC758\uC2E4\uC81C\uAC12: 1, 2, ..., 100, \n \uD45C\uC2DC\uAC12: -1, -2, ... , -100.
Schedule-Template_Parameter=\uD15C\uD50C\uB9BF\uB9E4\uAC1C\uBCC0\uC218
JSShow=\uB3D9\uC801\uB514\uC2A4\uD50C\uB808\uC774
Level_coordinates=\uACC4\uCE35\uBCF4\uC870\uC88C\uD45C
@ -1155,7 +1153,7 @@ Multiline=\uC5EC\uB7EC\uD589\uD3B8\uC9D1
Datasource-Convert_Charset=\uCF54\uB529\uC804\uD658
DashBoard-ConnectionList=\uB370\uC774\uD130\uB9C1\uD06C
Utils-Submit_Forcibly=\uC81C\uCD9C\uAC15\uD589
FR-Designer_Parent_Marked_Field=\uBD80\uBAA8\uD0DC\uADF8\uD544\uB4DC
Parent_Marked_Field=\uBD80\uBAA8\uD0DC\uADF8\uD544\uB4DC
Logout=\uB098\uAC00\uAE30
FR-Designer_Show_Blank_Row=\uACF5\uBC31\uD589\uBCF4\uCDA9
FR-Base_Format=\uC11C\uC2DD
@ -1194,7 +1192,7 @@ Privilege-Selected_None_Of_Any_Items=\uC120\uD0DD\uD55C\uD56D\uC774\uC5C6\uC2B5\
FRFont-Size=\uD06C\uAE30
Function-J2EE_server=J2EE\uC11C\uBC84
FR-Designer_Allow_Blank=\uBE48\uCE78\uD5C8\uC6A9
FR-Designer_Build_Tree_Accord_Parent_Marked_Filed=\uC120\uD0DD\uD55C\uB370\uC774\uD130\uC138\uD2B8\uC758\uBD80\uBAA8\uD0DC\uADF8\uD544\uB4DC\uC5D0\uB530\uB77C\uD2B8\uB9AC\uC0DD\uC131
Build_Tree_Accord_Parent_Marked_Filed=\uC120\uD0DD\uD55C\uB370\uC774\uD130\uC138\uD2B8\uC758\uBD80\uBAA8\uD0DC\uADF8\uD544\uB4DC\uC5D0\uB530\uB77C\uD2B8\uB9AC\uC0DD\uC131
Preference-Horizontal_Scroll_Bar_Visible=\uC218\uD3C9\uC2A4\uD06C\uB864\uBC14\uB97C\uBCFC\uC218\uC788\uC2B5\uB2C8\uB2E4.
Scope=\uBC94\uC704
Save_All_Records_In_Memory=\uBAA8\uB4E0\uB808\uCF54\uB4DC\uAC00\uBA54\uBAA8\uB9AC\uC5D0\uC800\uC7A5\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
@ -1263,7 +1261,7 @@ DateFormat-Custom_Warning=\uBE44\uACE0\uFF1A\uC0AC\uC6A9\uC790\uC815\uC758\uB0A0
Unit_MM=\uBC00\uB9AC\uBBF8\uD130
Server-Start=\uC2E4\uD589
CellPage-Can_Break_On_Paginate=\uD398\uC774\uC9C0\uB098\uB204\uAE30\uC2DC\uB098\uB20C\uC218\uC788\uC74C
FR-Designer_Build_Tree_Accord_Marked_Filed_Length=\uC120\uD0DD\uD55C\uB370\uC774\uD130\uC138\uD2B8\uC758\uD0DC\uADF8\uD544\uB4DC\uAE38\uC774\uC5D0\uB530\uB77C\uD2B8\uB9AC\uC0DD\uC131
Build_Tree_Accord_Marked_Filed_Length=\uC120\uD0DD\uD55C\uB370\uC774\uD130\uC138\uD2B8\uC758\uD0DC\uADF8\uD544\uB4DC\uAE38\uC774\uC5D0\uB530\uB77C\uD2B8\uB9AC\uC0DD\uC131
ComboCheckBox-Start_Symbol=\uC2DC\uC791\uBD80\uD638
Real=\uC2E4\uC81C
RWA-Batch_Modify_Cells=\uB300\uB7C9\uC218\uC815\uC140
@ -1537,7 +1535,7 @@ FR-Designer_Cancel=\uCDE8\uC18C
Button-Group-Display-Columns=\uC5F4\uC758\uC218\uB97C\uB098\uD0C0\uB0C4
Widget-Height=\uC18C\uD504\uD2B8\uC6E8\uC5B4\uC81C\uC5B4\uB192\uC774
Examples=\uC608\uC2DC
Formula_Dictionary_Display_Example=\uC2E4\uC81C\uAC12\uBC94\uC704:\
Formula_Dictionary_Display_Example=\uC2E4\uC81C\uAC12\uBC94\uC704:\=0 - $$$\uFF0C\n\uCD5C\uC885\uACB0\uACFC\uC758\uC2E4\uC81C\uAC12: 1, 2, ..., 100, \uD45C\uC2DC\uAC12: -1, -2, ... , -100.
StyleAlignment-Horizontal=\uC218\uD3C9\uC815\uB82C
HyperLink_Must_Alone_Reset=\uC5EC\uB7EC\uAC1C\uD558\uC774\uD37C\uB9C1\uD06C
ExpandD-Expand_Direction=\uD655\uB300\uBC29\uD5A5
@ -1711,7 +1709,7 @@ Condition_Display=\uC870\uAC74\uBCF4\uC774\uAE30
FR-Server-Design_template_unopened=\uD15C\uD50C\uB9BF\uC744\uC5F4\uC218\uC5C6\uC2B5\uB2C8\uB2E4.
Function-Function_Class_Name=\uD568\uC218\uD074\uB798\uC2A4\uB124\uC784
Schedule-Template=\uD15C\uD50C\uB9BF\uBA85\uCE6D
FR-Designer_Tree_Data_Field=\uD2B8\uB9AC\uB370\uC774\uD130\uD544\uB4DC
Tree_Data_Field=\uD2B8\uB9AC\uB370\uC774\uD130\uD544\uB4DC
Border-Style-Normal=\uC9C1\uAC01\uD14C\uB450\uB9AC
Top_And_Double_Bottom_Border_Line=\uC704\uD14C\uB450\uB9AC\uC120\uACFC\uB450\uC904\uBC11\uD14C\uB450\uB9AC\uC120
FR-Server_Embedded_Server_Start=\uB0B4\uC7A5\uB41C\uC11C\uBC84-\uC5F4\uAE30
@ -1983,4 +1981,23 @@ FR-Designer_Edit_String_To_Formula=\uBB38\uC790\uC5F4\uC744\uC218\uC2DD\uC73C\uB
FR-Base_UnSignIn=\uC544\uC9C1 \uB4F1\uB85D
Every=\uAC01
CellWrite-Preview_Cell_Content=\uC140\uB0B4\uC6A9\uBBF8\uB9AC\uBCF4\uAE30
FormulaD-Data_Fields=\uB370\uC774\uD130\uD56D\uBAA9
FormulaD-Data_Fields=\uB370\uC774\uD130\uD56D\uBAA9
FR-Designer_Permissions=
FR-Designer_Form_Button=
FR-Designer_WF_Name=
FR-Designer_Role=
FR-Designer_Double=\uC18C\uC218
FR-Designer_Query=\uCC3E\uC544\uBCF4\uAE30
FR-Designer_Font=\uAE00\uAF34
FR-Designer_Confirm=\uD655\uC778
FR-Designer_Parameter=\uB9E4\uAC1C\uBCC0\uC218
FR-Designer-Plugin_Plugin=\uD50C\uB7EC\uADF8\uC778
FR-Designer_Background=\uBC30\uACBD
Template=\uD15C\uD50C\uB9BF
FR-Designer_Original_Marked_Filed=\uCD08\uAE30\uD0DC\uADF8\uD544\uB4DC
FR-Designer_Build_Tree_Accord_Marked_Filed_Length=\uC120\uD0DD\uD55C\uB370\uC774\uD130\uC138\uD2B8\uC758\uD0DC\uADF8\uD544\uB4DC\uAE38\uC774\uC5D0\uB530\uB77C\uD2B8\uB9AC\uC0DD\uC131
FR-Designer_Tree_Data_Field=\uD2B8\uB9AC\uB370\uC774\uD130\uD544\uB4DC
FR-Designer_Parent_Marked_Field=\uBD80\uBAA8\uD0DC\uADF8\uD544\uB4DC
FR-Designer_Build_Tree_Accord_Parent_Marked_Filed=\uC120\uD0DD\uD55C\uB370\uC774\uD130\uC138\uD2B8\uC758\uBD80\uBAA8\uD0DC\uADF8\uD544\uB4DC\uC5D0\uB530\uB77C\uD2B8\uB9AC\uC0DD\uC131
FR-Product_Demo=\uC81C\uD488\uC2DC\uC5F0

48
designer_base/src/com/fr/design/locale/designer_zh_CN.properties

@ -1,4 +1,3 @@
# generated time: \u661F\u671F\u56DB \u5341\u4E00\u6708 24 12:02:51 CST 2016
FR-Designer-BBSLogin_Account=\u7528\u6237\u540D
FR-Designer-BBSLogin_Connection-Failure=\u7F51\u7EDC\u8FDE\u63A5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u5F53\u524D\u7F51\u7EDC\u72B6\u6001
FR-Designer-BBSLogin_Connection-Failure-Tip=\u63D0\u793A
@ -12,7 +11,7 @@ FR-Designer-BBSLogin_Switch-Account=\u5207\u6362\u8D26\u53F7
FR-Designer-BBSLogin_Privite-Message=\u79C1\u4EBA\u6D88\u606F
FR-Designer-BBSLogin_Times=\u6B21
FR-Designer-BBSLogin_Username-Empty-Tip=\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A
FR-Designer-Basic_More_Color=\u66F4\u591A\u989C\u8272...
FR-Designer-Basic_More_Color=\u66F4\u591A\u989C\u8272
FR-Designer-Estate_Any=\u4E0D\u9650
FR-Designer-Estate_Default_Font=\u9ED8\u8BA4\u5B57\u4F53
FR-Designer-Estate_Default_Null=\u9ED8\u8BA4\u4E3A\u7A7A
@ -76,7 +75,7 @@ FR-Designer_Chart_Cell=\u56FE\u8868\u8D85\u94FE-\u8054\u52A8\u5355\u5143\u683C
FR-Designer_Chart_Float=\u56FE\u8868\u8D85\u94FE-\u8054\u52A8\u60AC\u6D6E\u5143\u7D20
FR-Designer_Chart_Float_chart=\u56FE\u8868\u8D85\u94FE-\u60AC\u6D6E\u7A97\u56FE\u8868
FR-Designer_Check-for-Updates=\u68C0\u67E5\u66F4\u65B0
FR-Designer_Choose-Data-Confusion-Tip=\ \u8BF7\u9009\u62E9\u9700\u8981\u6DF7\u6DC6\u7684\u5B57\u6BB5\u540E\u9884\u89C8
FR-Designer_Choose-Data-Confusion-Tip=\ \u8BF7\u9009\u62E9\u9700\u8981\u6DF7\u6DC6\u7684\u5B57\u6BB5\u540E\u9884\u89C8
FR-Designer_Close=\u5173\u95ED
FR-Designer_Column=\u5217
FR-Designer_Column_Measure=\u5217\u8F74/\u5EA6\u91CF\u503C
@ -96,7 +95,7 @@ FR-Designer_Enabled=\u53EF\u7528
FR-Designer_End-Date=\u7ED3\u675F\u65E5\u671F
FR-Designer_ExportAndOutput=\u5BFC\u51FA
FR-Designer_FRFont=\u5B57\u4F53
FR-Designer_FS_Close_Other_Templates=\u5173\u95ED\u5176\u4ED6\u6A21\u677F
FR-Designer_FS_Close_Other_Templates=\u5173\u95ED\u5176\u4ED6\u6A21\u7248
FR-Designer_File=\u6587\u4EF6
FR-Designer_Filter_Conditions=\u8FC7\u6EE4\u6761\u4EF6
FR-Designer_Finish-Modify-Share=\u5B8C\u6210\u4FEE\u6539\u5E76\u5206\u4EAB
@ -106,7 +105,7 @@ FR-Designer_Font-Family=\u5B57\u4F53\u540D\u79F0
FR-Designer_Font-Size=\u5B57\u4F53\u5927\u5C0F
FR-Designer_Forbid_Drag_into_Adapt_Pane=\u8BE5\u5BF9\u8C61\u4E0D\u5141\u8BB8\u62D6\u5165\u8868\u5355\u4E3B\u4F53
FR-Designer_Forbid_Drag_into_Para_Pane=\u8BE5\u5BF9\u8C61\u4E0D\u80FD\u62D6\u5165\u53C2\u6570\u9762\u677F
FR-Designer_Foreground=\u989C\u8272
FR-Designer_Foreground=\u524D\u666F
FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=\u6682\u4E0D\u652F\u6301\u8868\u5355\u6743\u9650\u7F16\u8F91
FR-Designer_Form-Report=\u62A5\u8868\u5757
FR-Designer_Form_EmbeddedTD=\u8868\u5355(\u5185\u7F6E\u6570\u636E)
@ -163,7 +162,7 @@ FR-Designer_Refresh_Parameter_In_SQL=\u662F\u5426\u5237\u65B0SQL\u4E2D\u7684\u53
FR-Designer_Reg_Expressions=\u6B63\u5219\u8868\u8FBE\u5F0F
FR-Designer_Reg_Max_Length=\u6700\u5927\u957F\u5EA6
FR-Designer_Reg_Min_Length=\u6700\u5C0F\u957F\u5EA6
FR-Designer_ReportColumns-Columns=\u5206\u680F
FR-Designer_ReportColumns-Columns=\u5217\u5206\u680F
FR-Designer_Return-Date=\u8FD4\u56DE\u65E5\u671F
FR-Designer_RichText=\u63D2\u5165\u5BCC\u6587\u672C
FR-Designer_RichTextEditor=\u5BCC\u6587\u672C\u7F16\u8F91\u5668
@ -358,7 +357,7 @@ FR-Designer-Series_Dismenber_As_Single=\u8FDE\u7EED\u5206\u9694\u7B26\u89C6\u4E3
FR-Designer_KeyPoint=\u5173\u952E\u8282\u70B9
FR-Designer_loadedTreeModel=\u52A0\u8F7D\u5931\u8D25,\u8BF7\u68C0\u67E5\u540E\u91CD\u8BD5
FR-Designer-Failed_to_load_the_plugin=\u65E0\u6CD5\u52A0\u8F7D\u63D2\u4EF6\uFF0C\u8BF7\u66F4\u65B0\u63D2\u4EF6\uFF1A
FR-Designer-Plugin_Please_Update_Jar=\u8BF7\u66F4\u65B0Jar\u5305, \u63D2\u4EF6\u9700\u6C42\u6700\u4F4E\u7248\u672C
FR-Designer-Plugin_Please_Update_Jar=\u8BF7\u66F4\u65B0Jar\u5305\u81F3\:
FR-Designer-Invalid_Page_Number=\u65E0\u6548\u9875\u7801
FR-Designer_Get-CubeGetting=\u83B7\u53D6cube
FR-Designer_XMLA_Database=\u6570\u636E\u5E93
@ -826,7 +825,7 @@ Form-TextArea=\u6587\u672C\u57DF
FR-Designer_Https_Enable=\u542F\u7528https
Widget-Custom_Widget_Config=\u81EA\u5B9A\u4E49\u63A7\u4EF6
already_exists=\u5DF2\u7ECF\u5B58\u5728
FR-Designer_Original_Marked_Filed=\u539F\u59CB\u6807\u8BB0\u5B57\u6BB5
Original_Marked_Filed=\u539F\u59CB\u6807\u8BB0\u5B57\u6BB5
BackgroundTexture-Sand=\u6C99\u6EE9
Values=\u503C
Not_use_a_cell_attribute_table_editing=\u60A8\u4E0D\u53EF\u4EE5\u7528\u5355\u5143\u683C\u5C5E\u6027\u8868\u7F16\u8F91
@ -858,7 +857,7 @@ RP_Authority_Edit=\u6743\u9650\u7F16\u8F91
Warnning=\u63D0\u9192
RoleName_Can_Not_Be_Null=\u89D2\u8272\u540D\u4E0D\u5141\u8BB8\u4E3A\u7A7A\u4E14\u4E0D\u80FD\u91CD\u590D
Application=\u5E94\u7528\u7A0B\u5E8F
Formula_Dictionary_Display_Examples_Html=<html>\u5B9E\u9645\u503C\u8303\u56F4\u4E3A \
Formula_Dictionary_Display_Examples_Html=<html>\u5B9E\u9645\u503C\u8303\u56F4\u4E3A \=range(100),\u5BF9\u5B9E\u9645\u503C\u8303\u56F4\u5185\u7684\u6BCF\u4E2A$$$\u7684\u663E\u793A\u516C\u5F0F\u4E3A \=0 - $$$\uFF0C<br>\u5219\u6700\u7EC8\u7684\u7ED3\u679C\u5B9E\u9645\u503C\u4E3A1, 2, ..., 100,\u663E\u793A\u503C\u4E3A-1, -2, ... , -100\u3002<br>&nbsp;</html>
ECP-error_pwd=\u5BC6\u7801\u9519\u8BEF
FR-Hyperlink_ChartHyperlink=\u56FE\u8868\u8D85\u94FE
M_Edit-FormatBrush=\u683C\u5F0F\u5237(B)
@ -989,7 +988,7 @@ Background-Background_is_NULL=\u6CA1\u6709\u80CC\u666F
FR-Designer_Sytle-FRFont=\u5B57\u4F53
Gradation=\u5C42\u6B21
The_current_list_is_empty=\u5F53\u524D\u5217\u8868\u4E3A\u7A7A
Formula_Dictionary_Display_Examples=\ \u5B9E\u9645\u503C\u8303\u56F4\u4E3A \
Formula_Dictionary_Display_Examples=\ \u5B9E\u9645\u503C\u8303\u56F4\u4E3A \=range(100),\u5BF9\u5B9E\u9645\u503C\u8303\u56F4\n \u5185\u7684\u6BCF\u4E2A$$$\u7684\u663E\u793A\u516C\u5F0F\u4E3A \=0 - $$$\uFF0C\n \u5219\u6700\u7EC8\u7684\u7ED3\u679C\u5B9E\u9645\u503C\u4E3A1, 2, ..., 100, \n \u663E\u793A\u503C\u4E3A-1, -2, ... , -100\u3002
Schedule-Template_Parameter=\u6A21\u677F\u53C2\u6570
JSShow=\u52A8\u6001\u5C55\u793A
Level_coordinates=\u5C42\u6B21\u5750\u6807
@ -1154,7 +1153,7 @@ Multiline=\u591A\u884C\u7F16\u8F91
Datasource-Convert_Charset=\u7F16\u7801\u8F6C\u6362
DashBoard-ConnectionList=\u6570\u636E\u8FDE\u63A5
Utils-Submit_Forcibly=\u5F3A\u884C\u63D0\u4EA4
FR-Designer_Parent_Marked_Field=\u7236\u6807\u8BB0\u5B57\u6BB5
Parent_Marked_Field=\u7236\u6807\u8BB0\u5B57\u6BB5
Logout=\u9000\u51FA
FR-Designer_Show_Blank_Row=\u8865\u5145\u7A7A\u767D\u884C
FR-Base_Format=\u683C\u5F0F
@ -1193,7 +1192,7 @@ Privilege-Selected_None_Of_Any_Items=\u6CA1\u6709\u9009\u4E2D\u4EFB\u4F55\u4E00\
FRFont-Size=\u5927\u5C0F
Function-J2EE_server=J2EE\u670D\u52A1\u5668
FR-Designer_Allow_Blank=\u5141\u8BB8\u4E3A\u7A7A
FR-Designer_Build_Tree_Accord_Parent_Marked_Filed=\u4F9D\u8D56\u6240\u9009\u6570\u636E\u96C6\u7684\u7236\u6807\u8BB0\u5B57\u6BB5\u6784\u5EFA\u6811
Build_Tree_Accord_Parent_Marked_Filed=\u4F9D\u8D56\u6240\u9009\u6570\u636E\u96C6\u7684\u7236\u6807\u8BB0\u5B57\u6BB5\u6784\u5EFA\u6811
Preference-Horizontal_Scroll_Bar_Visible=\u6C34\u5E73\u6EDA\u52A8\u6761\u53EF\u89C1
Scope=\u8303\u56F4
Save_All_Records_In_Memory=\u6240\u6709\u8BB0\u5F55\u90FD\u4FDD\u5B58\u5728\u5185\u5B58\u4E2D
@ -1262,7 +1261,7 @@ DateFormat-Custom_Warning=\u6CE8\uFF1A\u81EA\u5B9A\u4E49\u65E5\u671F\u683C\u5F0F
Unit_MM=\u6BEB\u7C73
Server-Start=\u542F\u52A8
CellPage-Can_Break_On_Paginate=\u5206\u9875\u65F6\u53EF\u4EE5\u65AD\u5F00
FR-Designer_Build_Tree_Accord_Marked_Filed_Length=\u4F9D\u8D56\u6240\u9009\u6570\u636E\u96C6\u7684\u6807\u8BB0\u5B57\u6BB5\u7684\u957F\u5EA6\u6784\u5EFA\u6811
Build_Tree_Accord_Marked_Filed_Length=\u4F9D\u8D56\u6240\u9009\u6570\u636E\u96C6\u7684\u6807\u8BB0\u5B57\u6BB5\u7684\u957F\u5EA6\u6784\u5EFA\u6811
ComboCheckBox-Start_Symbol=\u8D77\u59CB\u7B26
Real=\u5B9E\u9645
RWA-Batch_Modify_Cells=\u6279\u91CF\u4FEE\u6539\u5355\u5143\u683C
@ -1371,7 +1370,7 @@ Not_Exsit=\u4E0D\u5B58\u5728\u4E8E\u62A5\u8868
Utils-Insert_Row=\u63D2\u5165\u884C
Utils-Delete_Row=\u5220\u9664\u884C
not_support_authority_edit=\u8BE5\u5143\u7D20\u4E0D\u652F\u6301\u6743\u9650\u63A7\u5236
Formula_Tips=\u516C\u5F0F\u5FC5\u987B\u4EE5"\
Formula_Tips=\u516C\u5F0F\u5FC5\u987B\u4EE5"\="\u53F7\u5F00\u5934\uFF01
FR-Action_Copy=\u590D\u5236
Compile_Success=\u7F16\u8BD1\u6210\u529F
BackgroundTexture-RecycledPaper=\u518D\u751F\u7EB8
@ -1536,7 +1535,7 @@ FR-Designer_Cancel=\u53D6\u6D88
Button-Group-Display-Columns=\u5C55\u793A\u5217\u6570
Widget-Height=\u63A7\u4EF6\u9AD8\u5EA6
Examples=\u4F8B\u5B50
Formula_Dictionary_Display_Example=\u5B9E\u9645\u503C\u8303\u56F4\u4E3A \
Formula_Dictionary_Display_Example=\u5B9E\u9645\u503C\u8303\u56F4\u4E3A \=range(100), \u5BF9\u5B9E\u9645\u503C\u8303\u56F4\u5185\u7684\u6BCF\u4E2A$$$\u7684\u663E\u793A\u516C\u5F0F\u4E3A \=0 - $$$\uFF0C\n\u5219\u6700\u7EC8\u7684\u7ED3\u679C\u5B9E\u9645\u503C\u4E3A1, 2, ..., 100, \u663E\u793A\u503C\u4E3A-1, -2, ... , -100\u3002
StyleAlignment-Horizontal=\u6C34\u5E73\u5BF9\u9F50
HyperLink_Must_Alone_Reset=\u591A\u4E2A\u8D85\u94FE
ExpandD-Expand_Direction=\u6269\u5C55\u65B9\u5411
@ -1710,7 +1709,7 @@ Condition_Display=\u6761\u4EF6\u663E\u793A
FR-Server-Design_template_unopened=\u65E0\u6CD5\u6253\u5F00\u6A21\u7248
Function-Function_Class_Name=\u51FD\u6570\u7C7B\u540D
Schedule-Template=\u6A21\u677F\u540D\u79F0
FR-Designer_Tree_Data_Field=\u6811\u6570\u636E\u5B57\u6BB5
Tree_Data_Field=\u6811\u6570\u636E\u5B57\u6BB5
Border-Style-Normal=\u76F4\u89D2\u8FB9\u6846
Top_And_Double_Bottom_Border_Line=\u4E0A\u6846\u7EBF\u548C\u53CC\u4E0B\u6846\u7EBF
FR-Server_Embedded_Server_Start=\u5167\u7F6E\u7684\u670D\u52A1\u5668-\u6253\u5F00
@ -1986,4 +1985,19 @@ FormulaD-Data_Fields=\u6570\u636E\u9879
FR-Designer_Role=\u89D2\u8272
FR-Designer_Permissions=\u6743\u9650
FR-Designer_Form_Button=\u6309\u94AE
FR-Designer_WF_Name=\u540D\u79F0
FR-Designer_WF_Name=\u540D\u79F0
FR-Designer_Double=\u5C0F\u6570
FR-Designer_Query=\u67E5\u8BE2
FR-Designer_Font=\u5B57\u4F53
FR-Designer_Confirm=\u786E\u8BA4
FR-Designer_Parameter=\u53C2\u6570
FR-Designer-Plugin_Plugin=\u63D2\u4EF6
FR-Designer_Background=\u80CC\u666F
Template=\u6A21\u7248
FR-Designer_Original_Marked_Filed=\u539F\u59CB\u6807\u8BB0\u5B57\u6BB5
FR-Designer_Build_Tree_Accord_Marked_Filed_Length=\u4F9D\u8D56\u6240\u9009\u6570\u636E\u96C6\u7684\u6807\u8BB0\u5B57\u6BB5\u7684\u957F\u5EA6\u6784\u5EFA\u6811
FR-Designer_Tree_Data_Field=\u6811\u6570\u636E\u5B57\u6BB5
FR-Designer_Parent_Marked_Field=\u7236\u6807\u8BB0\u5B57\u6BB5
FR-Designer_Build_Tree_Accord_Parent_Marked_Filed=\u4F9D\u8D56\u6240\u9009\u6570\u636E\u96C6\u7684\u7236\u6807\u8BB0\u5B57\u6BB5\u6784\u5EFA\u6811
FR-Product_Demo=\u4EA7\u54C1\u6F14\u793A

226
designer_base/src/com/fr/design/locale/designer_zh_TW.properties

@ -1,7 +1,6 @@
# generated time: \u661F\u671F\u56DB \u5341\u4E00\u6708 24 12:02:51 CST 2016
FR-Designer-BBSLogin_Account=\u767B\u5165\u5E33\u865F
FR-Designer-BBSLogin_Connection-Failure=\u767B\u5165\u9023\u63A5\u5931\u6557\uFF0C\u8ACB\u6AA2\u67E5\u7576\u524D\u7DB2\u8DEF\u72C0\u614B
FR-Designer-BBSLogin_Connection-Failure-Tip=\u9023\u7DDA\u5931\u6557\u63D0\u793A
FR-Designer-BBSLogin_Connection-Failure=\u767B\u5165\u9023\u63A5\u5931\u6557\uFF0C\u8ACB\u6AA2\u67E5\u7576\u524D\u7DB2\u8DEF\u72C0\u614B
FR-Designer-BBSLogin_Connection-Failure-Tip=\u9023\u7DDA\u5931\u6557\u63D0\u793A
FR-Designer-BBSLogin_Forgot-Password=\u5FD8\u8A18\u5BC6\u78BC
FR-Designer-BBSLogin_Login=\u767B\u9304
FR-Designer-BBSLogin_Login-Failure-Tip=\u5E33\u865F\u6216\u5BC6\u78BC\u932F\u8AA4\uFF0C\u8ACB\u91CD\u65B0\u767B\u9304
@ -9,10 +8,10 @@ FR-Designer-BBSLogin_Password=\u5BC6 \u78BC
FR-Designer-BBSLogin_Password-Empty-Tip=\u5BC6\u78BC\u4E0D\u80FD\u70BA\u7A7A
FR-Designer-BBSLogin_Register-Account=\u8A3B\u518A\u5E33\u865F
FR-Designer-BBSLogin_Switch-Account=\u5207\u63DB\u5E33\u865F
FR-Designer-BBSLogin_Privite-Message=\u79C1\u4EBA\u6D88\u606F
FR-Designer-BBSLogin_Privite-Message=\u79C1\u4EBA\u8A0A\u606F
FR-Designer-BBSLogin_Times=\u6B21
FR-Designer-BBSLogin_Username-Empty-Tip=\u4F7F\u7528\u8005\u70BA\u7A7A\u63D0\u793A
FR-Designer-Basic_More_Color=\u66F4\u591A\u984F\u8272...
FR-Designer-Basic_More_Color=\u66F4\u591A\u984F\u8272
FR-Designer-Estate_Any=\u4E0D\u9650
FR-Designer-Estate_Default_Font=\u9810\u8A2D\u5B57\u9AD4
FR-Designer-Estate_Default_Null=\u9810\u8A2D\u70BA\u7A7A
@ -106,7 +105,7 @@ FR-Designer_Font-Family=\u5B57\u9AD4\u540D\u7A31
FR-Designer_Font-Size=\u5B57\u9AD4\u5927\u5C0F
FR-Designer_Forbid_Drag_into_Adapt_Pane=\u8A72\u5C0D\u8C61\u4E0D\u5141\u8A31\u62D6\u5165\u8868\u55AE\u4E3B\u9AD4
FR-Designer_Forbid_Drag_into_Para_Pane=\u8A72\u5C0D\u8C61\u4E0D\u80FD\u62D6\u5165\u53C3\u6578\u9762\u677F
FR-Designer_Foreground=\u984F\u8272
FR-Designer_Foreground=\u5B57\u5F62\u8272\u5F69
FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=\u66AB\u4E0D\u652F\u6301\u8868\u55AE\u6B0A\u9650\u7DE8\u8F2F
FR-Designer_Form-Report=\u5831\u8868\u683C\u5F0F
FR-Designer_Form_EmbeddedTD=\u5167\u5D01\u683C\u5F0F
@ -122,7 +121,7 @@ FR-Designer_Hyperlink-Form_link=\u7576\u524D\u8868\u55AE\u5C0D\u8C61
FR-Designer_IDCard=\u8EAB\u4EFD\u8B49
FR-Designer_Icon=\u5716\u793A
FR-Designer_Index=\u7D22\u5F15
FR-Designer_Input_Rule=\u8F38\u5165\u898F\u5247
FR-Designer_Input_Rule=\u586B\u5BEB\u898F\u5247
FR-Designer_Language_Default=\u9810\u8A2D\u8A9E\u8A00
FR-Designer_Layout=\u5E03\u5C40\u3001\u898F\u5283
FR-Designer_Layout-HBox=\u6C34\u5E73\u76D2\u5B50\u5E03\u5C40
@ -152,7 +151,7 @@ FR-Designer_Para-Body=\u53C3\u6578\u672C\u6587
FR-Designer_Parameters=\u53C3\u6578
FR-Designer_Phone=\u96FB\u8A71
FR-Designer_PostCode=\u90F5\u905E\u5340\u865F
FR-Designer_Present=\u7576\u4E0B
FR-Designer_Present=\u6A21\u5F0F
FR-Designer_Preview=\u9810\u89BD
FR-Designer_Preview-Data-Confusion=\u6DF7\u6DC6\u8CC7\u6599\u9810\u89BD
FR-Designer_Product_Demo=\u7522\u54C1\u5C55\u793A
@ -162,9 +161,9 @@ FR-Designer_Refresh_Parameter_In_SQL=\u5728SQL\u4E2D\u91CD\u65B0\u6574\u7406\u76
FR-Designer_Reg_Expressions=\u6B63\u5247\u8868\u9054\u5F0F
FR-Designer_Reg_Max_Length=\u6700\u5927\u9577\u5EA6
FR-Designer_Reg_Min_Length=\u6700\u5C0F\u9577\u5EA6
FR-Designer_ReportColumns-Columns=\u5831\u8868\u6B04\u4F4D
FR-Designer_ReportColumns-Columns=\u6B04\u5206\u6B04
FR-Designer_Return-Date=\u8FD4\u56DE\u65E5\u671F
FR-Designer_RichText= RTF
FR-Designer_RichText=RTF
FR-Designer_RichTextEditor=RTF\u7DE8\u8F2F\u5668
FR-Designer_Row=\u5217
FR-Designer_Row_Dimension=\u5217\u7DAD\u5EA6
@ -181,7 +180,7 @@ FR-Designer_Support_QQ=\u652F\u63F4QQ
FR-Designer_Swatch=\u6A23\u54C1
FR-Designer_Tab_title=tab\u6A19\u984C
FR-Designer_TableData=\u8CC7\u6599\u96C6
FR-Designer_Thank_guest=\u611F\u8B1D\u5BA2\u6236
FR-Designer_Thank_guest=\u611F\u8B1D\u5BA2\u6236
FR-Designer_Thanks-To=\u9CF4\u8B1D
FR-Designer_Title=\u6A19\u984C
FR-Designer_Total=\u7E3D\u5171
@ -195,7 +194,7 @@ FR-Designer_VerticalBoxLayout=\u6A6B\u5411\u4F48\u5C40
FR-Designer_Visible=\u53EF\u898B
FR-Designer_WLayout-Border-ToolTips=\u908A\u754C\u4F48\u5C40
FR-Designer_WaterMark=\u6C34\u5370
FR-Designer_Widget=\u5C0F\u5DE5\u5177
FR-Designer_Widget=\u63A7\u5236\u9805
FR-Designer_Widget-Settings=\u8A2D\u5B9A
FR-Designer_Widget-Visible=\u53EF\u898B
FR-Designer_XMLA_Explain=\u5728\u4F7F\u7528\u591A\u7DAD\u8CC7\u6599\u96C6\u53D6\u6578\u524D\uFF0C\u60A8\u9996\u5148\u9700\u8981\u4E00\u500B\u53EF\u6210\u529F\u9023\u63A5\u7684\u591A\u7DAD\u8CC7\u6599\u5EAB\u9023\u63A5\u3002\n\u8A2D\u5B9A\u5B8C\u8CC7\u6599\u9023\u63A5\u5F8C\uFF0C\u67E5\u8A62\u8CC7\u6599\u6642,\u6709\u5169\u7A2E\u4E0D\u540C\u7684\u53D6\u6578\u624B\u6BB5\u3002\n1.\u7C21\u55AE\u901A\u7528\u67E5\u8A62\uFF1A\n\u7C21\u55AE\u901A\u7528\u67E5\u8A62\u9069\u7528\u65BCFineBI\u53CA\u5176\u4ED6\u591A\u7DAD\u8CC7\u6599\u5EAB\u3002\n\u4F7F\u7528\u7C21\u55AE\u901A\u7528\u67E5\u8A62\uFF0CFR\u5C07\u81EA\u52D5\u8B80\u53D6\u9078\u64C7cube\u7684\u5C64\u6B21\u7D50\u69CB\uFF0C\u60A8\u53EF\u4EE5\u76F4\u63A5\u9078\u64C7\u6240\u9700\u7684\u5EA6\u91CF\u503C\u53CA\u7DAD\u5EA6\uFF0C\u4E26\u6DFB\u52A0\u7BE9\u9078\u689D\u4EF6\uFF0CFR\u6703\u6839\u64DA\u60A8\u7684\u9078\u64C7\u81EA\u52D5\u67E5\u8A62\u8CC7\u6599\u3002\n\u7C21\u55AE\u901A\u7528\u67E5\u8A62\u50C5\u652F\u6301\u7DAD\u5EA6\u53CA\u5EA6\u91CF\u503C\u5169\u500B\u8EF8\u7684\u67E5\u8A62\u3002\n\u5728\u5EA6\u91CF\u503C\u53CA\u7DAD\u5EA6\u8A2D\u5B9A\u4E2D\uFF0C\u76EE\u524D\u60A8\u53EA\u80FD\u9078\u64C7\u6240\u9700\u7DAD\u5EA6\uFF0C\u7121\u6CD5\u624B\u52D5\u4FEE\u6539\u3002\n\u904E\u6FFE\u689D\u4EF6\u63A1\u7528OPEN SQL\u8A9E\u6CD5\uFF0C\u60A8\u53EF\u4EE5\u9375\u5165${abc}\u4F5C\u70BA\u4E00\u500B\u53C3\u6578\uFF0C\u7528\u6CD5\u540C\u8CC7\u6599\u5EAB\u8CC7\u6599\u96C6\u3002\n2.\u81EA\u5B9A\u7FA9MDX\u67E5\u8A62\uFF1A\n\u4F7F\u7528\u81EA\u5B9A\u7FA9MDX\u67E5\u8A62\uFF0C\u60A8\u53EF\u4EE5\u81EA\u5B9A\u7FA9\u7FA9MDX\u8A9E\u53E5\u67E5\u8A62\u6240\u9700\u7D50\u679C\u3002\n\u6CE8\u610F\uFF0C\u81EA\u5B9A\u7FA9MDX\u67E5\u8A62\u4E5F\u53EA\u652F\u6301\u5169\u500B\u8EF8\u7684\u67E5\u8A62\u3002\n\u60A8\u53EF\u9375\u5165${abc}\u4F5C\u70BA\u4E00\u500B\u53C3\u6578\uFF0C\u7528\u6CD5\u540C\u8CC7\u6599\u5EAB\u8CC7\u6599\u96C6\u3002\nFineBI\u7684cube\u4E0D\u652F\u6301MDX\u67E5\u8A62\u3002
@ -357,7 +356,7 @@ FR-Designer-Series_Dismenber_As_Single=\u9023\u7E8C\u5206\u9694\u7B26\u8996\u70B
FR-Designer_KeyPoint=\u95DC\u9375\u7BC0\u9EDE
FR-Designer_loadedTreeModel=\u52A0\u8F09\u5931\u6557,\u8ACB\u6AA2\u67E5\u5F8C\u91CD\u8A66
FR-Designer-Failed_to_load_the_plugin=\u7121\u6CD5\u52A0\u8F09\u63D2\u4EF6\uFF0C\u8ACB\u66F4\u65B0\u63D2\u4EF6\uFF1A
FR-Designer-Plugin_Please_Update_Jar=\u8ACB\u66F4\u65B0Jar\u5305, \u63D2\u4EF6\u9700\u6C42\u6700\u4F4E\u7248\u672C
FR-Designer-Plugin_Please_Update_Jar=\u8ACB\u66F4\u65B0Jar\u5305\u81F3\:
FR-Designer-Invalid_Page_Number=\u7121\u6548\u9801\u78BC
FR-Designer_Get-CubeGetting=\u7372\u53D6cube
FR-Designer_XMLA_Database=\u8CC7\u6599\u5EAB
@ -561,19 +560,19 @@ FR-Designer_Plugin_Should_Update_Please_Contact_Developer=\u633F\u4EF6\u7248\u67
FR-Designer_WidgetOrder=\u63A7\u4EF6\u9806\u5E8F
FR-Designer_Mobile_Form_Analysis_Annotation=\u6CE8\u91CB\uFF1A\u53EF\u4EE5\u901A\u904E\u8A72\u5C6C\u6027\u63A7\u5236\u8868\u55AE\u5728APP\u4E2D\u7684\u89E3\u6790\u65B9\u5F0F\u3002
FR-Designer_Mobile_Report_Analysis_Annotation=\u6CE8\u91CB\uFF1A\u53EF\u4EE5\u901A\u904E\u8A72\u5C6C\u6027\u63A7\u5236\u5831\u8868\u5728APP\u4E2D\u7684\u89E3\u6790\u65B9\u5F0F\uFF0C\u53EA\u652F\u6301\u5206\u9801\u9810\u89BD\uFF0C\u586B\u5831\u9810\u89BD\u6642\u5C6C\u6027\u7121\u6548\u3002
FR-Designer_Background_Null=
FR-Designer_Background_Color=
FR-Designer_Background_Texture=
FR-Designer_Background_Pattern=
FR-Designer_Background_Gradient_Color=
FR-Designer_Background_Image=
FR-Designer_Background_Clear=
FR-Designer_Background_Image_Select=
FR-Designer_Background_Null=\u6C92\u6709\u80CC\u666F
FR-Designer_Background_Color=\u984F\u8272
FR-Designer_Background_Texture=\u7D0B\u7406
FR-Designer_Background_Pattern=\u5716\u6848
FR-Designer_Background_Gradient_Color=\u6F38\u8B8A\u8272
FR-Designer_Background_Image=\u5716\u7247
FR-Designer_Background_Clear=\u6E05\u9664
FR-Designer_Background_Image_Select=\u9078\u64C7\u5716\u7247
FR-Designer_Too_Large_To_Paste=\u7D44\u4EF6\u5927\u5C0F\u8D85\u51FA\u908A\u754C\uFF0C\u7121\u6CD5\u7C98\u8CBC\uFF01
FR-Designer_Too_Small_To_Paste=\u6B64\u8655\u7121\u6CD5\u7C98\u8CBC\uFF0C\u5C0F\u65BC\u7D44\u4EF6\u6700\u5C0F\u9AD8\u5EA6\uFF01
FR-Designer_Initial_Background_Tips=
FR-Designer_Mouse_Move_Tips=
FR-Designer_Mouse_Click_Tips=
FR-Designer_Initial_Background_Tips=\u6309\u9215\u7684\u521D\u59CB\u80CC\u666F
FR-Designer_Mouse_Move_Tips=\u6ED1\u9F20\u79FB\u52D5\u5230\u6309\u9215\u4E0A\u7684\u80CC\u666F\uFF0C\u82E5\u7121\u5247\u4E0D\u6539\u8B8A\u80CC\u666F
FR-Designer_Mouse_Click_Tips=\u6ED1\u9F20\u9EDE\u64CA\u6309\u9215\u6642\u80CC\u666F\uFF0C\u82E5\u7121\u5247\u4E0D\u6539\u8B8A\u80CC\u666F
FR-Designer_AxisReversed=\u8EF8\u9006\u5E8F
FR-Designer_Logarithmic=\u5C0D\u6578\u523B\u5EA6
FR-Designer_Chart_Log_Base=\u5E95\u6578
@ -582,20 +581,20 @@ FR-Designer_Style=\u6A23\u5F0F
FR-Designer_Color=\u984F\u8272
FR-Designer_Border=\u6846\u7DDA
FR-Designer_Background-Pattern=\u5716\u6848
FR-Designer_SimpleDetail_Report=
FR-Designer_Reset=
FR-Designer_AllCategories=
FR-Designer-Selected_Widget=
FR-Designer_SimpleCross_Report=
FR-Designer_LocalWidget=
FR-Designer_SimpleDetail_Report=\u7C21\u55AE\u660E\u7D30\u8868
FR-Designer_Reset=\u53D6\u6D88\u522A\u9664
FR-Designer_AllCategories=\u6240\u6709\u5206\u985E
FR-Designer-Selected_Widget=\u7576\u524D\u63A7\u5236\u9805
FR-Designer_SimpleCross_Report=\u7C21\u55AE\u4EA4\u53C9\u8868
FR-Designer_LocalWidget=\u672C\u5730\u7D44\u4EF6\u5EAB
FR-Designer_Edit_Button_ToolBar=\u7DE8\u8F2F\u6309\u9215\u6240\u5728\u5DE5\u5177\u6B04
FR-Designer_Remove_Button_ToolBar=\u79FB\u9664\u6309\u9215\u6240\u5728\u5DE5\u5177\u6B04
FR-Designer_Install_Template=
FR-Designer_Allow-Blank=
FR-Designer_Delete_Template=
FR-Designer_Download_Template=
FR-Designer_DoubleLayer_Report=
FR-Designer_Validate=
FR-Designer_Install_Template=\u5B89\u88DD\u7D44\u4EF6
FR-Designer_Allow-Blank=\u5141\u8A31\u70BA\u7A7A
FR-Designer_Delete_Template=\u522A\u9664\u7D44\u4EF6
FR-Designer_Download_Template=\u4E0B\u8F09\u7D44\u4EF6
FR-Designer_DoubleLayer_Report=\u96D9\u5C64\u8868\u982D
FR-Designer_Validate=\u6821\u9A57
CellWrite-InsertRow_NULL=\u7A7A\u503C
DashBoard-ChartFloat=\u5716\u8868
contact_info=\u806F\u7E6B\u8A0A\u606F(\u9078\u586B)
@ -611,7 +610,7 @@ FR-Designer_Number=\u6578\u5B57
FR-Designer-Widget-Style_Common=\u666E\u901A
M-Save_As=\u53E6\u5B58\u70BA
Following_parameters_are_not_generated=\u4EE5\u4E0B\u53C3\u6578\u672A\u751F\u6210
FR-Designer-Basic_Activation_Key_Copy_OK=Key has been copy to clipboard
FR-Designer-Basic_Activation_Key_Copy_OK=\u5DF2\u8907\u88FD\u5230\u526A\u8CBC\u677F
Utils-Current_Sheet=\u7576\u524D\u7684Sheet
ConditionB-is_less_than=\u5C0F\u65BC
BorderLayout-West=\u897F
@ -624,13 +623,13 @@ M-Page_Setup=\u9801\u9762\u8A2D\u5B9A
DashBoard-FormBook=\u8868\u55AE
X-Coordinate=\u6A6B\u5EA7\u6A19
Style-Line_Spacing=\u5217\u9593\u8DDD
FR-Designer_Plugin_Should_Update_Title=Warning
FR-Designer_Plugin_Should_Update_Title=\u63D2\u4EF6\u5347\u7D1A\u63D0\u9192
Server-Define_Data_Connection=\u5B9A\u7FA9\u8CC7\u6599\u9023\u63A5
BarInside=\u67F1\u5B50\u5167\u5074
Border-Color=\u6846\u7DDA\u984F\u8272
NotAllow=\u4E0D\u5408\u6CD5
Utils-File_type=\u6A94\u6848\u985E\u578B
FR-Designer-Plugin_Install_From_Local=Install plugin from local file
FR-Designer-Plugin_Install_From_Local=\u5F9E\u672C\u5730\u6587\u4EF6\u5B89\u88DD
Summary_Method=\u532F\u7E3D\u65B9\u5F0F
Select_Specified_Grouping=\u9078\u64C7\u81EA\u5B9A\u7FA9\u5206\u7D44
HF-Number_of_Page=\u7E3D\u9801\u6578
@ -638,13 +637,13 @@ FR-Designer-Tree_Height=\u9AD8\u5EA6
Owner=\u4E3B
Home=\u4E3B\u9801
FR-Server_Embedded_Server_Stop=\u5167\u7F6E\u7684\u4F3A\u670D\u5668-\u505C\u6B62
FR-Designer-Plugin_Detecting_Update=Detecting update
FR-Designer-Plugin_Detecting_Update=\u6B63\u5728\u6AA2\u6E2C\u66F4\u65B0
HF-Whether_to_define_the_selected_type=\u662F\u5426\u5B9A\u7FA9\u9078\u4E2D\u7684\u985E\u578B
StyleAlignment-Right=\u9760\u53F3\u5C0D\u9F4A
FR-Designer_Alignment-Style=\u5C0D\u9F4A\u65B9\u5F0F
PageSetup-Title_Start_Column=\u91CD\u8907\u6A19\u984C\u6B04
Tree-Mutiple_Selection_Or_Not=\u591A\u9078
FR-Designer-Plugin_Search=Search
FR-Designer-Plugin_Search=\u641C\u7D22
Choose_Role=\u6B0A\u9650\u63A7\u5236
Append_Delete_Row_Message=\u6CE8\u610F\uFF01\u6307\u5B9A\u7684\u5132\u5B58\u683C\u9700\u8981\u8A2D\u5B9A\u64F4\u5C55\u5C6C\u6027
Form-ComboBox=\u4E0B\u62C9\u6846
@ -676,7 +675,7 @@ Need_Min_Value=\u9700\u8981\u6700\u5C0F\u503C
Allow_Blank=\u5141\u8A31\u70BA\u7A7A\u767D
CellWrite-InsertRow_DEFAULT=\u9810\u8A2D\u503C
Widget-Load_By_Complete=\u5B8C\u5168\u8F09\u5165
FR-Designer-Basic_Only_Submit_Current_Sheet=
FR-Designer-Basic_Only_Submit_Current_Sheet=\u53EA\u63D0\u4EA4\u7576\u524Dsheet
Sort-Sort_Order=\u6392\u5217\u9806\u5E8F
File-File_Size_Limit=\u6A94\u6848\u5927\u5C0F\u9650\u5236
PrintP-Print=\u5217\u5370(T)
@ -685,7 +684,7 @@ Preference-Setting_Colors=\u984F\u8272\u914D\u7F6E
Judge=\u5224\u65B7
Image-Adjust=\u9069\u61C9
Collect-User_Information_DES=\u7528\u6236\u8A0A\u606F\u78BC\u53EA\u662F\u7528\u4F86\u6536\u96C6\u4F7F\u7528\u8005\u8A0A\u606F\u7684\uFF0C\u53EA\u8981\u9EDE\u64CA\u4E0A\u9762\u7684"\u7372\u53D6\u7528\u6236\u8A0A\u606F\u78BC"\u6309\u9215\uFF0C\u5C31\u6703\u5F48\u51FA\u4E00\u500B\u65B0\u7684\u700F\u89BD\u5668\u7A97\u9AD4\uFF0C\u767B\u9304\u5230\u7522\u54C1\u5B98\u65B9\u7DB2\u7AD9\u7372\u5F97\u9019\u500B\u7528\u6236\u8A0A\u606F\u78BC\uFF0C\u6574\u500B\u7A0B\u5E8F\u53EA\u9700\u89813\u5206\u9418\uFF0C\u53EA\u9700\u8981\u64CD\u4F5C\u4E00\u6B21\uFF0C\u800C\u4E14\u5B8C\u5168\u514D\u8CBB\u3002
FR-Designer_Plugin_Normal_Update_From_Local=Update from local file
FR-Designer_Plugin_Normal_Update_From_Local=\u5F9E\u672C\u5730\u6A94\u6848\u66F4\u65B0
BackgroundTexture-Canvas=\u756B\u5E03
BarOutSide=\u67F1\u5B50\u5916\u5074
Preview_ToolTips=\u9810\u89BD\u63D0\u793A
@ -715,7 +714,7 @@ FR-Designer_Indent-Pixel=\u50CF\u7D20
FR-Designer_Unit_MM=\u516C\u5398
IDLE=\u7A7A\u9592
FRFont-Underline=\u4E0B\u5283\u7DAB
FR-Designer-Plugin_Read_Plugin_List_Error=Error to read plugin list
FR-Designer-Plugin_Read_Plugin_List_Error=\u53BB\u8B80\u63D2\u4EF6\u5217\u8868\u6642\u767C\u751F\u932F\u8AA4
Type_Set=\u985E\u578B\u8A2D\u5B9A
M_Format_A-Cell_Attributes=\u5176\u4ED6\u5C6C\u6027
CellWrite-Show_As_Image=\u7528\u5716\u7247\u986F\u793A\u5167\u5BB9
@ -740,7 +739,7 @@ Hgap=\u6C34\u5E73\u9593\u9699
FR-Designer_Enter-New-FileName=\u8ACB\u8F38\u5165\u65B0\u7684\u6A94\u6848\u540D
Verify_Fail=\u6821\u9A57\u5931\u6557
CellWrite-InsertRow_Policy=\u63D2\u5165\u5217\u7B56\u7565
FR-Designer-Plugin_Illegal_Plugin_Zip=Illegal plugin zip
FR-Designer-Plugin_Illegal_Plugin_Zip=\u4E0D\u662F\u5408\u6CD5\u7684\u63D2\u4EF6\u5305
RCodeVersion=\u7248\u672C
Convert=\u8F49\u63DB
Please_Drag=\u8ACB\u62D6\u5165\u5217\u6B04\u6B04\u4F4D\u3001\u532F\u7E3D\u6B04\u4F4D
@ -795,7 +794,7 @@ read_time_out=\u52A0\u8F09\u8D85\u6642
JavaScript-Commit_to_Database=\u63D0\u4EA4\u5165\u5EAB
DS-Relation_TableData=\u95DC\u806F\u8CC7\u6599\u96C6
CellWrite-Page_Before_Row=\u5217\u524D\u5206\u9801
FR-Designer-Plugin_Load_Plugins_From_Server=Loading plugins from store
FR-Designer-Plugin_Load_Plugins_From_Server=\u6B63\u5728\u5F9E\u63D2\u4EF6\u5546\u5E97\u7372\u53D6\u6578\u64DA
D-Dispaly_Divide_Result_Set_into_Groups=\u5C07\u7D50\u679C\u96C6\u9032\u884C\u5206\u7D44
Closed=\u5DF2\u95DC\u9589
RWA-Help=\u8A2D\u5B9A\u672A\u4FEE\u6539\u4E0D\u66F4\u65B0\u5F8C\uFF0C\u586B\u5831\u9810\u89BD\u5831\u8868\uFF0C\u8A18\u9304\u6240\u5728\u5132\u5B58\u683C\u6C92\u6709\u88AB\u7DE8\u8F2F\u4FEE\u6539\uFF0C\u5247\u6B64\u8A18\u9304\u4E0D\u6703\u9032\u884C\u66F4\u65B0\uFF1B\n\u5728\u5927\u8CC7\u6599\u91CF\u8A18\u9304\u67E5\u8A62\u4E26\u56DE\u586B\u60C5\u6CC1\u4E0B\uFF0C\u555F\u7528\u8A72\u8A2D\u5B9A\uFF0C\u53EF\u4EE5\u63D0\u9AD8\u586B\u5831\u63D0\u4EA4\u6027\u80FD\u3002
@ -810,7 +809,7 @@ No-Privilege=\u6C92\u6709\u6B0A\u9650
ReportColumns-Repeat_Column=\u91CD\u8907\u6B04\u5E8F\u6B04
SecondGraduationUnit=\u6B21\u8981\u523B\u5EA6\u55AE\u4F4D
Form-Widget_Property_Value=\u5C6C\u6027\u503C
GIVE-NAME=Give Name
GIVE-NAME=\u547D\u540D
FR-Designer_Rename=\u91CD\u547D\u540D
Utils-Merge_Cell=\u5408\u5E76\u5132\u5B58\u683C
Style-Spacing_After=\u6BB5\u5F8C
@ -826,14 +825,14 @@ Form-TextArea=\u6587\u672C\u57DF
FR-Designer_Https_Enable=\u555F\u7528https
Widget-Custom_Widget_Config=\u81EA\u5B9A\u7FA9\u63A7\u5236\u9805
already_exists=\u5DF2\u7D93\u5B58\u5728
FR-Designer_Original_Marked_Filed=\u539F\u59CB\u6A19\u8A18\u6B04\u4F4D
Original_Marked_Filed=\u539F\u59CB\u6A19\u8A18\u6B04\u4F4D
BackgroundTexture-Sand=\u6C99\u7058
Values=\u503C
Not_use_a_cell_attribute_table_editing=\u60A8\u4E0D\u53EF\u4EE5\u7528\u5132\u5B58\u683C\u5C6C\u6027\u8868\u7DE8\u8F2F
Root=\u6839\u7BC0\u9EDE
cycle=\u5468\u671F
open-new-form-tip=\u7576\u524D\u6A21\u677F\u70BA711\u4EE5\u4E0B\u7248\u672C\u88FD\u4F5C, \u7121\u6CD5\u517C\u5BB9, \u4E0D\u80FD\u6253\u958B. \u5047\u5982\u60F3\u6253\u958B\u4FEE\u6539\u6B64\u8868\u55AE, \u8ACB\u4F7F\u7528\u5C0D\u61C9\u7248\u672C\u8A2D\u8A08\u5668\u6253\u958B.
Support-Current_Auto_Complete_Shortcut=Current Shortcut
Support-Current_Auto_Complete_Shortcut=\u7576\u524D\u5FEB\u6377\u9375
GROUPING_MODE=\u666E\u901A\u5206\u7D44
DBCP_MAX_IDLE=\u6700\u5927\u7A7A\u9591\u9023\u63A5\u6578
BackgroundTexture-BlueTissuePaper=\u85CD\u8272\u7802\u7D19
@ -845,7 +844,7 @@ PageSetup-Placement_Center_on_Page=\u7F6E\u4E2D\u65B9\u5F0F
sure_to_delete=\u78BA\u8A8D\u522A\u9664
Already_exists_not_add_repeat=\u5DF2\u7D93\u5B58\u5728\uFF0C\u8ACB\u4E0D\u8981\u91CD\u8907\u65B0\u589E
Axis_Title=\u8EF8\u6A19\u984C
FR-Designer-Plugin_Install_Failed=Install failed
FR-Designer-Plugin_Install_Failed=\u63D2\u4EF6\u5B89\u88DD\u5931\u6557
FR-Designer-Widget-Style_Frame=\u6846\u67B6
MainGraduationUnit=\u4E3B\u8981\u523B\u5EA6\u55AE\u4F4D
Second_Axis=\u6B21\u5750\u6A19\u8EF8
@ -858,7 +857,7 @@ RP_Authority_Edit=\u6B0A\u9650\u7DE8\u8F2F
Warnning=\u63D0\u9192
RoleName_Can_Not_Be_Null=\u89D2\u8272\u540D\u4E0D\u5141\u8A31\u70BA\u7A7A\u4E14\u4E0D\u80FD\u91CD\u8907
Application=\u61C9\u7528\u7A0B\u5F0F
Formula_Dictionary_Display_Examples_Html=
Formula_Dictionary_Display_Examples_Html=<html>\u5BE6\u969B\u503C\u7BC4\u570D\u70BA \=range(100),\u5C0D\u5BE6\u969B\u503C\u7BC4\u570D\u5167\u7684\u6BCF\u500B$$$\u7684\u986F\u793A\u516C\u5F0F\u70BA \=0 - $$$\uFF0C<br>\u5247\u6700\u7D42\u7684\u7D50\u679C\u5BE6\u969B\u503C\u70BA1, 2, ..., 100,\u986F\u793A\u503C\u70BA-1, -2, ... , -100\u3002<br>&nbsp;</html>
ECP-error_pwd=\u5BC6\u78BC\u932F\u8AA4
FR-Hyperlink_ChartHyperlink=\u5716\u8868\u8D85\u93C8
M_Edit-FormatBrush=\u8907\u88FD\u683C\u5F0F(B)
@ -881,7 +880,7 @@ Parameter-Boolean=\u5E03\u723E\u578B
FRFont-Strikethrough=\u522A\u9664\u7DDA
Server-version-tip=\u60A8\u7576\u524D\u9023\u63A5\u7684\u4F3A\u670D\u5668\u7248\u672C\u4F4E\u65BC\u60A8\u4F7F\u7528\u7684\u8A2D\u8A08\u5668\u7248\u672C\u865F\uFF0C\u7E7C\u7E8C\u9023\u63A5\uFF0C\u60A8\u7DE8\u8F2F\u7684\u4E00\u4E9B\u5C6C\u6027\u53EF\u80FD\u7121\u6CD5\u6709\u6548\u5132\u5B58\u3002\u5047\u5982\u9700\u8981\u9023\u63A5\u8ACB\u5C07\u60A8\u7684\u8A2D\u8A08\u5668\u7248\u672C\u8207\u4F3A\u670D\u5668\u7248\u672C\u4FDD\u6301\u4E00\u81F4
Form-All_Files=\u5168\u90E8\u6A94\u6848
DBCP_NUM_TEST_PER_EVCTION_RUN=\u7A7A\u9591\u93C8\u63A5\u56DE\u6536\u6AA2\u67E5\u6578
DBCP_NUM_TEST_PER_EVCTION_RUN=\u7A7A\u9591\u9023\u63A5\u56DE\u6536\u6AA2\u67E5\u6578
FR-Designer-FRFont_Family=\u540D\u5B57
Device=\u8A2D\u5099
M_Insert-Cell=\u5132\u5B58\u683C\u5143\u7D20
@ -962,10 +961,10 @@ Widget-Load_Type=\u8F09\u5165
template_unsaved=\u7BC4\u672C\u7121\u6CD5\u5132\u5B58
check_communication=\u8ACB\u6AA2\u67E5\u7DB2\u8DEF\u901A\u8A0A\u662F\u5426\u6B63\u5E38\u53CA\u4F3A\u670D\u5668\u662F\u5426\u6B63\u5E38\u904B\u884C
List-Need_Head=\u9700\u8981\u6B04\u8868\u982D
FR-Designer-Plugin_Has_Been_Installed=Plugin has been installed
FR-Designer-Plugin_Has_Been_Installed=\u63D2\u4EF6\u5DF2\u5B89\u88DD\uFF0C\u82E5\u60F3\u66F4\u65B0\u63D2\u4EF6\uFF0C\u8ACB\u5207\u63DB\u81F3\u63D2\u4EF6\u66F4\u65B0
FR-Widget_Tree_And_Table=\u63A7\u5236\u9805\u6A39\u548C\u63A7\u5236\u9805\u8868
FR-Base_Help=\u8AAA\u660E
FR-Designer-Plugin_Update_Successful=Update successfully
FR-Designer-Plugin_Update_Successful=\u63D2\u4EF6\u5347\u7D1A\u6210\u529F\uFF0C\u91CD\u555F\u4F3A\u670D\u5668\u4EE5\u751F\u6548
August=\u516B\u6708
LOG-Is_Being_Openned=\u6B63\u5728\u6253\u958B
BackgroundTexture-Oak=\u6A61\u6728
@ -973,7 +972,7 @@ Multi_nam_formula=\ \u8CC7\u6599\u96C6\u540D\: \u8CC7\u65
TurnOn=\u958B\u5553
HJS-Send_Successfully=\u767C\u9001\u6210\u529F
Mon=\u661F\u671F\u4E00
Inner_Parameter=Inner Parameter
Inner_Parameter=\u5167\u7F6E\u53C3\u6578
Required=\u5FC5\u586B
Summary=\u532F\u7E3D
template_unopened=\u7121\u6CD5\u6253\u958B\u7BC4\u672C
@ -982,14 +981,14 @@ DataFunction-Min=\u6700\u5C0F\u503C
StyleFormat-Percent=\u767E\u5206\u6BD4
FR-App-All_Custom=\u81EA\u5B9A\u7FA9
M_Insert-Data_Column=\u63D2\u5165\u8CC7\u6599\u6B04
PLEASE=Please
PLEASE=\u8ACB
Numbers=\u6578\u76EE
Release_Lock=\u89E3\u9396
Background-Background_is_NULL=\u6C92\u6709\u80CC\u666F
FR-Designer_Sytle-FRFont=\u5B57\u9AD4
Gradation=\u5C64\u6B21
The_current_list_is_empty=\u7576\u524D\u6B04\u8868\u70BA\u7A7A
Formula_Dictionary_Display_Examples=
Formula_Dictionary_Display_Examples=\ \u5BE6\u969B\u503C\u7BC4\u570D\u70BA \=range(100),\u5C0D\u5BE6\u969B\u503C\u7BC4\u570D\n \u5167\u7684\u6BCF\u500B$$$\u7684\u986F\u793A\u516C\u5F0F\u70BA \=0 - $$$\uFF0C\n \u5247\u6700\u7D42\u7684\u7D50\u679C\u5BE6\u969B\u503C\u70BA1, 2, ..., 100, \n \u986F\u793A\u503C\u70BA-1, -2, ... , -100\u3002
Schedule-Template_Parameter=\u7BC4\u672C\u53C3\u6578
JSShow=\u52D5\u614B\u5C55\u793A
Level_coordinates=\u5C64\u6B21\u5750\u6A19
@ -1003,7 +1002,7 @@ RWA-Remove_Field=\u79FB\u9664\u6B04\u4F4D
Form-Desin_Width=\u8A2D\u8A08\u5BEC\u5EA6
No-tableData=\u6C92\u6709\u8FD4\u56DE\u8CC7\u6599\u96C6
Page_Total=\u5171
FR-Designer-Plugin_Connect_Server_Error=Error to connect plugin store
FR-Designer-Plugin_Connect_Server_Error=\u7121\u6CD5\u9023\u63A5\u63D2\u4EF6\u5546\u5E97\uFF0C\u8ACB\u7A0D\u5F8C\u518D\u8A66
Import-Excel_Source=Excel\u6E90\u6A94\u6848
Utils-Left_to_Right_a=\u5F9E\u5DE6\u5F80\u53F3
ExpandD-Expand_Attribute=\u64F4\u5C55\u5C6C\u6027
@ -1018,7 +1017,7 @@ Utils-Move_Up=\u4E0A\u79FB
BackgroundTexture-PurpleMesh=\u7D2B\u8272\u7DB2\u8DEF
Export-Word=Word\u683C\u5F0F
ServerM-Widget_Manager=\u5143\u4EF6\u7BA1\u7406
FR-Designer-Basic_Activation_Key=Activation Key\:
FR-Designer-Basic_Activation_Key=\u8A2D\u8A08\u5668\u7DE8\u865F\:
FR-App-Template_Report_Not_Exist=\u6240\u9078\u5831\u8868\u4E0D\u5B58\u5728
Protected=\u4FDD\u8B77
Skip=\u8DF3\u904E
@ -1048,7 +1047,7 @@ BindColumn-Select=\u6B04\u8868
FR-Widget_Mobile_Terminal=\u884C\u52D5\u8A2D\u5099
FR-Background_Image_Titled=\u5E73\u92EA
SetPrinterOffset=\u5370\u8868\u6A5F\u504F\u79FB
FR-Designer-Plugin_Installed=Installed
FR-Designer-Plugin_Installed=\u5DF2\u5B89\u88DD
FR-Designer-Hyperlink_Name=\u540D\u5B57
FR-Designer_Form-Button=\u6309\u9215
Black=\u9ED1\u8272
@ -1058,7 +1057,7 @@ PDF-Print_isPopup=\u662F\u5426\u5F48\u51FA\u8A2D\u5B9A\u6846
LayerPageReport_CountPerPage=\u6BCF\u9801\u8A18\u9304\u6578
Display_Modes=\u986F\u793A\u6A21\u5F0F
RowSpan=\u5217\u8DE8\u5EA6
Datasource-Test_Connection=\u6E2C\u8A66\u93C8\u63A5
Datasource-Test_Connection=\u6E2C\u8A66\u9023\u63A5
Function-Function_Manager=\u51FD\u6578\u7BA1\u7406\u5668
Host_Name=\u4E3B\u6A5F\u540D
CellWrite-Show_As_HTML=\u7528HTML\u986F\u793A\u5167\u5BB9
@ -1068,7 +1067,7 @@ Form-SupportTag=\u6A19\u7C64\u5F62\u5F0F\u986F\u793A
ReportD-Report_Write_Attributes=\u5831\u8868\u586B\u5831\u5C6C\u6027
DataFunction-Count=\u500B\u6578
Top_And_Thick_Bottom_Border_Line=\u4E0A\u6846\u7DDA\u548C\u7C97\u4E0B\u6846\u7DDA
Client=Client
Client=\u5BA2\u6236\u7AEF
BindColumn-Result_Serial_Number_Start_From_1=\u5E8F\u865F\u5F9E1\u958B\u59CB
History=\u6B77\u53F2
Already_exists=\u5DF2\u5B58\u5728\uFF0C\u8ACB\u91CD\u65B0\u8F38\u5165\uFF01
@ -1125,7 +1124,7 @@ LayerPageReport_PageEngine=\u4F7F\u7528\u6309\u9801\u904B\u7B97\u5206\u6BB5\u57F
Schedule-The_selected_file_must_be_end_with_filter=\u9078\u64C7\u7684\u6A94\u6848\u5FC5\u9808\u4EE5.cpt\u6216\u8005.class\u6216\u8005.frm\u7D50\u5C3E\u3002
Provide=\u63D0\u4F9B
FormulaD-Math_&_Trig=\u6578\u5B78\u548C\u4E09\u89D2\u51FD\u6578
FR-Designer-StyleAlignment_Right=\u9760\u53F3\u5C0D\u9F4A
FR-Designer-StyleAlignment_Right=\u9760\u53F3
Error_TableDataNameRepeat=\u5DF2\u7D93\u5728\u4F3A\u670D\u5668\u8CC7\u6599\u96C6\u4E2D\u5B58\u5728\u6216\u8005\u591A\u500B\u8CC7\u6599\u96C6\u540D\u91CD\u8907\u3002
Choose_None=\u4E0D\u9078
File-tree=\u6A94\u6848\u6A39
@ -1154,7 +1153,7 @@ Multiline=\u591A\u5217\u7DE8\u8F2F
Datasource-Convert_Charset=\u7DE8\u78BC\u8F49\u63DB
DashBoard-ConnectionList=\u8CC7\u6599\u9023\u63A5
Utils-Submit_Forcibly=\u5F37\u884C\u63D0\u4EA4
FR-Designer_Parent_Marked_Field=\u7236\u6A19\u8A18\u6B04\u4F4D
Parent_Marked_Field=\u7236\u6A19\u8A18\u6B04\u4F4D
Logout=\u9000\u51FA
FR-Designer_Show_Blank_Row=\u88DC\u5145\u7A7A\u767D\u5217
FR-Base_Format=\u683C\u5F0F
@ -1163,12 +1162,12 @@ Delete_Column=\u522A\u9664\u6B04
SecondGraduationLine=\u6B21\u8981\u523B\u5EA6\u7DDA
SpecifiedG-Groups=\u7D44
CONTINUUM_MODE=\u76F8\u9130\u9023\u7E8C\u5206\u7D44
Datasource-Connection_failed=\u93C8\u63A5\u5931\u6557
Datasource-Connection_failed=\u9023\u63A5\u5931\u6557
CategoryName=\u5206\u985E\u540D
DBCP_INITIAL_SIZE=\u521D\u59CB\u5316\u9023\u63A5\u6578
Colors=\u984F\u8272
FR-Import-Export_CSV=CSV\u683C\u5F0F(\u9017\u865F\u5206\u9694)
FR-Designer-StyleAlignment_Left=\u9760\u5DE6\u5C0D\u9F4A
FR-Designer-StyleAlignment_Left=\u9760\u5DE6
BackgroundTexture-PaperBag=\u7D19\u888B
RWA-BuildIn_SQL=\u5167\u7F6ESQL
SingleLayer=\u55AE\u5C64
@ -1193,7 +1192,7 @@ Privilege-Selected_None_Of_Any_Items=\u6C92\u6709\u9078\u4E2D\u4EFB\u4F55\u4E00\
FRFont-Size=\u5927\u5C0F
Function-J2EE_server=J2EE\u4F3A\u670D\u5668
FR-Designer_Allow_Blank=\u5141\u8A31\u70BA\u7A7A
FR-Designer_Build_Tree_Accord_Parent_Marked_Filed=\u4F9D\u8CF4\u6240\u9078\u8CC7\u6599\u96C6\u7684\u7236\u6A19\u8A18\u6B04\u4F4D\u69CB\u5EFA\u6A39
Build_Tree_Accord_Parent_Marked_Filed=\u4F9D\u8CF4\u6240\u9078\u8CC7\u6599\u96C6\u7684\u7236\u6A19\u8A18\u6B04\u4F4D\u69CB\u5EFA\u6A39
Preference-Horizontal_Scroll_Bar_Visible=\u6C34\u5E73\u6EFE\u52D5\u689D\u53EF\u898B
Scope=\u7BC4\u570D
Save_All_Records_In_Memory=\u6240\u6709\u8A18\u9304\u90FD\u5132\u5B58\u5728\u5167\u5B58\u4E2D
@ -1207,7 +1206,7 @@ FS_Start_Date=\u958B\u59CB\u65E5\u671F
FR-ConditionB_Operator=\u64CD\u4F5C\u7B26
Printer-Alias=\u5225\u540D
DS-Class_Name=\u985E\u540D
FR-Designer-Plugin_Has_Been_Disabled=Plugin has been disabled
FR-Designer-Plugin_Has_Been_Disabled=\u63D2\u4EF6\u5DF2\u88AB\u7981\u7528\uFF0C\u91CD\u555F\u8A2D\u8A08\u5668\u53CA\u4F3A\u670D\u5668\u751F\u6548\uFF0C\u4F3A\u670D\u5668\u9700\u624B\u52D5\u91CD\u555F
Sort-Original=\u4E0D\u6392\u5E8F
Utils-Top_to_Bottom_a=\u5F9E\u4E0A\u5F80\u4E0B
Parameter-String=\u5B57\u5143\u4E32
@ -1228,7 +1227,7 @@ Interface=\u4ECB\u9762
FR-Designer-Beyond_Bounds=\u8D85\u51FA\u6216\u8005\u5C0F\u65BCbody\u908A\u754C\uFF0C\u4E0D\u80FD\u8ABF\u6574\u5927\u5C0F
seconds=\u79D2
Auto-Build=\u81EA\u52D5\u69CB\u5EFA
FR-Designer-Plugin_Install_Successful=Install successful
FR-Designer-Plugin_Install_Successful=\u8A72\u63D2\u4EF6\u5C07\u5728\u91CD\u65B0\u555F\u52D5\u8A2D\u8A08\u5668\u53CA\u4F3A\u670D\u5668\u6642\u88AB\u555F\u7528\uFF0C\u4F3A\u670D\u5668\u9700\u624B\u52D5\u91CD\u555F
Template_Path=\u7BC4\u672C\u8DEF\u5F91
FR-Designer-FRFont_Bold=\u7C97\u9AD4
Poly_Name=\u805A\u5408\u584A\u540D
@ -1237,7 +1236,7 @@ Hyperlink-Self_Window=\u7576\u524D\u7A97\u53E3
FR-Designer-Widget-Style_Title=\u6A19\u984C
FR-Designer-FRFont_Size=\u5927\u5C0F
M_File-Export-SVG=SVG\u683C\u5F0F
Capacity=Capacity
Capacity=\u5BB9\u91CF
Rose_Red=\u73AB\u7470\u7D05
StyleAlignment-The_value_of_rotation_must_between_-90_and_90_degrees=\u65CB\u8F49\u503C\u5FC5\u9808\u5728\u8CA090\u5EA6\u523090\u5EA6
HF-Move_Left=\u5DE6\u79FB
@ -1262,7 +1261,7 @@ DateFormat-Custom_Warning=\u8A3B\uFF1A\u81EA\u5B9A\u7FA9\u65E5\u671F\u683C\u5F0F
Unit_MM=\u516C\u5398
Server-Start=\u555F\u52D5
CellPage-Can_Break_On_Paginate=\u5206\u9801\u6642\u53EF\u4EE5\u65B7\u958B
FR-Designer_Build_Tree_Accord_Marked_Filed_Length=\u4F9D\u8CF4\u6240\u9078\u8CC7\u6599\u96C6\u7684\u6A19\u8A18\u6B04\u4F4D\u7684\u9577\u5EA6\u69CB\u5EFA\u6A39\u72C0
Build_Tree_Accord_Marked_Filed_Length=\u4F9D\u8CF4\u6240\u9078\u8CC7\u6599\u96C6\u7684\u6A19\u8A18\u6B04\u4F4D\u7684\u9577\u5EA6\u69CB\u5EFA\u6A39\u72C0
ComboCheckBox-Start_Symbol=\u8D77\u59CB\u7B26
Real=\u5BE6\u969B
RWA-Batch_Modify_Cells=\u6279\u91CF\u4FEE\u6539\u5132\u5B58\u683C
@ -1287,7 +1286,7 @@ Brown=\u8910\u8272
Select_A_Tree_DataSource_To_Build=\u9078\u64C7\u4E00\u500B\u6A39\u72C0\u8CC7\u6599\u96C6\u4F86\u69CB\u5EFA
Overlapping=\u91CD\u66E1\u578B
DS-Class_TableData=\u985E\u5225\u8CC7\u6599\u96C6
FR-Designer-Plugin_Illegal_Plugin_Zip_Cannot_Be_Install=Illegal plugin,cannot be installed
FR-Designer-Plugin_Illegal_Plugin_Zip_Cannot_Be_Install=\u4E0D\u53EF\u8B58\u5225\u7684\u63D2\u4EF6\uFF0C\u7121\u6CD5\u5B89\u88DD
DisplayNothingBeforeQuery=\u9EDE\u64CA\u67E5\u8A62\u524D\u4E0D\u986F\u793A\u5176\u4ED6\u5167\u5BB9
Y_Axis=Y\u8EF8
FormulaD-Most_Recently_Used=\u5E38\u7528\u51FD\u6578
@ -1318,7 +1317,7 @@ FR-Base_Table=\u8868
Des-Remove_WorkSheet=\u8981\u522A\u9664\u7684\u8868\u53EF\u80FD\u5B58\u5728\u8CC7\u6599,\u5982\u679C\u8981\u6C38\u4E45\u522A\u9664\u9019\u4E9B\u8CC7\u6599,\u8ACB\u6309'\u78BA\u5B9A'\u6309\u9215.
Rotation=\u65CB\u8F49
Undefined=\u672A\u5B9A\u7FA9
Support-Auto_Complete_Shortcut=Auto Complete Shortcut
Support-Auto_Complete_Shortcut=\u81EA\u52D5\u88DC\u5168\u5FEB\u6377\u9375
Set_Column_Title_End=\u8A2D\u5B9A\u91CD\u8907\u7D50\u5C3E\u6B04
Submit_Url=\u63D0\u4EA4\u5730\u5740
ReportServerP-Are_you_sure_to_delete_the_selected_printer=\u4F60\u78BA\u5BE6\u60F3\u522A\u9664\u9078\u4E2D\u7684\u5370\u8868\u6A5F\u55CE
@ -1334,7 +1333,7 @@ Format-Error=\u8F38\u5165\u7684\u503C\u683C\u5F0F\u4E0D\u6B63\u78BA
Server-Stop=\u505C\u6B62
Preference-Setting_Grid=\u7DB2\u683C\u8A2D\u5B9A
ReportServerP-Add_Printer=\u589E\u52A0\u5370\u8868\u6A5F
FR-Designer-Plugin_Active=Active
FR-Designer-Plugin_Active=\u555F\u7528
Utils-File_name=\u6A94\u6848\u540D
NOT_NULL_Des=\u4E0D\u80FD\u70BA\u7A7A
Right_Border_Line=\u53F3\u6846\u7DDA
@ -1348,17 +1347,17 @@ ReportColumns-Columns_vertically=\u6B04\u5206\u6B04
ReportGUI-Print_Background=\u5217\u5370/\u532F\u51FA\u5831\u8868\u80CC\u666F
Export-CSV=CSV\u683C\u5F0F(\u9017\u865F\u5206\u9694)
M_Edit-Paste=\u8CBC\u4E0A(P)
FR-Designer-Basic_Restart_Designer=Restart designer
FR-Designer-Basic_Restart_Designer=\u91CD\u555F\u8A2D\u8A08\u5668
ReportServerP-PDF2-INFO=\u50C5\u5728LINUX/UNIX\u4E0B\u672A\u5B89\u88DD\u4E2D\u6587\u5B57\u9AD4\u6642\u4F7F\u7528
FormulaD-Check_Valid=\u6AA2\u67E5\u5408\u6CD5\u6027
server_disconnected=\u9023\u63A5\u5DF2\u65B7\u958B
ParameterD-Parameter_name_cannot_be_null=\u53C3\u6578\u7684\u540D\u5B57\u4E0D\u53EF\u4EE5\u70BA\u7A7A
FR-Designer-Plugin_Version_Is_Lower_Than_Current=The version of plugin is lower than current
FR-Designer-Plugin_Version_Is_Lower_Than_Current=\u5347\u7D1A\u5305\u7684\u63D2\u4EF6\u7248\u672C\u6C92\u6709\u6BD4\u7576\u524D\u7684\u9AD8
RWA-NotChange_Unmodified=\u4E0D\u6539\u8B8A\u6642\u4E0D\u66F4\u65B0
User_Information=\u7528\u6236\u8A0A\u606F
Custom_styles_lost=\u81EA\u5B9A\u7FA9\u6A23\u5F0F\u5DF2\u4E1F\u5931
PageSetup-Margin=\u9801\u908A\u8DDD
M-New_FormBook=\u5EFA\u7ACB\u65B0\u5831\u8868
M-New_FormBook=\u65B0\u589E\u8868\u55AE\uFF08\u6C7A\u7B56\u8868\uFF09
Widget-TreeNode=\u6A39\u7BC0\u9EDE\u6309\u9215
Form-Url=\u5730\u5740
Utils-Beyond_the_left_side_of_Border=\u8D85\u51FA\u5DE6\u908A\u754C
@ -1371,9 +1370,9 @@ Not_Exsit=\u4E0D\u5B58\u5728\u65BC\u5831\u8868
Utils-Insert_Row=\u63D2\u5165\u5217
Utils-Delete_Row=\u522A\u9664\u5217
not_support_authority_edit=\u8A72\u5143\u7D20\u4E0D\u652F\u6301\u8A31\u53EF\u6B0A\u63A7\u5236
Formula_Tips=\u516C\u5F0F\u5FC5\u9808\u4EE5"\
Formula_Tips=\u516C\u5F0F\u5FC5\u9808\u4EE5"\="\u865F\u958B\u982D
FR-Action_Copy=\u8907\u88FD
Compile_Success=Compile Success
Compile_Success=\u7DE8\u8B6F\u6210\u529F
BackgroundTexture-RecycledPaper=\u518D\u751F\u7D19
StyleAlignment-Single_Line=\u55AE\u5217\u986F\u793A
Utils-Move_Down=\u4E0B\u79FB
@ -1460,7 +1459,7 @@ DBCP_TEST_ON_BORROW=\u7372\u53D6\u9023\u63A5\u524D\u6AA2\u9A57
FR-Designer_layerIndex=\u4F9D\u8CF4\u7684\u5C64\u6578
WEB-Write_Setting=\u586B\u5831\u9762\u9762\u8A2D\u5B9A
M-New_WorkBook=\u65B0\u589E\u5DE5\u4F5C\u7C3F
FR-Designer-Plugin_Has_Been_Actived=Plugin is now active
FR-Designer-Plugin_Has_Been_Actived=\u63D2\u4EF6\u5DF2\u88AB\u555F\u7528\uFF0C\u91CD\u555F\u8A2D\u8A08\u5668\u53CA\u4F3A\u670D\u5668\u751F\u6548\uFF0C\u4F3A\u670D\u5668\u9700\u624B\u52D5\u91CD\u555F
Datasource-Maximum_Number_of_Preview_Rows=\u6700\u5927\u7684\u9810\u89BD\u5217\u6578
ExpandD-Cell_Expand_Attributes=\u64F4\u5C55\u5C6C\u6027
Select_the_repeated_row_and_column=\u9078\u64C7\u9700\u8981\u91CD\u8907\u7684\u5217\u6B04
@ -1536,7 +1535,7 @@ FR-Designer_Cancel=\u53D6\u6D88
Button-Group-Display-Columns=\u5C55\u793A\u6B04\u6578
Widget-Height=\u63A7\u5236\u9805\u9AD8\u5EA6
Examples=\u4F8B\u5B50
Formula_Dictionary_Display_Example=\u5BE6\u969B\u503C\u7BC4\u570D\u70BA Formula_Dictionary_Display_Examples\
Formula_Dictionary_Display_Example=\u5BE6\u969B\u503C\u7BC4\u570D\u70BA Formula_Dictionary_Display_Examples\= \u5BE6\u969B\u503C\u7BC4\u570D\u70BA Formula_Dictionary_Display_Examples_Html\=<html>\u5BE6\u969B\u503C\u7BC4\u570D\u70BA Formula_Editor\=\u516C\u5F0F\u7DE8\u8F2F\u5668
StyleAlignment-Horizontal=\u6C34\u5E73\u5C0D\u9F4A
HyperLink_Must_Alone_Reset=\u591A\u500B\u8D85\u93C8
ExpandD-Expand_Direction=\u64F4\u5C55\u65B9\u5411
@ -1566,7 +1565,7 @@ HF-Undefined=\u6C92\u6709\u5B9A\u7FA9
Widget-User_Defined_Widget_Config=\u9810\u5B9A\u7FA9\u63A7\u5236\u9805
Report-Write_Attributes_Group_Warning=\u8A2D\u5B9A\u7232\u5132\u5B58\u683C\u7D44\u7684\u5404\u6B04\u4F4D\u4E2D\u7684\u5132\u5B58\u683C\u500B\u6578\u5FC5\u9808\u76F8\u540C
Form-Single_quote=\u55AE\u5F15\u865F
Compile_Success_And_Then_Save=Compile Success And Then Save
Compile_Success_And_Then_Save=\u7DE8\u8B6F\u6210\u529F\u624D\u80FD\u6B63\u78BA\u5132\u5B58
FR-Designer_Layout-Padding=\u5167\u908A\u8DDD
Layout_Container=\u4F48\u5C40\u5BB9\u5668
Admin=\u7BA1\u7406\u54E1
@ -1583,7 +1582,7 @@ Tree-Return_Full_Path=\u7D50\u679C\u8FD4\u56DE\u5B8C\u6574\u5C64\u6B21\u8DEF\u5F
FRFont-bolditalic=\u7C97\u9AD4\u659C\u9AD4
FR-Base_StyleFormat_Sample=\u793A\u4F8B
Area_Value=\u5340\u57DF\u503C
FR-Designer-Plugin_Disable=Disable
FR-Designer-Plugin_Disable=\u7981\u7528
Utils-Are_you_sure_to_remove_the_selected_item=\u4F60\u78BA\u5BE6\u6C7A\u5B9A\u522A\u9664\u9078\u4E2D\u7684\u9805
Face_Write=\u586B\u5831
Poly-Report_Block=\u8868\u683C\u985E\u578B\u805A\u5408\u584A
@ -1594,7 +1593,7 @@ FR-Hyperlink_Please_Select_Reportlet=\u8ACB\u9078\u64C7\u7DB2\u8DEF\u5831\u8868
FS_Report_Type=\u985E\u578B
HF-New_Line=\u63DB\u5217\u7B26
Privilege=\u6B0A\u9650
Export-Offline-Html=\u8F38\u51FA\u96E2\u7DDAhtml\u5831\u8868
Export-Offline-Html=\u532F\u51FA\u96E2\u7DDAhtml\u5831\u8868
FR-Designer_open-new-form-tip=\u7576\u524D\u6A21\u677F\u70BA711\u4EE5\u4E0B\u7248\u672C\u88FD\u4F5C, \u7121\u6CD5\u517C\u5BB9, \u4E0D\u80FD\u6253\u958B. \u5047\u5982\u60F3\u6253\u958B\u4FEE\u6539\u6B64\u8868\u55AE, \u8ACB\u4F7F\u7528\u5C0D\u61C9\u7248\u672C\u8A2D\u8A08\u5668\u6253\u958B.
FR-Designer-Widget-Style_Frame_Style=\u6846\u67B6\u6A23\u5F0F
Present-No_Present=\u53D6\u6D88\u6A21\u5F0F\u8A2D\u5B9A
@ -1614,14 +1613,14 @@ FR-Designer_Date=\u65E5\u671F
Column_Multiple=\u8CC7\u6599\u500D\u6578
FR-App-All_File=\u6A94\u6848
Sort-Descending=\u964D\u51AA
FR-Designer-Plugin_Delete=Delete
FR-Designer-Plugin_Delete=\u522A\u9664
Above=\u4EE5\u4E0A\u7248\u672C
Utils-The-Chart=\u5716\u8868
FRFont-plain=\u5E38\u898F
Calculating=\u8655\u7406\u4E2D
Form-Object=\u8868\u55AE\u5C0D\u8C61
May=\u4E94\u6708
FR-Designer_Plugin_Normal_Update=Update
FR-Designer_Plugin_Normal_Update=\u66F4\u65B0
FR-Hyperlink_Reportlet=\u7DB2\u8DEF\u5831\u8868
M_Edit-Copy=\u8907\u88FD(C)
Sub_Report_Message2=\u7236\u5831\u8868\u4E0D\u5728\u7576\u524D\u904B\u884C\u74B0\u5883\u4E0B
@ -1633,10 +1632,10 @@ FR-Designer_Server-version-tip-moreInfo=\u5EFA\u8B70\u60A8\u6240\u5C6C\u5718\u96
Get_Lock=\u52A0\u9396
HF-Edit_Footer=\u7DE8\u8F2F\u9801\u5C3E
Datasource-New_Charset=\u65B0\u7DE8\u78BC
Preference-Custom=Custom
Preference-Custom=\u81EA\u5B9A\u7FA9
BackgroundTexture-Newsprint=\u65B0\u805E\u7D19
ConditionB-Add_bracket=\u65B0\u589E\u62EC\u865F
Datasource-Connection_successfully=\u93C8\u63A5\u6210\u529F
Datasource-Connection_successfully=\u9023\u63A5\u6210\u529F
Function-The_class_must_implement_the_interface=\u6539\u985E\u5FC5\u9808\u5BE6\u73FE\u4ECB\u9762
FR-Designer_ChartF-Transparency=\u900F\u660E
Crimson=\u6DF1\u7D05
@ -1658,9 +1657,9 @@ Verify-Verify_Formula=\u6821\u9A57\u516C\u5F0F
State=\u7701\u5E02
FR-Designer-Widget-Style_Body_Background=\u4E3B\u9AD4\u80CC\u666F
FR-App-Privilege_No=\u6C92\u6709\u6B0A\u9650
Please_Drag_ParaPane=
Please_Drag_ParaPane=\u8ACB\u62D6\u5165\u53C3\u6578\u9762\u677F
Come_True=\u5BE6\u73FE
ISEMPTY=is empty
ISEMPTY=\u70BA\u7A7A
Background-Texture=\u7D0B\u7406
FR-Designer_Verify-Message=\u932F\u8AA4\u8A0A\u606F
Locked=\uFF08\u5DF2\u9396\u5B9A\uFF09
@ -1710,11 +1709,11 @@ Condition_Display=\u689D\u4EF6\u986F\u793A
FR-Server-Design_template_unopened=\u7121\u6CD5\u6253\u958B\u7BC4\u672C
Function-Function_Class_Name=\u51FD\u6578\u985E\u540D
Schedule-Template=\u7BC4\u672C\u540D\u7A31
FR-Designer_Tree_Data_Field=\u6A39\u72C0\u8CC7\u6599\u6B04\u4F4D
Tree_Data_Field=\u6A39\u72C0\u8CC7\u6599\u6B04\u4F4D
Border-Style-Normal=\u76F4\u89D2\u6846\u7DDA
Top_And_Double_Bottom_Border_Line=\u4E0A\u6846\u7DDA\u548C\u96D9\u4E0B\u6846\u7DDA
FR-Server_Embedded_Server_Start=\u5167\u7F6E\u7684\u4F3A\u670D\u5668-\u555F\u52D5
FR-Designer-Basic_Restart_Designer_Later=Restart later
FR-Designer-Basic_Restart_Designer_Later=\u7A0D\u5F8C\u91CD\u555F
StyleAlignment-Top=\u9760\u4E0A\u5C0D\u9F4A
ReportServerP-First=\u9996\u9801
Not_Exist=\u4E0D\u5B58\u5728
@ -1736,7 +1735,7 @@ PageSetup-Horizontally=\u6C34\u5E73\u7F6E\u4E2D
No_Editor_Property_Definition=\u8A72\u7DE8\u8F2F\u5668\u6C92\u6709\u5C6C\u6027\u5B9A\u7FA9
Env-Remote_Server=\u9060\u7A0B\u4F3A\u670D\u5668
FR-Utils_Background=\u80CC\u666F
FR-Designer-Plugin_Warning=Warning
FR-Designer-Plugin_Warning=\u8B66\u544A
Server-version-info=\u60A8\u7576\u524D\u6253\u958B\u7684\u6A21\u677F\u6A94\u6848\u662F\u7531\u66F4\u9AD8\u7248\u672C\u7684\u8A2D\u8A08\u5668\u88FD\u4F5C\u7684\uFF0C\u6253\u958B\u6703\u6709\u51FA\u932F\u6216\u8005\u4E1F\u5931\u539F\u6709\u6A21\u677F\u5C6C\u6027\u7684\u98A8\u96AA\u3002\u5047\u5982\u9700\u8981\u6253\u958B\u6B64\u6A21\u677F\u8ACB\u60A8\u5C07\u60A8\u7684\u8A2D\u8A08\u5668\u5347\u7D1A\u81F3
CellWrite-Page_After_Row=\u5217\u5F8C\u5206\u9801
HF-Right_Section=\u53F3\u5340\u57DF
@ -1823,13 +1822,13 @@ local=\u672C\u6A5F
FR-Designer_Gradation=\u5C64\u6B21
PageSetup-Finis_Start_Column=\u91CD\u8907\u7D50\u5C3E\u6B04
Env-Invalid_User_and_Password=\u975E\u6CD5\u7684\u5E33\u865F\u6216\u5BC6\u78BC
FR-Designer-Plugin_All_Plugins=All plugins
FR-Designer-Plugin_All_Plugins=\u5168\u90E8\u63D2\u4EF6
FR-Designer_Prepare_Export=\u958B\u59CB\u532F\u51FA\uFF0C\u8ACB\u7A0D\u5019
DBCP_TEST_ON_RETURN=\u6B78\u9084\u93C8\u63A5\u524D\u6AA2\u9A57
DBCP_TEST_ON_RETURN=\u6B78\u9084\u9023\u63A5\u524D\u6AA2\u9A57
no-alternatives=\u6C92\u6709\u9078\u64C7\u9805
FR-Designer_Submmit_WClass=\u5F8C\u53F0\u985E\u63D0\u4EA4
M_Insert-Slope_Line=\u63D2\u5165\u659C\u7DDA
FR-Designer-Plugin_Plugin_Description=Description
FR-Designer-Plugin_Plugin_Description=\u63D2\u4EF6\u63CF\u8FF0
ExpandD-Not_Expand=\u4E0D\u64F4\u5C55
Utils-Bottom_to_Top=\u5F9E\u4E0B\u5230\u4E0A
Collect-Click\!_Get_user_information_code=\u9EDE\u64CA\!\u7372\u53D6\u7528\u6236\u8A0A\u606F\u78BC
@ -1848,7 +1847,7 @@ Form-NullLayout=\u7D55\u5C0D\u5B9A\u4F4D
ConditionB-Remove_bracket=\u53BB\u6389\u62EC\u865F
email=\u90F5\u7BB1
Minute=\u5206\u9418
FR-Designer-Plugin_Update=Plugins to update
FR-Designer-Plugin_Update=\u63D2\u4EF6\u66F4\u65B0
alraedy_close=\u5DF2\u7D93\u95DC\u9589
ComboCheckBox-End_Symbol=\u7D50\u675F\u7B26
DataColumn=\u8CC7\u6599\u6B04
@ -1858,17 +1857,17 @@ Export-Excel-PageToSheet=\u5206\u9801\u5206Sheet\u532F\u51FA
Edit-Row_Count=\u5217\u6578
DS-Report_TableData=\u5831\u8868\u8CC7\u6599\u96C6
Sche-Hour=\u6642
Group_Count=Group Count
Group_Count=\u8868\u793A\u7E3D\u500B\u6578
EndValue=\u7D50\u675F\u503C
FR-Designer_Sytle-Indentation=\u7E2E\u9032
DownBarBorderStyleAndColor=\u8DCC\u67F1\u6A23\u5F0F
World=\u4E16\u754C
FR-Designer-Basic_Cancel=Cancel
FR-Designer-Basic_Cancel=\u53D6\u6D88
Finally=\u6700\u5F8C
Low=\u4F4E
Please_Input_The_Key=\u8ACB\u8F38\u5165\u5C0D\u61C9\u5730\u5716\u4F7F\u7528\u7684key
Smart=\u667A\u80FD
Preference-Predefined=Predefined
Preference-Predefined=\u9810\u5B9A\u7FA9
Current_custom_global=\u7576\u524D\u5831\u8868\u6240\u7528\u81EA\u5B9A\u7FA9\u5168\u5C40\u6A23\u5F0F
FR-Designer-Plugin_Shop_Need_Install=\u60A8\u9084\u6C92\u6709\u63D2\u4EF6\u5546\u5E97\u7684\u8CC7\u6E90,\u662F\u5426\u4E0B\u8F09?
WEB-Pagination_Setting=\u5206\u9801\u9810\u89BD\u8A2D\u5B9A
@ -1876,14 +1875,14 @@ RCodeDrawPix=\u50CF\u7D20
FR-Designer-Widget-Style_Alpha=\u4E0D\u900F\u660E\u5EA6
BorderLayout-North=\u5317
HJS-Current_Page=\u7576\u524D\u9801
Compile=Compile
Compile=\u7DE8\u8B6F
Show_Blank_Row=\u88DC\u5145\u7A7A\u767D\u5217
TableData_Dynamic_Parameter_Setting=\u52D5\u614B\u53C3\u6578\u6CE8\u5165
FR-Background_Image_Default=\u9810\u8A2D
BackgroundTexture-WhiteMarble=\u767D\u8272\u5927\u7406\u77F3
DataFunction-Sum=\u6C42\u548C
Collect-The_user_information_code_is_invalid=\u9019\u500B\u7528\u6236\u8A0A\u606F\u78BC\u662F\u975E\u6CD5\u7684
Preference-Locale=Locale
Preference-Locale=\u570B\u969B\u5316
M_File-Export-PDF=PDF\u683C\u5F0F
BiasD-From-lower_left_to_upper_right=\u7E3D\u5DE6\u4E0B\u5230\u53F3\u4E0A\u767C\u6563
Border-Style=\u6846\u7DDA\u6A23\u5F0F
@ -1916,7 +1915,7 @@ Preference-Pagination_Line_Color=\u5206\u9801\u7DDA\u984F\u8272
Test_URL=\u6E2C\u8A66\u9023\u63A5
Fill_blank_Data=\u88DC\u5145\u7A7A\u767D\u8CC7\u6599
ReportServerP-The_name_of_printer_cannot_be_null=\u5370\u8868\u6A5F\u7684\u540D\u5B57\u4E0D\u80FD\u70BA\u7A7A
FR-Designer-Basic_Copy_Activation_Key=Double click to copy key to clipboard
FR-Designer-Basic_Copy_Activation_Key=\u96D9\u64CA\u8A2D\u8A08\u5668\u7DE8\u865F\u53EF\u8907\u88FD\u5230\u526A\u8CBC\u677F
Continuum=\u76F8\u9130\u9023\u7E8C
BackgroundTexture-MediumWood=\u6DF1\u8272\u6728\u88FD
Datasource-Column_Index=\u6B04\u5E8F\u865F
@ -1925,11 +1924,11 @@ Form-Component_Bounds=\u5143\u4EF6\u908A\u754C
Utils-Submit=\u63D0\u4EA4
Conditions_formula=\u689D\u4EF6\u516C\u5F0F
M_Insert-Image=\u63D2\u5165\u5716\u7247
FR-Designer-Plugin_Will_Be_Delete=Delete plugin
FR-Designer-Plugin_Will_Be_Delete=\u63D2\u4EF6\u5C07\u88AB\u522A\u9664\uFF0C\u9700\u91CD\u555F\u8A2D\u8A08\u5668\u53CA\u4F3A\u670D\u5668\uFF0C\u4F3A\u670D\u5668\u9700\u624B\u52D5\u91CD\u555F
FormulaD-Functions=\u51FD\u6578
Mobile_Terminal=\u884C\u52D5\u8A2D\u5099
CheckBox=\u5FA9\u9078\u6846
FR-Designer-Plugin_Install=Install
FR-Designer-Plugin_Install=\u5B89\u88DD
Sun=\u65E5
FR-Designer_ToolBar_Bottom=\u5E95\u90E8\u5DE5\u5177\u6B04
Widget-Width=\u63A7\u5236\u9805\u5BEC\u5EA6
@ -1986,4 +1985,19 @@ FormulaD-Data_Fields=\u8CC7\u6599\u9805
FR-Designer_Role=\u89D2\u8272
FR-Designer_Permissions=\u6B0A\u9650
FR-Designer_Form_Button=\u6309\u9215
FR-Designer_WF_Name=\u540D\u7A31
FR-Designer_WF_Name=\u540D\u7A31
FR-Designer_Double=\u5C0F\u6578
FR-Designer_Query=\u67E5\u8A62
FR-Designer_Font=\u5B57\u9AD4
FR-Designer_Confirm=\u78BA\u8A8D
FR-Designer_Parameter=\u53C3\u6578
FR-Designer-Plugin_Plugin=\u63D2\u4EF6
FR-Designer_Background=\u586B\u6EFF\u8272\u5F69
Template=\u7BC4\u672C
FR-Designer_Original_Marked_Filed=\u539F\u59CB\u6A19\u8A18\u6B04\u4F4D
FR-Designer_Build_Tree_Accord_Marked_Filed_Length=\u4F9D\u8CF4\u6240\u9078\u8CC7\u6599\u96C6\u7684\u6A19\u8A18\u6B04\u4F4D\u7684\u9577\u5EA6\u69CB\u5EFA\u6A39\u72C0
FR-Designer_Tree_Data_Field=\u6A39\u72C0\u8CC7\u6599\u6B04\u4F4D
FR-Designer_Parent_Marked_Field=\u7236\u6A19\u8A18\u6B04\u4F4D
FR-Designer_Build_Tree_Accord_Parent_Marked_Filed=\u4F9D\u8CF4\u6240\u9078\u8CC7\u6599\u96C6\u7684\u7236\u6A19\u8A18\u6B04\u4F4D\u69CB\u5EFA\u6A39
FR-Product_Demo=\u529F\u80FD\u5C55\u793A

3
designer_base/src/com/fr/design/module/DesignModule.java

@ -33,6 +33,7 @@ import java.util.Set;
* 所有设计器模块的父类
*/
public abstract class DesignModule extends TopModule {
public static final String LOCALE_FILE_PATH = "com/fr/design/locale/designer";
public void start() {
super.start();
App<?>[] apps = apps4TemplateOpener();
@ -62,7 +63,7 @@ public abstract class DesignModule extends TopModule {
* @return 国际化文件路径
*/
public String[] getLocaleFile() {
return new String[]{"com/fr/design/locale/designer"};
return new String[]{LOCALE_FILE_PATH};
}
public Class<?>[] actionsForInsertCellElement() {

4
designer_base/src/com/fr/design/utils/DesignUtils.java

@ -112,7 +112,7 @@ public class DesignUtils {
String line = null;
while ((line = reader.readLine()) != null) {
if (line.startsWith("demo")) {
StartServer.browerDemoURL();
StartServer.browserDemoURL();
} else if (StringUtils.isNotEmpty(line)) {
File f = new File(line);
String path = f.getAbsolutePath();
@ -315,7 +315,7 @@ public class DesignUtils {
String web = GeneralContext.getCurrentAppNameOfEnv();
String url = "http://localhost:" + DesignerEnvManager.getEnvManager().getJettyServerPort() + "/" + web + "/" + ConfigManager.getProviderInstance().getServletMapping()
+ postfixOfUri;
StartServer.browerURLWithLocalEnv(url);
StartServer.browserURLWithLocalEnv(url);
} catch (Throwable e) {
//
}

11
designer_base/src/com/fr/start/BaseDesigner.java

@ -16,15 +16,13 @@ import com.fr.design.fun.GlobalListenerProvider;
import com.fr.design.mainframe.DesignerFrame;
import com.fr.design.mainframe.TemplatePane;
import com.fr.design.mainframe.toolbar.ToolBarMenuDock;
import com.fr.design.module.DesignModule;
import com.fr.design.utils.DesignUtils;
import com.fr.env.SignIn;
import com.fr.file.FILE;
import com.fr.file.FILEFactory;
import com.fr.file.FileFILE;
import com.fr.general.ComparatorUtils;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import com.fr.general.ModuleContext;
import com.fr.general.*;
import com.fr.plugin.PluginCollector;
import com.fr.stable.*;
@ -66,12 +64,15 @@ public abstract class BaseDesigner extends ToolBarMenuDock {
//下面这两句的位置不能随便调换,因为会影响语言切换的问题
initLanguage();
// 先加载设计器的国际化文件
Inter.loadLocaleFile(GeneralContext.getLocale(), DesignModule.LOCALE_FILE_PATH);
SplashWindow splashWindow = new SplashWindow(createSplashPane());
if (args != null) {
for (String arg : args) {
if (ComparatorUtils.equals(arg, "demo")) {
DesignerEnvManager.getEnvManager().setCurrentEnv2Default();
StartServer.browerDemoURL();
StartServer.browserDemoURL();
break;
}
}

12
designer_base/src/com/fr/start/StartServer.java

@ -45,10 +45,10 @@ public class StartServer {
* 预览Demo
* 找默认工作目录不应该按照名字去找而应该按照安装路径因为默认工作目录的名字可能会改变
*/
public static void browerDemoURL() {
public static void browserDemoURL() {
if (ComparatorUtils.equals(StableUtils.getInstallHome(), ".")) {//august:供代码使用
String web = GeneralContext.getCurrentAppNameOfEnv();
browerURLWithLocalEnv("http://localhost:" + DesignerEnvManager.getEnvManager().getJettyServerPort() + "/" + web + "/" + ConfigManager.getProviderInstance().getServletMapping()
browserURLWithLocalEnv("http://localhost:" + DesignerEnvManager.getEnvManager().getJettyServerPort() + "/" + web + "/" + ConfigManager.getProviderInstance().getServletMapping()
+ "?op=fs");
return;
}
@ -65,16 +65,16 @@ public class StartServer {
} catch (Exception e) {
FRContext.getLogger().errorWithServerLevel(e.getMessage());
}
initDemoServerAndBrower();
initDemoServerAndBrowser();
}
}).setVisible(true);
} else {
initDemoServerAndBrower();
initDemoServerAndBrowser();
}
}
private static void initDemoServerAndBrower() {
private static void initDemoServerAndBrowser() {
if (jettyHost != null) {
if (!jettyHost.isDemoAppLoaded()) {
jettyHost.exit();
@ -104,7 +104,7 @@ public class StartServer {
*
* @param url 指定路径
*/
public static void browerURLWithLocalEnv(String url) {
public static void browserURLWithLocalEnv(String url) {
try {
if (jettyHost != null) {
if (NEED_LOAD_ENV) {

188
designer_chart/src/com/fr/design/ChartEnvManager.java

@ -1,188 +0,0 @@
package com.fr.design;
import com.fr.base.FRContext;
import com.fr.base.Utils;
import com.fr.general.ComparatorUtils;
import com.fr.general.DateUtils;
import com.fr.general.IOUtils;
import com.fr.stable.ProductConstants;
import com.fr.stable.StableUtils;
import com.fr.stable.StringUtils;
import com.fr.stable.project.ProjectConstants;
import com.fr.stable.xml.*;
import java.io.*;
import java.util.Date;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class ChartEnvManager implements XMLReadable, XMLWriter {
public static final String ACTIVE_KEY = "RXWY-A25421-K58F47757-7373";
private static final int ONE_MONTH_SECOND = 30*24*60*60;//30天,以秒为单位
private static final int MS =1000;
boolean isPushUpdateAuto = true; //是否自动推送更新
private String activationKey = null;
private static ChartEnvManager chartEnvManager;
private Date lastCheckDate;
private long checkTimeSpan =ONE_MONTH_SECOND;
/**
* DesignerEnvManager.
*/
public static ChartEnvManager getEnvManager() {
if(chartEnvManager == null){
chartEnvManager = new ChartEnvManager();
try {
XMLTools.readFileXML(chartEnvManager, chartEnvManager.getDesignerEnvFile());
}catch (Exception exp){
FRContext.getLogger().error(exp.getMessage(), exp);
}
}
return chartEnvManager;
}
private static File envFile = new File(ProductConstants.getEnvHome() + File.separator + ProductConstants.APP_NAME + "ChartEnv.xml");
private File getEnvFile() {
return envFile;
}
private File getDesignerEnvFile() {
File envFile = getEnvFile();
if (!envFile.exists()) {
createEnvFile(envFile);
}
return envFile;
}
private void createEnvFile(File envFile) {
try {
FileWriter fileWriter = new FileWriter(envFile);
StringReader stringReader = new StringReader("<?xml version=\"1.0\" encoding=\"UTF-8\" ?><Env></Env>");
Utils.copyCharTo(stringReader, fileWriter);
stringReader.close();
fileWriter.close();
} catch (IOException e) {
FRContext.getLogger().error(e.getMessage(), e);
}
}
/**
* 返回激活码
*/
public String getActivationKey() {
return activationKey;
}
/**
* 设置激活码
*/
public void setActivationKey(String activationKey) {
this.activationKey = activationKey;
}
public void setPushUpdateAuto(boolean isPushUpdateAuto){
this.isPushUpdateAuto = isPushUpdateAuto;
if(!this.isPushUpdateAuto){
lastCheckDate = new Date();
}
}
/**
* 是否设置了自动推送图表设计器在线更行
* @return 是则返回true
*/
public boolean isPushUpdateAuto(){
return isPushUpdateAuto;
}
/**
*在设置不自动推送在线更新的情况下每30天自动检测一次
* @return 是否需要检测
*/
public boolean isOverOneMonth(){
return !isPushUpdateAuto && ((new Date().getTime()-lastCheckDate.getTime())/MS>=checkTimeSpan);
}
/***
* 重新设置最新检查的日期
*/
public void resetCheckDate(){
this.lastCheckDate = new Date();
}
@Override
public void readXML(XMLableReader reader) {
if (reader.isChildNode()) {
String name = reader.getTagName();
if(ComparatorUtils.equals(name,"ChartAttributes")){
activationKey = reader.getAttrAsString("activationKey",null);
isPushUpdateAuto = reader.getAttrAsBoolean("isPushUpdateAuto",true);
checkTimeSpan = reader.getAttrAsLong("checkTimeSpan",ONE_MONTH_SECOND);
String date = reader.getAttrAsString("lastCheckDate", null);
if(!StringUtils.isEmpty(date)){
lastCheckDate = DateUtils.string2Date(date,true);
} else {
lastCheckDate = new Date();
}
}
}
}
@Override
public void writeXML(XMLPrintWriter writer) {
writer.startTAG("ChartDesigner");
writer.startTAG("ChartAttributes").attr("activationKey",activationKey)
.attr("isPushUpdateAuto",isPushUpdateAuto)
.attr("checkTimeSpan",checkTimeSpan)
.attr("lastCheckDate", DateUtils.getDate2LStr(lastCheckDate))
.end();
writer.end();
}
/**
* 保存设计器的配置文件, 该文件不在env的resource目录下
* 而是在Consts.getEnvHome() + File.separator + Consts.APP_NAME
*
*
* @date 2014-9-29-上午11:04:23
*/
public void saveXMLFile() {
File xmlFile = this.getDesignerEnvFile();
if (xmlFile == null) {
return;
}
if (!xmlFile.getParentFile().exists()) {//建立目录.
StableUtils.mkdirs(xmlFile.getParentFile());
}
String tempName = xmlFile.getName() + ProjectConstants.TEMP_SUFFIX;
File tempFile = new File(xmlFile.getParentFile(), tempName);
writeTempFile(tempFile);
IOUtils.renameTo(tempFile, xmlFile);
}
private void writeTempFile(File tempFile){
try{
OutputStream fout = new FileOutputStream(tempFile);
XMLTools.writeOutputStreamXML(this, fout);
fout.flush();
fout.close();
}catch (Exception e) {
FRContext.getLogger().error(e.getMessage());
}
}
}

69
designer_chart/src/com/fr/design/chart/report/GisMapDataPane4Chart.java

@ -1,69 +0,0 @@
package com.fr.design.chart.report;
import com.fr.base.TableData;
import com.fr.base.chart.chartdata.TopDefinitionProvider;
import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.chartdata.*;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.mainframe.AbstractChartDataPane4Chart;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import javax.swing.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class GisMapDataPane4Chart extends AbstractChartDataPane4Chart {
private GisMapTableDataContentPane4Chart tablePane = new GisMapTableDataContentPane4Chart();
public GisMapDataPane4Chart(AttributeChangeListener listener, ChartDataPane parent) {
super(listener, parent);
}
protected JPanel getDataContentPane() {
return tablePane;
}
@Override
public void populate(ChartCollection collection) {
tablePane = new GisMapTableDataContentPane4Chart();
if (collection != null && collection.getSelectedChart() != null) {
Chart chart = collection.getSelectedChart();
TopDefinitionProvider definition = chart.getFilterDefinition();
if (definition instanceof TableDataDefinition) {
TableData tableData = ((TableDataDefinition) definition).getTableData();
if (tableData != null) {
populateChoosePane(tableData);
fireTableDataChange();
}
}
if (definition instanceof GisMapTableDefinition) {
tablePane.populateBean((GisMapTableDefinition) definition);
}
}
this.remove(leftContentPane);
this.initContentPane();
this.validate();
dataSource.addItemListener(dsListener);
initAllListeners();
initSelfListener(tablePane);
this.addAttributeChangeListener(attributeChangeListener);
}
@Override
public void update(ChartCollection collection) {
collection.getSelectedChart().setFilterDefinition(tablePane.updateBean());
}
/**
* 数据集数据改变
*/
public void fireTableDataChange() {
tablePane.fireTableDataChange(choosePane.getTableDataWrapper());
}
}

341
designer_chart/src/com/fr/design/chart/report/GisMapTableDataContentPane4Chart.java

@ -1,341 +0,0 @@
package com.fr.design.chart.report;
import com.fr.base.Utils;
import com.fr.chart.base.ChartConstants;
import com.fr.chart.chartdata.GisMapTableDefinition;
import com.fr.chart.chartdata.SeriesDefinition;
import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.design.event.UIObserver;
import com.fr.design.event.UIObserverListener;
import com.fr.design.gui.frpane.UICorrelationPane;
import com.fr.design.gui.ibutton.UIButtonGroup;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itable.UITableEditor;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.general.Inter;
import com.fr.stable.ArrayUtils;
import com.fr.stable.StringUtils;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class GisMapTableDataContentPane4Chart extends FurtherBasicBeanPane<GisMapTableDefinition> implements UIObserver {
private ArrayList<ChangeListener> changeListeners = new ArrayList<ChangeListener>();
private String[] initNames = {""};
private UIButtonGroup<String> addressType;
private UIButtonGroup<String> lnglatOrder;
private UIComboBox addressBox;
private UIComboBox addressNameBox;
private UICorrelationPane titleValuePane;
private JPanel orderPane;
private TableDataWrapper tableDataWrapper;
public GisMapTableDataContentPane4Chart() {
this.setLayout(new BorderLayout());
addressType = new UIButtonGroup<String>(new String[]{Inter.getLocText("Chart-Gis_Address"), Inter.getLocText("Chart-Gis_LatLng")});
lnglatOrder = new UIButtonGroup<String>(new String[]{Inter.getLocText("Chart-Lng_First"), Inter.getLocText("Chart-Lat_First")});
addressBox = new UIComboBox();
addressNameBox = new UIComboBox();
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] columnSize = new double[]{p, f};
double[] rowSize = new double[]{p, p, p};
orderPane = new JPanel(new BorderLayout(LayoutConstants.VGAP_MEDIUM, 0)) {
@Override
public Dimension getPreferredSize() {
if (this.isVisible()) {
return super.getPreferredSize();
} else {
return new Dimension(0, 0);
}
}
};
orderPane.add(new UILabel(Inter.getLocText("Chart-LatLng_Order")), BorderLayout.WEST);
orderPane.add(lnglatOrder, BorderLayout.CENTER);
orderPane.setVisible(false);
lnglatOrder.setSelectedIndex(0);
addressType.setSelectedIndex(0);
addressNameBox.removeAllItems();
addressNameBox.addItem(Inter.getLocText("Chart-Use_None"));
Component[][] components = new Component[][]{
new Component[]{addressType, addressBox},
new Component[]{orderPane, null},
new Component[]{new UILabel(Inter.getLocText("Chart-Address_Name") + ":", SwingConstants.RIGHT), addressNameBox},
};
JPanel centerPane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
JPanel pane = new JPanel();
this.add(pane, BorderLayout.CENTER);
pane.setLayout(new BorderLayout());
pane.add(centerPane, BorderLayout.NORTH);
String[] titles = {Inter.getLocText("Chart-Area_Title"), Inter.getLocText("Chart-Area_Value")};
titleValuePane = new UICorrelationPane(titles) {
public UITableEditor createUITableEditor() {
return new InnerTableEditor();
}
};
pane.add(titleValuePane, BorderLayout.CENTER);
}
private void refresh2ComboBox() {// 刷新地址 地址名 名称列表
TableDataWrapper tableDataWrappe =tableDataWrapper;
if (tableDataWrappe == null) {
return;
}
java.util.List<String> columnNameList = tableDataWrappe.calculateColumnNameList();
initNames = columnNameList.toArray(new String[columnNameList.size()]);
addressBox.removeAllItems();
addressNameBox.removeAllItems();
addressNameBox.addItem(Inter.getLocText("Chart-Use_None"));
for (int i = 0, size = initNames.length; i < size; i++) {
addressBox.addItem(initNames[i]);
addressNameBox.addItem(initNames[i]);
}
if(initNames.length > 0){
addressBox.setSelectedIndex(0);
}
addressNameBox.setSelectedIndex(0);
stopEditing();
}
/**
* 界面接入
*
* @param ob 对象
* @return true表示接受
*/
public boolean accept(Object ob) {
return false;
}
/**
* 界面重置
*/
public void reset() {
}
/**
* 界面弹出标题
*
* @return 标题
*/
public String title4PopupWindow() {
return Inter.getLocText("Chart-DS_TableData");
}
private void stopEditing() {
}
@Override
public void populateBean(GisMapTableDefinition ob) {
stopEditing();
if (ob instanceof GisMapTableDefinition) {
GisMapTableDefinition mapDefinition = (GisMapTableDefinition) ob;
if (ob.isAddress()) {
addressType.setSelectedIndex(0);
orderPane.setVisible(false);
} else {
addressType.setSelectedIndex(1);
orderPane.setVisible(true);
}
if (ob.isLngFirst()) {
lnglatOrder.setSelectedIndex(0);
} else {
lnglatOrder.setSelectedIndex(1);
}
addressBox.setSelectedItem(mapDefinition.getAddress());
if (StringUtils.isEmpty(mapDefinition.getAddressName())) {
addressNameBox.setSelectedItem(Inter.getLocText("Chart-Use_None"));
} else {
addressNameBox.setSelectedItem(mapDefinition.getAddressName());
}
java.util.List paneList = new ArrayList();
int titleValueSize = mapDefinition.getTittleValueSize();
for (int i = 0; i < titleValueSize; i++) {
SeriesDefinition definition = mapDefinition.getTittleValueWithIndex(i);
if (definition != null && definition.getSeriesName() != null && definition.getValue() != null) {
paneList.add(new Object[]{definition.getSeriesName(), definition.getValue()});
}
}
if (!paneList.isEmpty()) {
titleValuePane.populateBean(paneList);
}
}
}
@Override
public GisMapTableDefinition updateBean() {// 从一行内容中update
stopEditing();
GisMapTableDefinition definition = new GisMapTableDefinition();
TableDataWrapper tableDataWrappe = tableDataWrapper;
if (tableDataWrappe == null || addressBox.getSelectedItem() == null) {
return null;
}
definition.setTableData(tableDataWrapper.getTableData());
definition.setAddress(Utils.objectToString(addressBox.getSelectedItem()));
if (this.addressType.getSelectedIndex() == 0) {
definition.setAddressType(true);
lnglatOrder.setVisible(false);
} else {
definition.setAddressType(false);
lnglatOrder.setVisible(true);
}
if (this.lnglatOrder.getSelectedIndex() == 0) {
definition.setLnglatOrder(true);
} else {
definition.setLnglatOrder(false);
}
if (addressNameBox.getSelectedItem() != null) {
String adName = Utils.objectToString(addressNameBox.getSelectedItem());
if (ArrayUtils.contains(ChartConstants.getNoneKeys(), adName)) {
definition.setAddressName(StringUtils.EMPTY);
} else {
definition.setAddressName(adName);
}
}
java.util.List paneList = titleValuePane.updateBean();
for (int i = 0, size = paneList.size(); i < size; i++) {
Object[] values = (Object[]) paneList.get(i);
if (values.length == 2) {
SeriesDefinition seriesDefinition = new SeriesDefinition();
seriesDefinition.setSeriesName(values[0]);
seriesDefinition.setValue(values[1]);
definition.addTittleValue(seriesDefinition);
}
}
return definition;
}
/**
* 给组件登记一个观察者监听事件
*
* @param listener 观察者监听事件
*/
public void registerChangeListener(final UIObserverListener listener) {
changeListeners.add(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
listener.doChange();
}
});
}
/**
* 组件是否需要响应添加的观察者事件
*
* @return 如果需要响应观察者事件则返回true否则返回false
*/
public boolean shouldResponseChangeListener() {
return true;
}
private class InnerTableEditor extends UITableEditor {
private JComponent editorComponent;
/**
* 返回当前编辑器的值
*/
public Object getCellEditorValue() {
if (editorComponent instanceof UITextField) {
UITextField textField = (UITextField) editorComponent;
return textField.getText();
} else if (editorComponent instanceof UIComboBox) {
UIComboBox boxPane = (UIComboBox) editorComponent;
return boxPane.getSelectedItem();
}
return super.getCellEditorValue();
}
/**
* 返回当前编辑器..
*/
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
if (column == table.getModel().getColumnCount()) {
return null;
}
if (column == 0) {
UITextField text = new UITextField();
if (value != null) {
text.setText(Utils.objectToString(value));
}
text.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
titleValuePane.stopCellEditing();
titleValuePane.fireTargetChanged();
}
});
this.editorComponent = text;
} else {
UIComboBox box = new UIComboBox(initNames);
box.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
titleValuePane.fireTargetChanged();
titleValuePane.stopCellEditing();
}
});
if (value != null && StringUtils.isNotEmpty(value.toString())) {
box.setSelectedItem(value);
} else {
box.setSelectedItem(value);
}
this.editorComponent = box;
}
return this.editorComponent;
}
}
/**
* 出发数据集改变
* @param wrapper 数据集
*/
public void fireTableDataChange(TableDataWrapper wrapper){
this.tableDataWrapper = wrapper;
refresh2ComboBox();
}
}

68
designer_chart/src/com/fr/design/chart/report/MapCubeDataPane4Chart.java

@ -1,68 +0,0 @@
package com.fr.design.chart.report;
import com.fr.base.chart.chartdata.TopDefinitionProvider;
import com.fr.chart.chartdata.MapMoreLayerTableDefinition;
import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.design.gui.frpane.UIComboBoxPane;
import com.fr.general.Inter;
import java.awt.*;
import java.util.*;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class MapCubeDataPane4Chart extends UIComboBoxPane<TopDefinitionProvider> {
private MapTableCubeDataPane4Chart tablePane;
protected void initLayout() {
this.setLayout(new BorderLayout(0, 0));
this.add(cardPane, BorderLayout.CENTER);
}
@Override
protected List<FurtherBasicBeanPane<? extends TopDefinitionProvider>> initPaneList() {
List list = new ArrayList();
list.add(tablePane = new MapTableCubeDataPane4Chart());
return list;
}
@Override
protected String title4PopupWindow() {
return Inter.getLocText("FR-Chart-Map_LayerData");
}
/**
* 对数据集或者单元格数据加载界面
*/
public void populateBean(TopDefinitionProvider definition) {
if(definition instanceof MapMoreLayerTableDefinition) {
MapMoreLayerTableDefinition tableDefinition = (MapMoreLayerTableDefinition)definition;
this.setSelectedIndex(0);
tablePane.populateBean(tableDefinition);
}
}
/**
* 根据界面 下载保存数据
*/
public TopDefinitionProvider update() {
return tablePane.updateBean();
}
/**
* 出发数据集改变
* @param tableDataWrapper 数据集
*/
public void fireTableDataChanged(TableDataWrapper tableDataWrapper) {
tablePane.setTableDataWrapper(tableDataWrapper);
tablePane.refreshAreaNameBox();
}
}

133
designer_chart/src/com/fr/design/chart/report/MapDataPane4Chart.java

@ -1,133 +0,0 @@
package com.fr.design.chart.report;
import com.fr.base.TableData;
import com.fr.base.chart.chartdata.TopDefinitionProvider;
import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.chartdata.*;
import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.gui.frpane.UIComboBoxPane;
import com.fr.design.gui.ilable.BoldFontTextLabel;
import com.fr.design.mainframe.AbstractChartDataPane4Chart;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.general.Inter;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* Date: 14/12/3
* Time: 下午6:49
*/
public class MapDataPane4Chart extends AbstractChartDataPane4Chart {
private UIComboBoxPane dataContentPane;
private MapMoreCubeLayerPane4Chart morePane = new MapMoreCubeLayerPane4Chart();
private MapSinglePane4Chart singlePane = new MapSinglePane4Chart();
private ChartCollection currentCollection;
private ItemListener itemListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
fireTableDataChange();
}
};
public MapDataPane4Chart(AttributeChangeListener listener, ChartDataPane parent) {
super(listener, parent);
dataContentPane = new UIComboBoxPane<Chart>() {
protected void initLayout() {
this.setLayout(new BorderLayout(0, 6));
JPanel northPane = new JPanel(new FlowLayout(FlowLayout.LEFT));
northPane.add(new BoldFontTextLabel(Inter.getLocText("FR-Chart-Map_ShowWay") + ":"));
northPane.add(jcb);
this.add(northPane, BorderLayout.NORTH);
this.add(cardPane, BorderLayout.CENTER);
}
protected java.util.List<FurtherBasicBeanPane<? extends Chart>> initPaneList() {
java.util.List list = new ArrayList();
list.add(singlePane);
list.add(morePane);
return list;
}
protected void comboBoxItemStateChanged() {
if(currentCollection == null){
return;
}
fireTableDataChange();
morePane.init4PopuMapTree(currentCollection);
}
protected String title4PopupWindow() {
return Inter.getLocText(new String[]{"Chart-Map", "Data"});
}
};
}
protected JPanel getDataContentPane(){
return dataContentPane;
}
@Override
public void populate(ChartCollection collection) {
currentCollection = collection;
morePane.init4PopuMapTree(collection);
if (collection != null && collection.getSelectedChart() != null) {
Chart chart = collection.getSelectedChart();
TopDefinitionProvider definition = chart.getFilterDefinition();
if (definition instanceof TableDataDefinition) {
TableData tableData = ((TableDataDefinition) definition).getTableData();
if(tableData != null){
populateChoosePane(tableData);
fireTableDataChange();
}
}
if(definition instanceof MapSingleLayerTableDefinition) {
singlePane.populateBean(definition);
} else if(definition instanceof MapMoreLayerTableDefinition) {
morePane.populateBean(collection);
}
}
this.remove(leftContentPane);
this.initContentPane();
this.validate();
dataSource.addItemListener(dsListener);
initAllListeners();
initSelfListener(dataContentPane);
this.addAttributeChangeListener(attributeChangeListener);
}
@Override
public void update(ChartCollection collection) {
if(dataContentPane.getSelectedIndex() == 0) {
collection.getSelectedChart().setFilterDefinition(singlePane.updateBean());
} else {
morePane.updateBean(collection);
}
currentCollection = collection;
}
/**
* 数据集数据改变
*/
public void fireTableDataChange() {
if (dataContentPane == null) {
return;
}
if(dataContentPane.getSelectedIndex() == 0) {
singlePane.fireTableDataChanged(choosePane.getTableDataWrapper());
} else {
morePane.fireTableDataChanged(choosePane.getTableDataWrapper());
}
}
}

113
designer_chart/src/com/fr/design/chart/report/MapMoreCubeLayerPane4Chart.java

@ -1,113 +0,0 @@
package com.fr.design.chart.report;
import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.chartattr.MapPlot;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.design.dialog.BasicPane;
import com.fr.design.dialog.MultiTabPane;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class MapMoreCubeLayerPane4Chart extends MultiTabPane<ChartCollection> {
private static final long serialVersionUID = -174286187746442527L;
private MapCubeLayerPane layerPane;
private MapCubeDataPane4Chart dataPane;
@Override
protected List<BasicPane> initPaneList() {
List<BasicPane> paneList = new ArrayList<BasicPane>();
paneList.add(layerPane = new MapCubeLayerPane());
paneList.add(dataPane = new MapCubeDataPane4Chart());
return paneList;
}
public ChartCollection updateBean() {
return null;// do nothing
}
public void populateBean(ChartCollection collection) {
Chart selectChart = collection.getSelectedChart();
if(selectChart != null && selectChart.getPlot() instanceof MapPlot) {
MapPlot map = (MapPlot)selectChart.getPlot();
layerPane.populateBean(map.getMapName());
}
// 确认层级关系
dataPane.populateBean(collection.getSelectedChart().getFilterDefinition());
}
public void updateBean(ChartCollection collection) {
collection.getSelectedChart().setFilterDefinition(dataPane.update());
Chart selectChart = collection.getSelectedChart();
if(selectChart != null && selectChart.getPlot() instanceof MapPlot) {
MapPlot map = (MapPlot)selectChart.getPlot();
layerPane.updateBean(map.getMapName());// 确定更新地图名称所对应的层级关系
}
}
/**
* 刷新层级树 数据中populate 数据的层数
* @param collection 图表收集器.
*/
public void init4PopuMapTree(ChartCollection collection) {
Chart selectChart = collection.getSelectedChart();
if(selectChart != null && selectChart.getPlot() instanceof MapPlot) {
MapPlot map = (MapPlot)selectChart.getPlot();
if(layerPane != null) {
layerPane.initRootTree(map.getMapName());
}
}
}
/**
* 判断是否合格
* @param ob 参数判断
* @return 默认合格.
*/
public boolean accept(Object ob) {
return true;
}
/**
* 界面标题
* @return 返回标题
*/
public String title4PopupWindow() {
return Inter.getLocText("FR-Chart-Map_Multilayer");
}
/**
* 重置
*/
public void reset() {
}
/**
* 设置是否支持单元格数据.
*/
public void setSurpportCellData(boolean surpportCellData) {
dataPane.justSupportOneSelect(surpportCellData);
}
/**
* 出发数据集改变
* @param tableDataWrapper 数据集
*/
public void fireTableDataChanged(TableDataWrapper tableDataWrapper) {
dataPane.fireTableDataChanged(tableDataWrapper);
}
}

79
designer_chart/src/com/fr/design/chart/report/MapSinglePane4Chart.java

@ -1,79 +0,0 @@
package com.fr.design.chart.report;
import com.fr.base.chart.chartdata.TopDefinitionProvider;
import com.fr.chart.chartdata.MapSingleLayerTableDefinition;
import com.fr.chart.chartdata.TopDefinition;
import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.general.Inter;
import java.awt.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class MapSinglePane4Chart extends FurtherBasicBeanPane<TopDefinitionProvider> {
private MapTableDataSinglePane4Chart tableSinglePane;
public MapSinglePane4Chart() {
initCom();
}
private void initCom() {
this.setLayout(new BorderLayout());
this.add(tableSinglePane = new MapTableDataSinglePane4Chart(), BorderLayout.CENTER);
}
/**
* 判断准许的情况
* @param ob 数据集
* @return 是不是顶层数据
*/
public boolean accept(Object ob) {
return ob instanceof TopDefinition;
}
/**
* 重置
*/
public void reset() {
}
/**
*界面标题
* @return 界面标题
*/
public String title4PopupWindow() {
return Inter.getLocText(new String[]{"SingleLayer", "Chart-Map"});
}
/**
* 加载单层地图时的 数据来源界面
*/
public void populateBean(TopDefinitionProvider ob) {
if(ob instanceof MapSingleLayerTableDefinition) {
tableSinglePane.populateBean((MapSingleLayerTableDefinition)ob);
}
}
/**
* 保存下载 单层数据界面
*/
public TopDefinitionProvider updateBean() {
return tableSinglePane.updateBean();
}
/**
* 出发数据集改变
* @param tableDataWrapper 数据集
*/
public void fireTableDataChanged(TableDataWrapper tableDataWrapper) {
tableSinglePane.setTableDataWrapper(tableDataWrapper);
tableSinglePane.refreshAreaNameBox();
}
}

93
designer_chart/src/com/fr/design/chart/report/MapTableCubeDataPane4Chart.java

@ -1,93 +0,0 @@
package com.fr.design.chart.report;
import com.fr.chart.chartdata.MapMoreLayerTableDefinition;
import com.fr.chart.chartdata.MapSingleLayerTableDefinition;
import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.general.Inter;
import java.awt.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class MapTableCubeDataPane4Chart extends FurtherBasicBeanPane<MapMoreLayerTableDefinition> {
private MapMoreTableIndexPane tablePane;
private TableDataWrapper tableDataWrapper;
public MapTableCubeDataPane4Chart() {
this.setLayout(new BorderLayout());
tablePane = new MapMoreTableIndexPane();
this.add(tablePane, BorderLayout.CENTER);
}
/**
* 刷新区域名称列表
*/
public void refreshAreaNameBox() {
TableDataWrapper tableDataWrappe = tableDataWrapper;
if (tableDataWrappe == null) {
return;
}
java.util.List<String> columnNameList = tableDataWrappe.calculateColumnNameList();
tablePane.initAreaComBox(columnNameList.toArray(new String[columnNameList.size()]));
}
public void setTableDataWrapper(TableDataWrapper wrapper){
this.tableDataWrapper = wrapper;
}
/**
* 界面接入
* @param ob 界面
* @return 返回接入.
*/
public boolean accept(Object ob) {
return true;
}
/**
* 重置
*/
public void reset() {
}
/**
* 界面弹出标题
* @return 返回标题.
*/
public String title4PopupWindow() {
return Inter.getLocText("FR-Chart-Table_Data");
}
@Override
public void populateBean(MapMoreLayerTableDefinition tableDefinition) {
if (tableDefinition != null) {
MapSingleLayerTableDefinition[] values = tableDefinition.getNameValues();
if(values != null && values.length > 0) {
tablePane.populateBean(values[0]);
}
}
}
@Override
public MapMoreLayerTableDefinition updateBean() {
MapMoreLayerTableDefinition tableDefinition = new MapMoreLayerTableDefinition();
TableDataWrapper tableDataWrappe =tableDataWrapper;
if (tableDataWrappe != null) {
tableDefinition.setTableData(tableDataWrappe.getTableData());
tableDefinition.clearNameValues();
tableDefinition.addNameValue(tablePane.updateBean());
}
return tableDefinition;
}
}

268
designer_chart/src/com/fr/design/chart/report/MapTableDataSinglePane4Chart.java

@ -1,268 +0,0 @@
package com.fr.design.chart.report;
import com.fr.base.Utils;
import com.fr.chart.chartdata.MapSingleLayerTableDefinition;
import com.fr.chart.chartdata.SeriesDefinition;
import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.design.event.UIObserver;
import com.fr.design.event.UIObserverListener;
import com.fr.design.gui.frpane.UICorrelationPane;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.ilable.BoldFontTextLabel;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itable.UITableEditor;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.general.Inter;
import com.fr.stable.StringUtils;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class MapTableDataSinglePane4Chart extends FurtherBasicBeanPane<MapSingleLayerTableDefinition> implements UIObserver {
private static final int LABEL_WIDTH_GAP = 5;
private static final int COM_HEIGHT = 20;
private ArrayList<ChangeListener> changeListeners = new ArrayList<ChangeListener>();
private String[] initNames = {""};
private UIComboBox areaNameBox;
private UICorrelationPane titleValuePane;
private TableDataWrapper tableDataWrapper;
public MapTableDataSinglePane4Chart() {
this.setLayout(new BorderLayout());
JPanel pane = new JPanel();
this.add(pane, BorderLayout.CENTER);
pane.setLayout(new BorderLayout());
pane.add(getAreaNamePane(), BorderLayout.NORTH);
String[] titles = {Inter.getLocText("FR-Chart-Area_Title"), Inter.getLocText("FR-Chart-Area_Value")};
titleValuePane = new UICorrelationPane(titles){
public UITableEditor createUITableEditor() {
return new InnerTableEditor();
}
};
pane.add(titleValuePane, BorderLayout.CENTER);
}
private JPanel getAreaNamePane(){
final UILabel label = new BoldFontTextLabel(Inter.getLocText("FR-Chart-Map_ShowWay") + ":");
UILabel nameLabel = new UILabel(Inter.getLocText("FR-Chart-Area_Name") + ":", SwingConstants.RIGHT){
public Dimension getPreferredSize() {
return new Dimension(label.getPreferredSize().width+LABEL_WIDTH_GAP,COM_HEIGHT);
}
};
areaNameBox = new UIComboBox();
areaNameBox.setPreferredSize(new Dimension(80, 20));
double p =TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] columnSize = {p, f};
double[] rowSize = {p};
Component[][] components = new Component[][]{
new Component[]{nameLabel, areaNameBox},
};
return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
}
/**
*刷新区域名称列表
*/
public void refreshAreaNameBox() {// 刷新区域名称列表
TableDataWrapper tableDataWrappe = tableDataWrapper;
if (tableDataWrappe == null) {
return;
}
java.util.List<String> columnNameList = tableDataWrappe.calculateColumnNameList();
initNames = columnNameList.toArray(new String[columnNameList.size()]);
Object oldSelected = areaNameBox.getSelectedItem();
areaNameBox.removeAllItems();
for(int i = 0, size = initNames.length; i < size; i++) {
areaNameBox.addItem(initNames[i]);
}
areaNameBox.getModel().setSelectedItem(oldSelected);
stopEditing();
}
/**
* 是否接受数据集
* @param ob 具体变量
* @return 不是
*/
public boolean accept(Object ob) {
return false;
}
/**
* 界面重置
*/
public void reset() {
}
/**
* 界面弹出标题
* @return 标题
*/
public String title4PopupWindow() {
return Inter.getLocText("FR-Chart-Table_Data");
}
private void stopEditing() {
}
@Override
public void populateBean(MapSingleLayerTableDefinition ob) {
stopEditing();
if (ob instanceof MapSingleLayerTableDefinition) {
MapSingleLayerTableDefinition mapDefinition = (MapSingleLayerTableDefinition) ob;
// fromTableData.populateBean(((NameTableData) mapDefinition.getTableData()));
areaNameBox.setSelectedItem(mapDefinition.getAreaName());
java.util.List paneList = new ArrayList();
int titleValueSize = mapDefinition.getTitleValueSize();
for(int i = 0; i < titleValueSize; i++) {
SeriesDefinition definition = mapDefinition.getTitleValueWithIndex(i);
if(definition != null && definition.getSeriesName() != null && definition.getValue() != null) {
paneList.add(new Object[]{definition.getSeriesName(), definition.getValue()});
}
}
if(!paneList.isEmpty()) {
titleValuePane.populateBean(paneList);
}
}
}
@Override
public MapSingleLayerTableDefinition updateBean() {// 从一行内容中update
stopEditing();
MapSingleLayerTableDefinition definition = new MapSingleLayerTableDefinition();
TableDataWrapper tableDataWrappe = tableDataWrapper;
// = fromTableData.getTableDataWrapper();
if (tableDataWrappe == null || areaNameBox.getSelectedItem() == null) {
return null;
}
definition.setTableData(tableDataWrapper.getTableData());
definition.setAreaName(Utils.objectToString(areaNameBox.getSelectedItem()));
java.util.List paneList = titleValuePane.updateBean();
for(int i = 0, size = paneList.size(); i < size; i++) {
Object[] values = (Object[])paneList.get(i);
if(values.length == 2) {
SeriesDefinition seriesDefinition = new SeriesDefinition();
seriesDefinition.setSeriesName(values[0]);
seriesDefinition.setValue(values[1]);
definition.addTitleValue(seriesDefinition);
}
}
return definition;
}
/**
* 给组件登记一个观察者监听事件
*
* @param listener 观察者监听事件
*/
public void registerChangeListener(final UIObserverListener listener) {
changeListeners.add(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
listener.doChange();
}
});
}
/**
* 组件是否需要响应添加的观察者事件
*
* @return 如果需要响应观察者事件则返回true否则返回false
*/
public boolean shouldResponseChangeListener() {
return true;
}
private class InnerTableEditor extends UITableEditor {
private JComponent editorComponent;
/**
* 返回当前编辑器的值
*/
public Object getCellEditorValue() {
if(editorComponent instanceof UITextField) {
UITextField textField = (UITextField)editorComponent;
return textField.getText();
} else if(editorComponent instanceof UIComboBox) {
UIComboBox boxPane = (UIComboBox)editorComponent;
return boxPane.getSelectedItem();
}
return super.getCellEditorValue();
}
/**
* 返回当前编辑器..
*/
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
if (column == table.getModel().getColumnCount()) {
return null;
}
if(column == 0 ) {
UITextField text = new UITextField();
if(value != null) {
text.setText(Utils.objectToString(value));
}
text.registerChangeListener(new UIObserverListener() {
@Override
public void doChange() {
titleValuePane.fireTargetChanged();
}
});
this.editorComponent = text;
} else {
UIComboBox box = new UIComboBox(initNames);
box.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
titleValuePane.fireTargetChanged();
titleValuePane.stopCellEditing();
}
});
if (value != null && StringUtils.isNotEmpty(value.toString())) {
box.setSelectedItem(value);
} else {
box.setSelectedItem(value);
}
this.editorComponent = box;
}
return this.editorComponent;
}
}
public void setTableDataWrapper(TableDataWrapper wrapper){
this.tableDataWrapper = wrapper;
}
}

244
designer_chart/src/com/fr/design/mainframe/AbstractChartDataPane4Chart.java

@ -1,244 +0,0 @@
package com.fr.design.mainframe;
import com.fr.base.TableData;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.chartdata.JSONTableData;
import com.fr.data.impl.EmbeddedTableData;
import com.fr.data.impl.ExcelTableData;
import com.fr.design.event.UIObserver;
import com.fr.design.event.UIObserverListener;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.design.mainframe.chart.gui.data.*;
import com.fr.general.Inter;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* Date: 14/12/3
* Time: 下午6:53
*/
public class AbstractChartDataPane4Chart extends DataContentsPane implements UIObserver {
private static final int DATA_SOURCE_GAP = 18;
private static final int WIDTH = 262;
protected ChartDataPane parentPane;
protected ChartDesignDataLoadPane choosePane;
protected JComponent choose = new UILabel();
protected UIObserverListener observerListener;
protected UIComboBox dataSource = new UIComboBox(
new String[]{"JSON" + Inter.getLocText("Chart-DS_TableData"), Inter.getLocText("Chart-Use_Local") + "EXCEL", Inter.getLocText("Chart-DS_Embedded_TableData")});
protected ItemListener dsListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
int index = dataSource.getSelectedIndex();
if (index == 0) {
initJSON();
} else if (index == 1) {
initExcel();
} else {
initEmbbed();
}
remove(leftContentPane);
clearTableDataSetting();
initContentPane();
AbstractChartDataPane4Chart.this.validate();
}
};
protected AttributeChangeListener attributeChangeListener;
public AbstractChartDataPane4Chart(final AttributeChangeListener listener, ChartDataPane parent) {
this.parentPane = parent;
this.attributeChangeListener = listener;
initJSON();
initAll();
}
protected void populateChoosePane(TableData tableData) {
dataSource.removeItemListener(dsListener);
if (tableData instanceof JSONTableData) {
initJSON();
dataSource.setSelectedIndex(0);
} else if (tableData instanceof ExcelTableData) {
initExcel();
dataSource.setSelectedIndex(1);
} else if (tableData instanceof EmbeddedTableData) {
initEmbbed();
dataSource.setSelectedIndex(2);
}
choosePane.populateChartTableData(tableData);
dataSource.addItemListener(dsListener);
}
protected void initJSON() {
choosePane = new JSONDataPane(this);
UILabel url = new UILabel("URL:");
url.setHorizontalAlignment(SwingConstants.RIGHT);
choose = url;
}
protected void initExcel() {
choose = new UIButton(Inter.getLocText("Chart-Select_Path"));
choosePane = new ExcelDataPane(this, choose);
}
protected void initEmbbed() {
choosePane = new EmbbeddDataPane(this);
choose = null;
}
@Override
public void setSupportCellData(boolean supportCellData) {
}
@Override
protected JPanel createContentPane() {
double p = TableLayout.PREFERRED;
double[] columnSize = {WIDTH};
double[] rowSize = {p, p};
Component[][] components = new Component[][]{
new Component[]{new UILabel(Inter.getLocText("Chart-Data_Import"))},
new Component[]{createDataImportPane()}
};
return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
}
private JPanel createDataImportPane() {
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] columnSize = {f};
double[] rowSize = {p, p, p};
Component[][] components = new Component[][]{
new Component[]{createDataSourcePane()},
new Component[]{new JSeparator()},
new Component[]{createDataSetPane()}
};
return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
}
/**
* 数据配置面板
*
* @return
*/
protected JPanel createDataSetPane() {
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] columnSize = {f};
double[] rowSize = {p, p};
Component[][] components = new Component[][]{
new Component[]{new UILabel(Inter.getLocText("Chart-Data_Configuration"))},
new Component[]{getDataContentPane()}
};
return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
}
protected JPanel getDataContentPane() {
return new JPanel();
}
private JPanel createDataSourcePane() {
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] columnSize = {DATA_SOURCE_GAP, f};
double[] rowSize = {p,};
Component[][] components = new Component[][]{
new Component[]{null, createChooseBoxPane()},
};
return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
}
private JPanel createChooseBoxPane() {
UILabel dataSourceLabel = new UILabel(Inter.getLocText("Chart-Data_Resource") + ":");
dataSourceLabel.setHorizontalAlignment(SwingConstants.RIGHT);
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] columnSize = {p, f};
double[] rowSize = {p, p};
Component[][] components = new Component[][]{
new Component[]{dataSourceLabel, dataSource},
new Component[]{choose, choosePane}
};
return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
}
/**
* 注册观察者监听事件
*
* @param listener 观察者监听事件
*/
public void registerChangeListener(UIObserverListener listener) {
this.observerListener = listener;
}
/**
* 使用应该响应listener
*
* @return 应该响应
*/
public boolean shouldResponseChangeListener() {
return true;
}
protected void initSelfListener(Container parentComponent) {
for (int i = 0; i < parentComponent.getComponentCount(); i++) {
Component tmpComp = parentComponent.getComponent(i);
if (tmpComp instanceof Container) {
initListener((Container) tmpComp);
}
if (tmpComp instanceof UIObserver) {
((UIObserver) tmpComp).registerChangeListener(observerListener);
}
}
}
@Override
public void populate(ChartCollection collection) {
}
@Override
public void update(ChartCollection collection) {
}
/**
* 清空数据集的设置
*/
public void clearTableDataSetting() {
}
/**
* 数据集数据改变
*/
public void fireTableDataChange() {
}
}

111
designer_chart/src/com/fr/design/mainframe/AbstractMapPlotPane4ToolBar.java

@ -1,111 +0,0 @@
package com.fr.design.mainframe;
import com.fr.chart.base.ChartConstants;
import com.fr.chart.base.MapSvgXMLHelper;
import com.fr.chart.chartattr.*;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.mainframe.chart.ChartDesignEditPane;
import com.fr.general.ComparatorUtils;
import com.fr.stable.Constants;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* Date: 14/12/1
* Time: 下午3:15
*/
public abstract class AbstractMapPlotPane4ToolBar extends JPanel{
protected static final int COM_HEIGHT = 22;
protected static final int COM_GAP = 14;
protected static final int COMBOX_WIDTH = 230;
protected ChartDesigner chartDesigner;
protected UIComboBox mapTypeComboBox;
protected ItemListener mapTypeListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
calculateDetailMaps(mapTypeComboBox.getSelectedIndex());
}
};
public AbstractMapPlotPane4ToolBar(ChartDesigner designer){
this.chartDesigner = designer;
this.setLayout(new FlowLayout(FlowLayout.LEFT, COM_GAP, 0));
this.setBorder(new EmptyBorder(2, 0, 2, 0));
mapTypeComboBox = new UIComboBox(getMapTypes()) {
public Dimension getPreferredSize() {
return new Dimension(COMBOX_WIDTH, COM_HEIGHT);
}
};
mapTypeComboBox.addItemListener(mapTypeListener);
this.add(mapTypeComboBox);
}
protected abstract void calculateDetailMaps(int mapType);
/**
* 更新地图面板
* @param mapType 地图名字
*/
public void populateMapPane(String mapType){
mapTypeComboBox.removeItemListener(mapTypeListener);
for (String type : getMapTypes()) {
java.util.List list = MapSvgXMLHelper.getInstance().getNamesListWithCateName(type);
for (Object name : list) {
if(ComparatorUtils.equals(name,mapType)){
mapTypeComboBox.setSelectedItem(type);
break;
}
}
}
mapTypeComboBox.addItemListener(mapTypeListener);
}
public abstract String[] getMapTypes();
/**
* 切换图表类型
*/
public void fireChange(){
ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection();
Chart chart =chartCollection.getSelectedChart();
if(chart.getPlot().getPlotStyle() != ChartConstants.STYLE_NONE){
resetChart(chart);
}
chart.switchPlot(getSelectedClonedPlot());
if(chart.getPlot().getPlotStyle() != ChartConstants.STYLE_NONE){
resetChart(chart);
}
chartDesigner.fireTargetModified();
ChartDesignEditPane.getInstance().populateSelectedTabPane();
}
protected void resetChart(Chart chart){
chart.setTitle(new Title(chart.getTitle().getTextObject()));
chart.setBorderStyle(Constants.LINE_NONE);
chart.setBorderColor(new Color(150, 150, 150));
chart.setBackground(null);
}
protected abstract Plot getSelectedClonedPlot();
/**
* 触发更新
*/
public void fireTargetModified() {
chartDesigner.fireTargetModified();
}
}

521
designer_chart/src/com/fr/design/mainframe/ChartArea.java

@ -1,521 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itextfield.UINumberField;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.scrollruler.*;
import com.fr.general.FRScreen;
import com.fr.general.Inter;
import javax.swing.*;
import javax.swing.border.LineBorder;
import java.awt.*;
import java.awt.event.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-13
* Time: 下午5:08
*/
public class ChartArea extends JComponent implements ScrollRulerComponent {
private static final int TOPGAP = 8;
private static final int MIN_WIDTH = 36;
private static final int MIN_HEIGHT = 21;
private static final double SLIDER_FLOAT = 120.0;
private static final double SLIDER_MIN = 60.0;
private static final double DEFAULT_SLIDER = 100.0;
private static final int ROTATIONS = 50;
private int designerwidth = 810;
private int designerheight = 500;
private int customWidth = 810;
private int customHeight = 500;
private ChartDesigner designer;
private int horizontalValue = 0;
private int verticalValue = 0;
private int verticalMax = 0;
private int horicalMax = 0;
private FormScrollBar verScrollBar;
private FormScrollBar horScrollBar;
//显示和设置图表界面大小的控件
private UINumberField widthPane;
private UINumberField heightPane;
private boolean isValid = true;
private double START_VALUE = DEFAULT_SLIDER;
public ChartArea(ChartDesigner designer) {
this(designer, true);
}
public ChartArea(ChartDesigner designer, boolean useScrollBar) {
this.designer = designer;
this.designer.setParent(this);
this.customWidth = designer.getTarget().getWidth();
this.customHeight = designer.getTarget().getHeight();
this.designerwidth = this.customWidth;
this.designerheight = this.customHeight;
isValid = useScrollBar;
verScrollBar = new FormScrollBar(Adjustable.VERTICAL, this);
horScrollBar = new FormScrollBar(Adjustable.HORIZONTAL, this);
if (useScrollBar) {
this.setLayout(new FormRulerLayout());
designer.setBorder(new LineBorder(new Color(198, 198, 198)));
this.add(FormRulerLayout.CENTER, designer);
addFormSize();
this.add(FormRulerLayout.VERTICAL, verScrollBar);
this.add(FormRulerLayout.HIRIZONTAL, horScrollBar);
enableEvents(AWTEvent.MOUSE_WHEEL_EVENT_MASK);
} else {
// 报表参数界面只要标尺和中心pane
this.setLayout(new RulerLayout());
this.add(RulerLayout.CENTER, designer);
addFormRuler();
}
this.setFocusTraversalKeysEnabled(false);
}
/**
* 增加表单的页面大小控制界面包括手动修改和滑块拖动
*/
private void addFormSize() {
double f = TableLayout.FILL;
double p = TableLayout.PREFERRED;
double[] rowSize = {f};
double[] columnSize = {p, f, p, p, p, p, p,f,p};
UILabel tipsPane = new UILabel("chart");
tipsPane.setPreferredSize(new Dimension(200, 0));
widthPane = new UINumberField();
widthPane.setPreferredSize(new Dimension(60, 0));
heightPane = new UINumberField();
heightPane.setPreferredSize(new Dimension(60, 0));
JPanel panel = new JPanel(){
public Dimension getPreferredSize(){
return new Dimension(200,0);
}
};
JPanel resizePane = TableLayoutHelper.createCommonTableLayoutPane(new JComponent[][]{
{tipsPane, new UILabel(), widthPane, new UILabel(Inter.getLocText("Indent-Pixel")), new UILabel("x"),
heightPane, new UILabel(Inter.getLocText("Indent-Pixel")),new UILabel(),panel}},
rowSize, columnSize, 8
);
this.add(FormRulerLayout.BOTTOM, resizePane);
setWidgetsConfig();
// 先初始话滑块及对应事件,然后获取分辨率调整容器的显示大小
initCalculateSize();
}
private void setWidgetsConfig() {
widthPane.setHorizontalAlignment(widthPane.CENTER);
heightPane.setHorizontalAlignment(heightPane.CENTER);
widthPane.setMaxDecimalLength(0);
heightPane.setMaxDecimalLength(0);
//控件初始值就是根节点组件初始的宽和高
widthPane.setValue(designerwidth);
heightPane.setValue(designerheight);
addWidthPaneListener();
addHeightPaneListener();
}
private void initCalculateSize() {
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension scrnsize = toolkit.getScreenSize();
double value = FRScreen.getByDimension(scrnsize).getValue();
if (value != DEFAULT_SLIDER) {
reCalculateRoot(value, true);
}
}
//设置宽度的控件及响应事件
private void addWidthPaneListener() {
widthPane.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent evt) {
reCalculateWidth((int) ((UINumberField) evt.getSource()).getValue());
}
}
);
widthPane.addFocusListener(
new FocusAdapter() {
public void focusLost(FocusEvent e) {
// 失去焦点时,可以认为输入结束
reCalculateWidth((int) ((UINumberField) e.getSource()).getValue());
}
}
);
}
private void addHeightPaneListener() {
heightPane.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent evt) {
reCalculateHeight((int) ((UINumberField) evt.getSource()).getValue());
}
}
);
heightPane.addFocusListener(
new FocusAdapter() {
public void focusLost(FocusEvent e) {
// 失去焦点时,可以认为输入结束
reCalculateHeight((int) ((UINumberField) e.getSource()).getValue());
}
}
);
}
private void reCalculateWidth(int width) {
int dW = width - designerwidth;
if (dW == 0) {
return;
}
// 图表设计器先设大小为实际的高和当前的宽,然后按此调整内部的组件
designer.setSize(width, designerheight);
designerwidth = width;
customWidth = width;
designer.getTarget().setWidth(width);
ChartArea.this.validate();
designer.fireTargetModified();
}
private void reCalculateHeight(int height) {
int dW = height - designerwidth;
if (dW == 0) {
return;
}
// 图表设计器先设大小为实际的高和当前的宽,然后按此调整内部的组件
designer.setSize(designerwidth, height);
designerheight = height;
customHeight = height;
this.designer.getTarget().setHeight(height);
ChartArea.this.validate();
designer.fireTargetModified();
}
/**
* 按照界面大小的百分比值调整root大小
*
* @param needCalculateParaHeight 是否需要调整参数界面高度
* @param value
*/
private void reCalculateRoot(double value, boolean needCalculateParaHeight) {
if (value == START_VALUE) {
return;
}
double percent = (value - START_VALUE) / START_VALUE;
Dimension d = new Dimension(designerwidth, designerheight);
// 调整自适应布局大小后,同步调整参数界面和border大小,此时刷新下formArea
ChartArea.this.validate();
START_VALUE = value;
}
/**
* 增加刻度条
*/
public void addFormRuler() {
BaseRuler vRuler = new VerticalRuler(this);
BaseRuler hRuler = new HorizontalRuler(this);
this.add(RulerLayout.VRULER, vRuler);
this.add(RulerLayout.HRULER, hRuler);
}
/**
* 鼠标滚轮事件
* 由于表单设计界面要求 容器大小大于界面时滚动条才可以拖动所以不支持滚动无限往下滚
*/
@Override
protected void processMouseWheelEvent(java.awt.event.MouseWheelEvent evt) {
int id = evt.getID();
switch (id) {
case MouseEvent.MOUSE_WHEEL: {
int rotations = evt.getWheelRotation();
int value = this.verScrollBar.getValue() + rotations * ROTATIONS;
value = Math.min(value, verticalMax);
value = Math.max(0, value);
doLayout(); //加dolayout是因为每次滚动都要重置 Max的大小
this.verScrollBar.setValue(value);
break;
}
}
}
/**
* 容器布局
*/
public void doLayout() {
layout();
if (isValid) {
setScrollBarProperties(customWidth - designer.getWidth(), horScrollBar);
//计算滚动条值的时候应该算上参数面板的高度
setScrollBarProperties(customHeight - designer.getHeight(), verScrollBar);
}
}
/**
* 设置滚动条的属性
*/
private void setScrollBarProperties(int value, FormScrollBar bar) {
if (value <= 0) {
// 界面有滚动条时,手动缩小容器宽度到界面内,重置滚动条值和max
setScrollBarMax(0, bar);
bar.setMaximum(0);
bar.setValue(0);
bar.setEnabled(false);
} else {
//参数面板拖拽过程中value一直为当前value
int oldValue = verticalValue;
setScrollBarMax(value, bar);
bar.setEnabled(true);
bar.setMaximum(value);
bar.setValue(value);
bar.setValue(oldValue);
}
}
private boolean isScrollNotVisible(FormScrollBar bar) {
if (bar.getOrientation() == Adjustable.VERTICAL) {
return verticalMax == 0;
} else {
return horicalMax == 0;
}
}
private void setScrollBarMax(int max, FormScrollBar bar) {
if (bar.getOrientation() == Adjustable.VERTICAL) {
verticalMax = max;
} else {
horicalMax = max;
}
}
/**
* 返回designer的最小高度
*
* @return int
*/
public int getMinHeight() {
return MIN_HEIGHT;
}
/**
* 返回designer的最小宽度
*
* @return int
*/
public int getMinWidth() {
return MIN_WIDTH;
}
/**
* getRulerLengthUnit
*
* @return short
*/
public short getRulerLengthUnit() {
return -1;
}
/**
* 返回水平滚动条的value
*
* @return int
*/
public int getHorizontalValue() {
return horizontalValue;
}
/**
* 设置水平滚动条的value
*
* @param newValue
*/
public void setHorizontalValue(int newValue) {
this.horizontalValue = newValue;
}
/**
* 返回竖直滚动条的value
*
* @return
*/
public int getVerticalValue() {
return verticalValue;
}
/**
* 竖直滚动条赋值
*
* @param newValue
*/
public void setVerticalValue(int newValue) {
this.verticalValue = newValue;
}
/**
* 返回当前designer的高度
*
* @return height
*/
public int getDesignerHeight() {
return designer.getHeight();
}
/**
* 返回当前designer的宽度
*
* @return
*/
public int getDesignerWidth() {
return designer.getWidth();
}
/**
* 返回宽度控件的value
*
* @return 宽度
*/
public double getWidthPaneValue() {
return widthPane.getValue();
}
/**
* 设置宽度值
*
* @param value
*/
public void setWidthPaneValue(int value) {
widthPane.setValue(value);
}
/**
* 设置高度值
*
* @param value
*/
public void setHeightPaneValue(int value) {
heightPane.setValue(value);
}
/**
* 返回高度控件的value
*
* @return 高度
*/
public double getHeightPaneValue() {
return heightPane.getValue();
}
/**
* 返回界面区域大小
*
* @return Dimension
*/
public Dimension getAreaSize() {
return new Dimension(horScrollBar.getMaximum(), verScrollBar.getMaximum());
}
/**
* setAreaSize
*
* @param totalSize
* @param horizontalValue
* @param verticalValue
*/
public void setAreaSize(Dimension totalSize, int horizontalValue, int verticalValue, double width, double height, double slide) {
horScrollBar.setMaximum((int) totalSize.getWidth());
verScrollBar.setMaximum((int) totalSize.getHeight());
horScrollBar.setValue(horizontalValue);
verScrollBar.setValue(verticalValue);
// 撤销会refresh底层容器,需要按照之前的宽高和百分比重置下容器size
if (width != widthPane.getValue()) {
widthPane.setValue(width);
reCalculateWidth((int) width);
}
if (height != heightPane.getValue()) {
heightPane.setValue(height);
reCalculateHeight((int) height);
}
// undo时会重新refreshRoot,需要再次按照百分比调整下
START_VALUE = DEFAULT_SLIDER;
reCalculateRoot(slide, true);
}
public int getCustomWidth(){
return this.customWidth;
}
public int getCustomHeight(){
return this.customHeight;
}
/**
* 计算滚动条的值和max
*
* @param oldmax 之前最大值
* @param max 当前最大值
* @param newValue 当前value
* @param oldValue 之前value
* @param visi designer的大小
* @param orientation 滚动条方向
* @return 计算后的值和max
*/
@Override
public Point calculateScroll(int oldmax, int max, int newValue, int oldValue, int visi, int orientation) {
int scrollMax = orientation == 1 ? verticalMax : horicalMax;
//防止滚动条到达低端还可以继续点击移动(滚动条最大范围不变时,newValue要在范围之内)
if (oldmax == scrollMax + visi && newValue > scrollMax) {
return new Point(oldValue, oldmax);
}
return new Point(newValue, max);
}
private class FormRulerLayout extends RulerLayout {
public FormRulerLayout() {
super();
}
/**
* 表单用的layout当前不需要标尺
*/
public void layoutContainer(Container target) {
synchronized (target.getTreeLock()) {
Insets insets = target.getInsets();
int top = insets.top;
int left = insets.left;
int bottom = target.getHeight() - insets.bottom;
int right = target.getWidth() - insets.right;
Dimension resize = resizePane.getPreferredSize();
Dimension hbarPreferredSize = null;
Dimension vbarPreferredSize = null;
resizePane.setBounds(left, bottom - resize.height, right, resize.height);
if (horScrollBar != null) {
hbarPreferredSize = horScrollBar.getPreferredSize();
vbarPreferredSize = verScrollBar.getPreferredSize();
horScrollBar.setBounds(left, bottom - hbarPreferredSize.height - resize.height, right - BARSIZE, hbarPreferredSize.height);
verScrollBar.setBounds(right - vbarPreferredSize.width, top, vbarPreferredSize.width, bottom - BARSIZE - resize.height);
}
ChartDesigner dg = ((ChartDesigner) designer);
Rectangle rec = new Rectangle(left + (right - designerwidth) / 2, TOPGAP, right, bottom);
//是否为图表
if (isValid) {
int maxHeight = bottom - hbarPreferredSize.height - resize.height - TOPGAP * 2;
int maxWidth = right - vbarPreferredSize.width;
designerwidth = designerwidth> maxWidth ? maxWidth : designerwidth;
designerheight = designerheight > maxHeight ? maxHeight : designerheight;
int designerLeft = left + (verScrollBar.getX() - designerwidth) / 2;
rec = new Rectangle(designerLeft, TOPGAP, designerwidth, designerheight);
}
// designer是整个表单设计界面中的面板部分,目前只放自适应布局和参数界面。
designer.setBounds(rec);
}
}
}
}

230
designer_chart/src/com/fr/design/mainframe/ChartDesigner.java

@ -1,230 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe;
import com.fr.form.ui.ChartBook;
import com.fr.design.designer.TargetComponent;
import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus;
import com.fr.design.menu.MenuDef;
import com.fr.design.menu.ShortCut;
import com.fr.design.menu.ToolBarDef;
import javax.swing.*;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionAdapter;
import java.util.ArrayList;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-13
* Time: 下午4:30
*/
public class ChartDesigner extends TargetComponent<ChartBook> implements MouseListener{
private ChartArea chartArea;//上层区域
private boolean hasCalGap = false;
private ArrayList<ChangeListener> changeListeners = new ArrayList<ChangeListener>();
public ChartDesigner(ChartBook chartBook) {
super(chartBook);
this.addMouseListener(this);
updateUI();// 初始化界面设计工具的UI实例
}
/**
* 设置上层区域
* @param chartArea 图表区域
*/
public void setParent(ChartArea chartArea) {
this.chartArea = chartArea;
}
/**
* 复制
*/
public void copy() {
}
/**
* 黏贴
* @return 成功返回true
*/
public boolean paste() {
return false;
}
/**
* 剪切
* @return 成功返回TRUE
*/
public boolean cut() {
return false;
}
/**
* 停止编辑
*/
public void stopEditing() {
}
/**
* 权限编辑面板
* @return 面板
*/
public AuthorityEditPane createAuthorityEditPane() {
return null;
}
/**
* 工具条
* @return 工具条
*/
public ToolBarMenuDockPlus getToolBarMenuDockPlus() {
return null;
}
/**
* 菜单状态
* @return 状态
*/
public int getMenuState() {
return 0;
}
/**
* 东上面板
* @return 面板
*/
public JPanel getEastUpPane() {
return null;
}
/**
* 东下面板
* @return 面板
*/
public JPanel getEastDownPane() {
return null;
}
/**
* 取消格式
*/
public void cancelFormat() {
}
/**
* 图表设计器得工具条项
* @return 图表设计器得工具条项
*/
public ToolBarDef[] toolbars4Target() {
return new ToolBarDef[0];
}
/**
* 菜单
* @return 菜单
*/
public MenuDef[] menus4Target() {
return new MenuDef[0];
}
/**
* 菜单项
* @return 菜单项
*/
public ShortCut[] shortcut4TemplateMenu() {
return new ShortCut[0];
}
/**
* 权限编辑得菜单项
* @return 菜单项
*/
public ShortCut[] shortCuts4Authority() {
return new ShortCut[0];
}
/**
* 表单得工具条按钮
* @return 表单得工具条按钮
*/
public JComponent[] toolBarButton4Form() {
return new JComponent[0];
}
/**
* 返回表单区域
* @return 表单区域
*/
public ChartArea getArea() {
return chartArea;
}
/**
* 鼠标点击
* @param e 事件
*/
public void mouseClicked(MouseEvent e) {
}
/**
* 鼠标按下
* @param e 事件
*/
public void mousePressed(MouseEvent e) {
}
/**
* 鼠标释放
* @param e 事件
*/
public void mouseReleased(MouseEvent e) {
}
/**
* 鼠标进入
* @param e 事件
*/
public void mouseEntered(MouseEvent e) {
}
/**
* 鼠标退出
* @param e 事件
*/
public void mouseExited(MouseEvent e) {
}
private void registerChangeListener(ChangeListener changeListener){
if(changeListener == null){
return;
}
this.changeListeners.add(changeListener);
}
public void populate(){
}
/**
* 清除工具栏上面全局风格按钮的选中
*/
public void clearToolBarStyleChoose(){
}
}

211
designer_chart/src/com/fr/design/mainframe/ChartDesignerUI.java

@ -1,211 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe;
import com.fr.base.BaseUtils;
import com.fr.base.ScreenResolution;
import com.fr.base.chart.BaseChartGlyph;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.ColumnIndependentChart;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.mainframe.chart.ChartDesignEditPane;
import com.fr.general.FRLogger;
import javax.swing.*;
import javax.swing.plaf.ComponentUI;
import java.awt.*;
import java.awt.event.MouseEvent;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-13
* Time: 下午4:55
*/
public class ChartDesignerUI extends ComponentUI {
private static final Icon ADD = BaseUtils.readIcon("/com/fr/design/images/add.png");
private static final Icon DEL = BaseUtils.readIcon("/com/fr/design/images/del.png");
private static final int ICON_SIZE = 22;
private static final int H_GAP = 2;
private static final int V_GAP = 6;
private Rectangle[] iconLocations;
private Rectangle add;
private Rectangle del;
private UILabel tooltipLabel;
private int overIndex = -1;//鼠标悬浮上去的图表的INDEX
// 图表当前的设计器
private ChartDesigner designer;
public ChartDesignerUI() {
}
/**
* 加载界面
*
* @param c 组件
*/
public void installUI(JComponent c) {
designer = (ChartDesigner) c;
}
/**
* 渲染当前的设计界面以及设计辅助状态
*
* @param g 画图类
* @param c 组件
*/
@Override
public void paint(Graphics g, JComponent c) {
ChartCollection chartCollection = (ChartCollection) designer.getTarget().getChartCollection();
Chart editingChart = chartCollection.getSelectedChart();
BaseChartGlyph chartGlyph = null;
if (editingChart != null && editingChart.getPlot() != null) {
chartGlyph = editingChart.createGlyph(editingChart.defaultChartData());
}
int parentWidth = designer.getSize().width;
int parentHeight = designer.getSize().height;
int chartWidth = designer.getArea().getCustomWidth();
int chartHeight = designer.getArea().getCustomHeight();
Graphics clipg;
clipg = g.create(-designer.getArea().getHorizontalValue(), -designer.getArea().getVerticalValue(), parentWidth + designer.getArea().getHorizontalValue(), parentHeight + designer.getArea().getVerticalValue());
clipg = clipg.create(1, 1, designer.getArea().getCustomWidth(), designer.getArea().getCustomHeight());
g.setColor(Color.white);
g.fillRect(0, 0, chartWidth, chartHeight);
chartGlyph.setUseChangeChart(true);
Image chartImage = chartGlyph.toImage(chartWidth, chartHeight, ScreenResolution.getScreenResolution());
clipg.drawImage(chartImage, 0, 0, chartWidth, chartHeight, null);
paintChange(clipg, c);
}
//绘制切换的东西
private void paintChange(Graphics g, JComponent c) {
int chartWidth = designer.getArea().getCustomWidth();
ChartCollection collection = (ChartCollection) designer.getTarget().getChartCollection();
int chartCount = collection.getChartCount();
iconLocations = new Rectangle[chartCount];
int startX = chartWidth - V_GAP - ICON_SIZE;
if (chartCount == 1) {
//只有一个时,只绘制新增按钮,不绘制删除按钮
ADD.paintIcon(c, g, startX, H_GAP);
add = new Rectangle(startX, H_GAP, ICON_SIZE, ICON_SIZE);
del = null;
} else {
DEL.paintIcon(c, g, startX, H_GAP);
del = new Rectangle(startX, H_GAP, ICON_SIZE, ICON_SIZE);
startX -= (V_GAP + ICON_SIZE);
ADD.paintIcon(c, g, startX, H_GAP);
add = new Rectangle(startX, H_GAP, ICON_SIZE, ICON_SIZE);
}
for (int i = chartCount - 1; i >= 0; i--) {
Plot plot = collection.getChart(i).getPlot();
if (plot == null) {
continue;
}
if (collection.getSelectedIndex() == i) {
Icon ploticon = BaseUtils.readIcon(plot.getPlotSmallIconPath() + "_normal.png");
if (ploticon != null) {
startX -= (V_GAP + ICON_SIZE);
ploticon.paintIcon(c, g, startX, H_GAP);
}
}else if(overIndex == i){
Icon ploticon = BaseUtils.readIcon(plot.getPlotSmallIconPath() + "_over.png");
if (ploticon != null) {
startX -= (V_GAP + ICON_SIZE);
ploticon.paintIcon(c, g, startX, H_GAP);
}
} else {
Icon ploticon = BaseUtils.readIcon(plot.getPlotSmallIconPath() + "_gray.png");
if (ploticon != null) {
startX -= (V_GAP + ICON_SIZE);
ploticon.paintIcon(c, g, startX, H_GAP);
}
}
iconLocations[i] = new Rectangle(startX, H_GAP, ICON_SIZE, ICON_SIZE);
}
}
/**
* 鼠标点击
*
* @param e 事件
*/
public void mouseClicked(MouseEvent e) {
Point clikPoint = new Point(e.getPoint().x + designer.getArea().getHorizontalValue(), e.getPoint().y + designer.getArea().getVerticalValue());
ChartCollection collection = (ChartCollection) designer.getTarget().getChartCollection();
for (int i = 0; i < iconLocations.length; i++) {
if (iconLocations[i].contains(clikPoint)) {
if (i == collection.getSelectedIndex()) {
return;
}
collection.setSelectedIndex(i);
designer.repaint();
ChartDesignEditPane.getInstance().populateSelectedTabPane();
return;
}
}
if (add.contains(clikPoint)) {
Chart[] barChart = ColumnIndependentChart.columnChartTypes;
try {
Chart newChart = (Chart) barChart[0].clone();
int select = collection.getSelectedIndex();
collection.addNamedChartAtIndex(newChart.getTitle().getTextObject().toString(), newChart,select+1);
collection.setSelectedIndex(select+1);
ChartDesignEditPane.getInstance().populateSelectedTabPane();
} catch (CloneNotSupportedException e1) {
FRLogger.getLogger().error("Error in Clone");
}
designer.fireTargetModified();
ChartDesignEditPane.getInstance().populateSelectedTabPane();
return;
}
if (del != null && del.contains(clikPoint)) {
int selectedIndex = collection.getSelectedIndex();
collection.removeNameObject(selectedIndex);
if (selectedIndex > 0) {
collection.setSelectedIndex(selectedIndex - 1);
} else {
collection.setSelectedIndex(0);
}
designer.fireTargetModified();
ChartDesignEditPane.getInstance().populateSelectedTabPane();
}
}
/**
* 鼠标悬浮上时的数据点提示
*
* @param e 事件
*/
public void mouseMoved(MouseEvent e) {
Point clikPoint = new Point(e.getPoint().x + designer.getArea().getHorizontalValue(), e.getPoint().y + designer.getArea().getVerticalValue());
if (clikPoint.getY() < H_GAP || clikPoint.getY() > H_GAP + ICON_SIZE) {
ToolTip4Chart.getInstance().hideToolTip();
overIndex = -1;
return;
}
ChartCollection collection = (ChartCollection) designer.getTarget().getChartCollection();
for (int i = 0; i < iconLocations.length; i++) {
if (iconLocations[i].contains(clikPoint)) {
overIndex = i;
String chartName = collection.getChartName(i);
ToolTip4Chart.getInstance().showToolTip(chartName,e.getXOnScreen(),e.getYOnScreen());
return;
}
}
ToolTip4Chart.getInstance().hideToolTip();
overIndex = -1;
}
}

558
designer_chart/src/com/fr/design/mainframe/ChartToolBarPane.java

@ -1,558 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe;
import com.fr.base.ChartPreStyleManagerProvider;
import com.fr.base.ChartPreStyleServerManager;
import com.fr.base.background.ColorBackground;
import com.fr.chart.base.*;
import com.fr.chart.chartattr.*;
import com.fr.chart.chartglyph.ConditionAttr;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.mainframe.chart.ChartDesignEditPane;
import com.fr.design.mainframe.chart.ChartEditPane;
import com.fr.design.mainframe.chart.gui.type.ColumnPlotPane4ToolBar;
import com.fr.design.mainframe.chart.gui.type.PlotPane4ToolBar;
import com.fr.general.FRFont;
import com.fr.general.Inter;
import com.fr.stable.Constants;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-13
* Time: 下午8:32
*/
public class ChartToolBarPane extends JPanel {
public static final int TOTAL_HEIGHT = 42;
private static final int COM_HEIGHT = 22;
private static final int GAP = 7;
private static final int COM_GAP = 14;
private static final int COMBOX_WIDTH = 230;
private static final String[] CHOOSEITEM = new String[]{
Inter.getLocText("FR-Chart-Type_Column"),
Inter.getLocText("FR-Chart-Type_Line"),
Inter.getLocText("FR-Chart-Type_Bar"),
Inter.getLocText("FR-Chart-Type_Pie"),
Inter.getLocText("FR-Chart-Type_Area"),
Inter.getLocText("FR-Chart-Type_XYScatter"),
Inter.getLocText("FR-Chart-Chart_BubbleChart"),
Inter.getLocText("FR-Chart-Type_Radar"),
Inter.getLocText("FR-Chart-Type_Stock"),
Inter.getLocText("FR-Chart-Type_Meter"),
Inter.getLocText("FR-Chart-Type_Range"),
Inter.getLocText("FR-Chart-Type_Comb"),
Inter.getLocText("FR-Chart-Type_Gantt"),
Inter.getLocText("FR-Chart-Type_Donut"),
Inter.getLocText("FR-Chart-Map_Map"),
"gis"+Inter.getLocText("FR-Chart-Map_Map")
};
private UIComboBox chooseComboBox = new UIComboBox(CHOOSEITEM) {
public Dimension getPreferredSize() {
return new Dimension(COMBOX_WIDTH, COM_HEIGHT);
}
};
private JPanel stylePane;
private JPanel plotTypeComboBoxPane;
private UIButton topDownShade = new UIButton(Inter.getLocText("FR-Chart-Style_TopDownShade"));
private UIButton transparent = new UIButton(Inter.getLocText("FR-Chart-Style_Transparent"));
private UIButton plane3D = new UIButton(Inter.getLocText("FR-Chart-Style_Plane3D"));
private UIButton gradient = new UIButton(Inter.getLocText("FR-Chart-Style_GradientHighlight"));
private ItemListener itemListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.DESELECTED) {
ChartToolBarPane.this.remove(centerPane);
ChartToolBarPane.this.remove(stylePane);
if(chooseComboBox.getSelectedIndex() < ChartTypeValueCollection.MAP.toInt()){
calSubChartTypesPane(chooseComboBox.getSelectedIndex());
ChartToolBarPane.this.add(subChartTypesPane,BorderLayout.CENTER);
centerPane = subChartTypesPane;
ChartToolBarPane.this.add(stylePane, BorderLayout.EAST);
} else{
calMapSubChartTypesPane(chooseComboBox.getSelectedIndex());
ChartToolBarPane.this.add(mapTypePane, BorderLayout.CENTER);
centerPane = mapTypePane;
}
ChartCollection chartCollection = (ChartCollection) chartDesigner.getTarget().getChartCollection();
Chart chart = chartCollection.getSelectedChart();
ChartToolBarPane.this.validate();
fireTypeChange();
if(chooseComboBox.getSelectedIndex() == ChartTypeValueCollection.MAP.toInt()){
mapTypePane.populateMapPane(((MapPlot) chart.getPlot()).getMapName());
}else if(chooseComboBox.getSelectedIndex() == ChartTypeValueCollection.GIS.toInt()){
mapTypePane.populateMapPane(chart.getChartName());
}
}
}
};
private PlotPane4ToolBar subChartTypesPane;//默认柱形图
private AbstractMapPlotPane4ToolBar mapTypePane;//地图类型选择的面板
private JPanel centerPane;
private ChartDesigner chartDesigner;
private int lastStyleIndex = -1;
private MouseAdapter styleListener = new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
ChartCollection chartCollection = (ChartCollection) chartDesigner.getTarget().getChartCollection();
Chart chart = chartCollection.getSelectedChart();
Plot newPlot;
int chartType =chart.getPlot().getPlotType().toInt();
if(chartType >= ChartTypeValueCollection.MAP.toInt()){
return;
}
newPlot = subChartTypesPane.setSelectedClonedPlotWithCondition(chart.getPlot());
chartDesigner.fireTargetModified();
UIButton button = (UIButton)e.getSource();
//如果是第二次选中,就是消除
if(button.isSelected()){
button.setSelected(false);
chart.setPlot(newPlot);
resetChart(chart);
lastStyleIndex = -1;
ChartDesignEditPane.getInstance().populateSelectedTabPane();
return;
}
clearStyleChoose();
setStyle(chart,e,newPlot);
lastStyleIndex = chart.getPlot().getPlotStyle();
}
};
private void setStyle( Chart chart,MouseEvent e,Plot newPlot){
if (e.getSource() == topDownShade) {
topDownShade.setSelected(true);
chart.setPlot(newPlot);
chart.getPlot().setPlotStyle(ChartConstants.STYLE_SHADE);
resetChart(chart);
createCondition4Shade(chart);
setPlotFillStyle(chart);
} else if (e.getSource() == transparent) {
transparent.setSelected(true);
chart.setPlot(newPlot);
chart.getPlot().setPlotStyle(ChartConstants.STYLE_TRANSPARENT);
resetChart(chart);
createCondition4Transparent(chart);
setPlotFillStyle(chart);
} else if (e.getSource() == plane3D) {
plane3D.setSelected(true);
chart.setPlot(newPlot);
chart.getPlot().setPlotStyle(ChartConstants.STYLE_3D);
resetChart(chart);
createCondition4Plane3D(chart);
setPlotFillStyle(chart);
} else if (e.getSource() == gradient) {
gradient.setSelected(true);
chart.setPlot(newPlot);
chart.getPlot().setPlotStyle(ChartConstants.STYLE_OUTER);
resetChart(chart);
createCondition4HighLight(chart);
setPlotFillStyle(chart);
}
chart.setStyleGlobal(true);
ChartEditPane pane = ChartDesignEditPane.getInstance();
pane.styleChange(true);
ChartDesignEditPane.getInstance().populate((ChartCollection)chartDesigner.getTarget().getChartCollection());
pane.styleChange(false);
}
public ChartToolBarPane(ChartDesigner designer) {
chartDesigner = designer;
subChartTypesPane = new ColumnPlotPane4ToolBar(designer);//默认柱形图
this.setLayout(new BorderLayout());
this.setBorder(new EmptyBorder(GAP, COM_GAP, GAP, 0));
plotTypeComboBoxPane = new JPanel();
plotTypeComboBoxPane.setBorder(new EmptyBorder(2, 0, 2, 0));
plotTypeComboBoxPane.setLayout(new BorderLayout());
plotTypeComboBoxPane.add(chooseComboBox, BorderLayout.CENTER);
chooseComboBox.addItemListener(itemListener);
//默认选择第一个
chooseComboBox.setSelectedIndex(0);
this.add(plotTypeComboBoxPane, BorderLayout.WEST);
initStylePane();
this.add(stylePane, BorderLayout.EAST);
this.add(subChartTypesPane, BorderLayout.CENTER);
this.centerPane = subChartTypesPane;
topDownShade.addMouseListener(styleListener);
transparent.addMouseListener(styleListener);
plane3D.addMouseListener(styleListener);
gradient.addMouseListener(styleListener);
}
private void initStylePane(){
stylePane = new JPanel() {
public Dimension getPreferredSize() {
Dimension size = super.getPreferredSize();
return new Dimension(size.width, COM_HEIGHT);
}
};
stylePane.setLayout(new FlowLayout(FlowLayout.LEFT, COM_GAP, 0));
stylePane.setBorder(new EmptyBorder(3, 0, 3, 0));
stylePane.add(topDownShade);
stylePane.add(transparent);
stylePane.add(plane3D);
stylePane.add(gradient);
}
/**
* 清除工具栏上面全局风格按钮的选中
*/
public void clearStyleChoose() {
topDownShade.setSelected(false);
transparent.setSelected(false);
plane3D.setSelected(false);
gradient.setSelected(false);
}
private void calMapSubChartTypesPane(int index){
ChartTypeValueCollection type = ChartTypeValueCollection.parse(index);
mapTypePane = PlotToolBarFactory.createToolBar4MapPlot(type,chartDesigner);
}
private void calSubChartTypesPane(int index) {
ChartTypeValueCollection type = ChartTypeValueCollection.parse(index);
subChartTypesPane = PlotToolBarFactory.createToolBar4NormalPlot(type,chartDesigner);
}
private void fireTypeChange() {
if(chooseComboBox.getSelectedIndex() < ChartTypeValueCollection.MAP.toInt()){
subChartTypesPane.fireChange();
}else{
mapTypePane.fireChange();
}
}
//图表区属性清空
private void resetChart(Chart chart) {
chart.setTitle(new Title(chart.getTitle().getTextObject()));
chart.setBorderStyle(Constants.LINE_NONE);
chart.setBorderColor(new Color(150, 150, 150));
chart.setBackground(null);
setPlotFillStyle(chart);
}
//高光渐变的默认属性设置
private void createCondition4HighLight(Chart chart) {
if (chart != null) {
//标题
Title title = new Title(chart.getTitle().getTextObject());
chart.setTitle(title);
title.setTitleVisible(true);
TextAttr textAttr = title.getTextAttr();
if (textAttr == null) {
textAttr = new TextAttr();
title.setTextAttr(textAttr);
}
title.setPosition(Constants.LEFT);
textAttr.setFRFont(FRFont.getInstance("Microsoft YaHei", Font.BOLD, 16f, new Color(51, 51, 51)));
//图例
Legend legend = new Legend();
legend.setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 9f, new Color(138, 140, 139)));
legend.setPosition(Constants.RIGHT_TOP);
chart.getPlot().setLegend(legend);
//分类轴,现在只有柱形图,条形图,面积图
if (chart.getPlot() instanceof CategoryPlot) {
CategoryPlot plot = (CategoryPlot) chart.getPlot();
//分类轴设置
Axis cateAxis = plot.getxAxis();
cateAxis.setAxisStyle(Constants.LINE_THICK);
cateAxis.setAxisColor(new Color(204, 220, 228));
cateAxis.setTickMarkType(Constants.TICK_MARK_INSIDE);
cateAxis.setSecTickMarkType(Constants.TICK_MARK_NONE);
cateAxis.setShowAxisLabel(true);
cateAxis.getTextAttr().setFRFont(FRFont.getInstance("Microsoft YaHei", Font.PLAIN, 10f, new Color(138, 140, 139)));
//值轴
Axis valueAxis = plot.getyAxis();
valueAxis.setAxisStyle(Constants.NONE);
valueAxis.setAxisColor(null);
valueAxis.setTickMarkType(Constants.TICK_MARK_INSIDE);
valueAxis.setSecTickMarkType(Constants.TICK_MARK_NONE);
valueAxis.setShowAxisLabel(true);
valueAxis.getTextAttr().setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 10f, new Color(138, 140, 139)));
//绘图区
plot.setBorderStyle(Constants.LINE_THIN);
plot.setBorderColor(new Color(204, 220, 228));
plot.setBackground(ColorBackground.getInstance(new Color(248, 247, 245)));
plot.getyAxis().setMainGridStyle(Constants.LINE_THIN);
plot.getyAxis().setMainGridColor(new Color(192, 192, 192));
}
}
}
//平面3D的默认属性设置
private void createCondition4Plane3D(Chart chart) {
if (chart != null) {
//标题
Title title = new Title(chart.getTitle().getTextObject());
chart.setTitle(title);
title.setTitleVisible(true);
TextAttr textAttr = title.getTextAttr();
if (textAttr == null) {
textAttr = new TextAttr();
title.setTextAttr(textAttr);
}
title.setPosition(Constants.CENTER);
textAttr.setFRFont(FRFont.getInstance("Microsoft YaHei", Font.PLAIN, 16f, new Color(51, 51, 51)));
//图例
Legend legend = new Legend();
legend.setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 9f, new Color(128, 128, 128)));
legend.setPosition(Constants.TOP);
chart.getPlot().setLegend(legend);
//分类轴,现在只有柱形图,条形图,面积图
if (chart.getPlot() instanceof CategoryPlot) {
CategoryPlot plot = (CategoryPlot) chart.getPlot();
//分类轴设置
Axis cateAxis = plot.getxAxis();
cateAxis.setAxisStyle(Constants.LINE_THICK);
cateAxis.setAxisColor(new Color(57, 57, 57));
cateAxis.setTickMarkType(Constants.TICK_MARK_NONE);
cateAxis.setSecTickMarkType(Constants.TICK_MARK_NONE);
cateAxis.setShowAxisLabel(true);
cateAxis.getTextAttr().setFRFont(FRFont.getInstance("Microsoft YaHei", Font.PLAIN, 10f, new Color(57, 57, 57)));
//值轴设置
Axis valueAxis = plot.getyAxis();
valueAxis.setAxisStyle(Constants.LINE_NONE);
valueAxis.setTickMarkType(Constants.TICK_MARK_NONE);
valueAxis.setSecTickMarkType(Constants.TICK_MARK_NONE);
valueAxis.setShowAxisLabel(false);
//绘图区
plot.getyAxis().setMainGridStyle(Constants.LINE_THIN);
plot.getyAxis().setMainGridColor(new Color(192, 192, 192));
chart.setBorderStyle(Constants.LINE_NONE);
//数据标签
ConditionAttr attrList = plot.getConditionCollection().getDefaultAttr();
DataSeriesCondition attr = attrList.getExisted(AttrContents.class);
if (attr != null) {
attrList.remove(attr);
}
AttrContents attrContents = new AttrContents();
attrContents.setPosition(Constants.OUTSIDE);
attrContents.setSeriesLabel(ChartConstants.VALUE_PARA);
attrContents.setTextAttr(new TextAttr(FRFont.getInstance("SimSun", Font.PLAIN, 9f, new Color(51, 51, 51))));
attrList.addDataSeriesCondition(attrContents);
}
}
}
//透明风格的默认属性设置
private void createCondition4Transparent(Chart chart) {
if (chart != null) {
//标题
Title title = new Title(chart.getTitle().getTextObject());
chart.setTitle(title);
title.setTitleVisible(true);
TextAttr textAttr = title.getTextAttr();
if (textAttr == null) {
textAttr = new TextAttr();
title.setTextAttr(textAttr);
}
title.setPosition(Constants.LEFT);
textAttr.setFRFont(FRFont.getInstance("Microsoft YaHei", Font.BOLD, 16f, new Color(192, 192, 192)));
//图例
Legend legend = new Legend();
legend.setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 9f, new Color(138, 140, 139)));
legend.setPosition(Constants.RIGHT_TOP);
chart.getPlot().setLegend(legend);
Plot plot = chart.getPlot();
//绘图区
chart.setBackground(ColorBackground.getInstance(new Color(51, 51, 51)));
//分类轴,现在只有柱形图,条形图,面积图
if (plot instanceof CategoryPlot) {
//边框
plot.setBorderStyle(Constants.LINE_THIN);
plot.setBorderColor(new Color(65, 65, 65));
//分类轴设置
Axis cateAxis = plot.getxAxis();
cateAxis.setAxisStyle(Constants.LINE_THICK);
cateAxis.setAxisColor(new Color(192, 192, 192));
cateAxis.setTickMarkType(Constants.TICK_MARK_NONE);
cateAxis.setSecTickMarkType(Constants.TICK_MARK_NONE);
cateAxis.setShowAxisLabel(true);
cateAxis.getTextAttr().setFRFont(FRFont.getInstance("Microsoft YaHei", Font.PLAIN, 10f, new Color(150, 150, 150)));
//值轴
Axis valueAxis = plot.getyAxis();
valueAxis.setShowAxisLabel(true);
valueAxis.setAxisStyle(Constants.LINE_NONE);
valueAxis.getTextAttr().setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 10f, new Color(150, 150, 150)));
valueAxis.setMainGridStyle(Constants.LINE_THIN);
valueAxis.setMainGridColor(new Color(63, 62, 62));
}
}
}
//渐变的默认属性设置
private void createCondition4Shade(Chart chart) {
if (chart != null) {
//标题
Title title = new Title(chart.getTitle().getTextObject());
chart.setTitle(title);
title.setTitleVisible(true);
TextAttr textAttr = title.getTextAttr();
if (textAttr == null) {
textAttr = new TextAttr();
title.setTextAttr(textAttr);
}
title.setPosition(Constants.CENTER);
textAttr.setFRFont(FRFont.getInstance("Microsoft YaHei", Font.BOLD, 16f, new Color(0, 51, 102)));
//图例
Legend legend = new Legend();
legend.setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 9f, new Color(128, 128, 128)));
legend.setPosition(Constants.BOTTOM);
chart.getPlot().setLegend(legend);
//分类轴,现在只有柱形图,条形图,面积图
if (chart.getPlot() instanceof CategoryPlot) {
CategoryPlot plot = (CategoryPlot) chart.getPlot();
//分类轴设置
Axis cateAxis = plot.getxAxis();
cateAxis.setAxisStyle(Constants.LINE_THICK);
cateAxis.setAxisColor(new Color(73, 100, 117));
cateAxis.setTickMarkType(Constants.TICK_MARK_NONE);
cateAxis.setSecTickMarkType(Constants.TICK_MARK_NONE);
cateAxis.setShowAxisLabel(true);
cateAxis.getTextAttr().setFRFont(FRFont.getInstance("Microsoft YaHei", Font.PLAIN, 10f, new Color(128, 128, 128)));
//值轴
Axis valueAxis = plot.getyAxis();
valueAxis.setShowAxisLabel(true);
valueAxis.getTextAttr().setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 10f, new Color(128, 128, 128)));
valueAxis.setAxisStyle(Constants.LINE_NONE);
//绘图区
plot.getyAxis().setMainGridStyle(Constants.LINE_THIN);
plot.getyAxis().setMainGridColor(new Color(192, 192, 192));
plot.setHorizontalIntervalBackgroundColor(new Color(243, 243, 243));
}
}
}
private void setPlotFillStyle(Chart chart) {
ChartPreStyleManagerProvider manager = ChartPreStyleServerManager.getProviderInstance();
Plot plot = chart.getPlot();
Object preStyle = null;
String name = "";
if (topDownShade.isSelected()) {
name = Inter.getLocText("FR-Chart-Style_Retro");
preStyle = manager.getPreStyle(name);
} else if (transparent.isSelected()) {
name = Inter.getLocText("FR-Chart-Style_Fresh");
preStyle = manager.getPreStyle(name);
} else if (plane3D.isSelected()) {
name = Inter.getLocText("FR-Chart-Style_Bright");
preStyle = manager.getPreStyle(name);
} else if (gradient.isSelected()) {
name = Inter.getLocText("FR-Chart-Style_Bright");
preStyle = manager.getPreStyle(name);
}else{
preStyle = null;
}
if (preStyle == null) {
plot.getPlotFillStyle().setColorStyle(ChartConstants.COLOR_DEFAULT);
} else {
AttrFillStyle fillStyle = ((ChartPreStyle) preStyle).getAttrFillStyle();
fillStyle.setFillStyleName(name);
plot.setPlotFillStyle(fillStyle);
}
}
public void populate(){
ChartCollection chartCollection = (ChartCollection) chartDesigner.getTarget().getChartCollection();
Chart chart = chartCollection.getSelectedChart();
chooseComboBox.removeItemListener(itemListener);
chooseComboBox.setSelectedIndex(chart.getPlot().getPlotType().toInt());
int chartType =chart.getPlot().getPlotType().toInt();
this.removeAll();
populateStyle();
this.add(plotTypeComboBoxPane, BorderLayout.WEST);
initStylePane();
if(chartType < ChartTypeValueCollection.MAP.toInt()){
calSubChartTypesPane(chartType);
subChartTypesPane.setSelectedIndex(chart.getPlot().getDetailType());
ChartToolBarPane.this.add(subChartTypesPane, BorderLayout.CENTER);
this.add(subChartTypesPane, BorderLayout.CENTER);
centerPane = subChartTypesPane;
this.add(stylePane, BorderLayout.EAST);
}else if(chartType == ChartTypeValueCollection.MAP.toInt()){
calMapSubChartTypesPane(chartType);
mapTypePane.populateMapPane(((MapPlot) chart.getPlot()).getMapName());
ChartToolBarPane.this.add(mapTypePane, BorderLayout.CENTER);
centerPane = mapTypePane;
}else{
calMapSubChartTypesPane(chartType);
mapTypePane.populateMapPane((chart.getPlot()).getPlotName());
ChartToolBarPane.this.add(mapTypePane, BorderLayout.CENTER);
centerPane = mapTypePane;
}
ChartToolBarPane.this.validate();
chooseComboBox.addItemListener(itemListener);
}
private void populateStyle() {
clearStyleChoose();
ChartCollection chartCollection = (ChartCollection) chartDesigner.getTarget().getChartCollection();
Chart chart = chartCollection.getSelectedChart();
int plotStyle = chart.getPlot().getPlotStyle();
switch (plotStyle) {
case ChartConstants.STYLE_SHADE:
topDownShade.setSelected(chart.isStyleGlobal() && true);
break;
case ChartConstants.STYLE_TRANSPARENT:
transparent.setSelected(chart.isStyleGlobal() && true);
break;
case ChartConstants.STYLE_3D:
plane3D.setSelected(chart.isStyleGlobal() && true);
break;
case ChartConstants.STYLE_OUTER:
gradient.setSelected(chart.isStyleGlobal() && true);
break;
default:
clearStyleChoose();
break;
}
lastStyleIndex = plotStyle;
}
}

98
designer_chart/src/com/fr/design/mainframe/DesignerFrame4Chart.java

@ -1,98 +0,0 @@
package com.fr.design.mainframe;
import com.fr.design.ChartEnvManager;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.mainframe.actions.UpdateVersion;
import com.fr.design.mainframe.chart.UpdateOnLinePane;
import com.fr.design.mainframe.toolbar.ToolBarMenuDock;
import com.fr.general.ComparatorUtils;
import com.fr.general.FRLogger;
import com.fr.json.JSONObject;
import com.fr.stable.ProductConstants;
import com.fr.stable.StableUtils;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.ArrayList;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class DesignerFrame4Chart extends DesignerFrame {
/**
* Constructor.
*
* @param ad
*/
public DesignerFrame4Chart(ToolBarMenuDock ad) {
super(ad);
}
protected ArrayList<WindowListener> getFrameListeners(){
ArrayList<WindowListener> listeners = super.getFrameListeners();
listeners.add(0, new WindowAdapter() {
@Override
public void windowOpened(WindowEvent e) {
super.windowOpened(e);
judgeFirstUseWhenStart();
}
});
return listeners;
}
/**
* 退出
*/
public void exit() {
ChartEnvManager.getEnvManager().saveXMLFile();
super.exit();
}
//不需要西侧的文件树面板
protected void laoyoutWestPane(){
}
protected void judgeFirstUseWhenStart(){
boolean isNeed2Check =ChartEnvManager.getEnvManager().isPushUpdateAuto() || ChartEnvManager.getEnvManager().isOverOneMonth();
if(!StableUtils.checkDesignerActive(ChartEnvManager.getEnvManager().getActivationKey())
|| isNeed2Check){
ChartEnvManager.getEnvManager().setActivationKey(ChartEnvManager.ACTIVE_KEY);
checkVersion();
if(ChartEnvManager.getEnvManager().isOverOneMonth()){
ChartEnvManager.getEnvManager().resetCheckDate();
}
}
}
private void checkVersion(){
new UpdateVersion(){
protected void done() {
try {
JSONObject serverVersion = get();
String version = serverVersion.getString(UpdateVersion.VERSION);
if(!ComparatorUtils.equals(ProductConstants.RELEASE_VERSION, version)){
UpdateOnLinePane updateOnLinePane = new UpdateOnLinePane(version);
BasicDialog dg = updateOnLinePane.showWindow4UpdateOnline(DesignerContext.getDesignerFrame());
updateOnLinePane.setParentDialog(dg);
dg.setVisible(true);
}
}catch (Exception e){
FRLogger.getLogger().error(e.getMessage());
}
}
}.execute();
}
}

203
designer_chart/src/com/fr/design/mainframe/GisMapPlotPane4ToolBar.java

@ -1,203 +0,0 @@
package com.fr.design.mainframe;
import com.fr.chart.base.ChartConstants;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.GisMapIndependentChart;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import java.awt.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* Date: 14/12/1
* Time: 下午3:11
*/
public class GisMapPlotPane4ToolBar extends AbstractMapPlotPane4ToolBar {
private static final int BAIDU = 0;
private static final int GOOGLE= 1;
private static final String[] TYPE_NAMES = new String[]{
Inter.getLocText("FR-Chart-Map_Baidu"),
Inter.getLocText("FR-Chart-Map_Google")};
private UITextField keyField = new UITextField(){
public Dimension getPreferredSize() {
return new Dimension(COMBOX_WIDTH, COM_HEIGHT);
}
};
private DocumentListener keyListener = new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
fireKeyChange();
}
@Override
public void removeUpdate(DocumentEvent e) {
fireKeyChange();
}
@Override
public void changedUpdate(DocumentEvent e) {
fireKeyChange();
}
} ;
private void fireKeyChange(){
ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection();
Chart chart =chartCollection.getSelectedChart();
GisMapPlot plot =(GisMapPlot) chart.getPlot();
String key = this.keyField.getText().trim();
if(plot.isGisType() && key != plot.getBaiduKey()){
plot.setBaiduKey(key);
}else if(!plot.isGisType() && key != plot.getGoogleKey()){
plot.setGoogleKey(key);
}
chartDesigner.fireTargetModified();
}
public GisMapPlotPane4ToolBar(final ChartDesigner chartDesigner){
super(chartDesigner);
this.add(getKeyPane());
keyField.getDocument().addDocumentListener(keyListener);
}
private JPanel getKeyPane(){
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] columnSize = {p,f};
double[] rowSize = {p};
Component[][] components = new Component[][]{
new Component[]{new UILabel("key"),keyField},
};
return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
}
protected void calculateDetailMaps(int mapType){
switch (mapType) {
case BAIDU:
populateDetilMaps(Inter.getLocText("FR-Chart-Map_Baidu"));
break;
case GOOGLE:
populateDetilMaps(Inter.getLocText("FR-Chart-Map_Google"));
break;
default:
populateDetilMaps(Inter.getLocText("FR-Chart-Map_Baidu"));
}
fireMapChange();
}
/**
* 更新地图面板
* @param mapType 地图名字
*/
public void populateMapPane(String mapType){
super.populateMapPane(mapType);
populateDetilMaps(mapTypeComboBox.getSelectedItem().toString());
}
protected void populateDetilMaps(String mapType){
mapTypeComboBox.removeItemListener(mapTypeListener);
ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection();
Chart chart =chartCollection.getSelectedChart();
GisMapPlot plot = (GisMapPlot) chart.getPlot();
keyField.getDocument().removeDocumentListener(keyListener);
if(plot.isGisType()){
keyField.setText(plot.getBaiduKey());
mapTypeComboBox.setSelectedIndex(0);
}else{
keyField.setText(plot.getGoogleKey());
mapTypeComboBox.setSelectedIndex(1);
}
keyField.getDocument().addDocumentListener(keyListener);
mapTypeComboBox.addItemListener(mapTypeListener);
}
private void fireMapChange(){
ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection();
Chart chart =chartCollection.getSelectedChart();
if(chart.getPlot().getPlotStyle() != ChartConstants.STYLE_NONE){
resetChart(chart);
}
Chart[] cs = GisMapIndependentChart.gisChartTypes;
GisMapPlot plot;
if (cs.length > 0) {
try {
plot = (GisMapPlot)cs[0].getPlot().clone();
} catch (Exception e) {
plot = new GisMapPlot();
}
} else {
plot = new GisMapPlot();
}
try {
chart.switchPlot((Plot)plot.clone());
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In GisChart");
chart.switchPlot(new GisMapPlot());
}
plot = (GisMapPlot) chart.getPlot();
boolean index = plot.isGisType();
plot.setGisType(mapTypeComboBox.getSelectedIndex() == 1);
if(index != plot.isGisType()){
if(plot.isGisType()){
this.keyField.setText(plot.getBaiduKey());
}else{
this.keyField.setText(plot.getGoogleKey());
}
}else{
String key = this.keyField.getText().trim();
if(plot.isGisType() && key != plot.getBaiduKey()){
plot.setBaiduKey(key);
}else if(!plot.isGisType() && key != plot.getGoogleKey()){
plot.setGoogleKey(key);
}
}
chartDesigner.fireTargetModified();
}
protected Plot getSelectedClonedPlot() {
Chart[] mapChart = GisMapIndependentChart.gisChartTypes;
GisMapPlot newPlot;
if (mapChart.length > 0) {
try {
newPlot = (GisMapPlot)mapChart[0].getPlot().clone();
} catch (Exception e) {
newPlot = new GisMapPlot();
}
} else {
newPlot = new GisMapPlot();
}
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In GisMapChart");
}
return cloned;
}
public String[] getMapTypes(){
return TYPE_NAMES;
}
}

339
designer_chart/src/com/fr/design/mainframe/MapArrayPane.java

@ -1,339 +0,0 @@
package com.fr.design.mainframe;
import com.fr.chart.base.MapSvgAttr;
import com.fr.chart.base.MapSvgXMLHelper;
import com.fr.design.DesignerEnvManager;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.gui.controlpane.*;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.ilist.JNameEdList;
import com.fr.design.gui.ilist.ListModelElement;
import com.fr.general.ComparatorUtils;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import com.fr.stable.CoreConstants;
import com.fr.stable.Nameable;
import com.fr.stable.StringUtils;
import com.fr.stable.core.PropertyChangeAdapter;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* Date: 14/12/3
* Time: 上午10:00
*/
public class MapArrayPane extends JListControlPane {
private static final int LEFT_WIDTH = 180;
private static final Color LINE_COLOR = new Color(176, 176, 176);
private static final int TOP_GAP = 5;
private static final String[] TYPE_NAMES = new String[]{
Inter.getLocText("FR-Chart-World_Map"),
Inter.getLocText("FR-Chart-State_Map"),
Inter.getLocText("FR-Chart-Province_Map"),
Inter.getLocText("FR-Chart-Custom_Map")};
private String mapType;
private String mapDetailName;
MapPlotPane4ToolBar toolBar;
UIComboBox mapTypeBox;
private ArrayList<String> editedNames = new ArrayList<String>();
private ItemListener typeListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
MapArrayPane.this.updateBeans();
mapType = mapTypeBox.getSelectedItem().toString();
MapArrayPane.this.populate(MapSvgXMLHelper.getInstance().getAllMapObjects4Cate(mapType));
}
};
private ArrayList<String> removeNames = new ArrayList<String>();
private MapEditPane mapEditPane;
private ChartDesigner chartDesigner;
public MapArrayPane(String mapType, String mapDetailName,ChartDesigner chartDesigner) {
this.mapDetailName = mapDetailName;
this.mapType = mapType;
if (mapTypeBox != null) {
mapTypeBox.setSelectedItem(mapType);
}
this.chartDesigner = chartDesigner;
mapTypeBox.addItemListener(typeListener);
this.setBorder(new EmptyBorder(TOP_GAP, 0, 0, 0));
this.addEditingListner(new PropertyChangeAdapter() {
public void propertyChange() {
dealPropertyChange();
}
});
}
public void setToolBarPane(MapPlotPane4ToolBar pane) {
this.toolBar = pane;
}
protected void doWhenPopulate(BasicBeanPane beanPane) {
mapEditPane = (MapEditPane)beanPane;
mapEditPane.dealWidthMap(mapType);
String editingName = ((MapEditPane)beanPane).getCurrentMapName();
if(!editedNames.contains(editingName)){
editedNames.add(editingName);
}
}
protected JPanel getLeftPane() {
JPanel centerPane = super.getLeftPane();
mapTypeBox = new UIComboBox(TYPE_NAMES);
JPanel leftPane = new JPanel();
leftPane.setLayout(new BorderLayout());
leftPane.setBorder(new EmptyBorder(3, 0, 0, 0));
leftPane.add(mapTypeBox, BorderLayout.NORTH);
leftPane.add(centerPane, BorderLayout.CENTER);
return leftPane;
}
private void dealPropertyChange() {
MapSvgXMLHelper helper = MapSvgXMLHelper.getInstance();
java.util.List nameList =helper.getNamesListWithCateName(mapType);
String[] allListNames = nameableList.getAllNames();
allListNames[nameableList.getSelectedIndex()] = StringUtils.EMPTY;
String tempName = getEditingName();
if (StringUtils.isEmpty(tempName)) {
String[] warning = new String[]{"NOT_NULL_Des", "Please_Rename"};
String[] sign = new String[]{",", "!"};
nameableList.stopEditing();
JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(MapArrayPane.this), Inter.getLocText(warning, sign));
setWarnigText(editingIndex);
return;
}
if (!ComparatorUtils.equals(tempName, selectedName)
&& isNameRepeted(new List[]{nameList, Arrays.asList(allListNames)}, tempName)) {
nameableList.stopEditing();
JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(MapArrayPane.this),
Inter.getLocText(new String[]{"FR-Chart-Map_NameAlreadyExist", "Please_Rename"}, new String[]{",", "!"}));
setWarnigText(editingIndex);
return;
}
String oldname = mapEditPane.getCurrentMapName();
mapEditPane.setCurrentMapName(tempName);
mapEditPane.dealWidthMap(mapType);
if(editedNames.contains(oldname)){
editedNames.remove(oldname);
editedNames.add(tempName);
}
if(helper.getNewMapAttr(oldname) != null){
MapSvgAttr attr = helper.getNewMapAttr(oldname);
attr.renameMap(tempName);
helper.removeNewMapAttr(oldname);
helper.addNewSvgMaps(tempName,attr);
}
this.toolBar.fireTargetModified();
this.saveMapInfo(tempName);
}
protected void doAfterRemove(){
for(String map2Remove : removeNames){
MapSvgXMLHelper.getInstance().removeMapAttr(map2Remove);
MapSvgXMLHelper.getInstance().removeNewMapAttr(map2Remove);
}
update4AllType();
}
protected void doBeforeRemove(){
removeNames.clear();
for(int index : nameableList.getSelectedIndices()){
removeNames.add(nameableList.getNameAt(index));
}
}
//保存修改过的地图信息
private void saveMapInfo(final String mapName) {
SwingWorker worker = new SwingWorker<Integer, Void>() {
@Override
protected Integer doInBackground() throws Exception {
MapSvgAttr attr = MapSvgXMLHelper.getInstance().getMapAttr(mapName);// 只有在编辑地图时才需要储存相关数据 @kuns
if (attr != null) {
attr.writeBack(mapName);
}
return 0;
}
@Override
protected void done() {
FRLogger.getLogger().info(Inter.getLocText("FR-Chart-Map_Saved")); // 地图已经保存.
}
};
worker.execute();
DesignerEnvManager.addWorkers(worker);
}
private void update4AllType() {
MapSvgXMLHelper helper = MapSvgXMLHelper.getInstance();
helper.clearNames4Cate(mapType);
for(String name : nameableList.getAllNames()){
MapSvgAttr attr = helper.getMapAttr(name);
if(attr == null){
continue;
}
helper.addCateNames(attr.getMapType(),attr.getName());
}
}
/**
* 创建菜单
*
* @return 菜单
*/
public NameableCreator[] createNameableCreators() {
return new NameableCreator[]{
new NameableSelfCreator(Inter.getLocText("FR-Chart-Custom_Map"), MapSvgAttr.class, MapEditPane.class) {
public MapSvgAttr createNameable(UnrepeatedNameHelper helper) {
MapSvgAttr attr = new MapSvgAttr();
attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + helper.createUnrepeatedName(Inter.getLocText("FR-Chart-Custom_Map")) + ".svg");
MapSvgXMLHelper.getInstance().addNewSvgMaps(attr.getName(), attr);
update4Edited(attr.getName());
// 返回参数设置面板.
return attr;
}
@Override
public String createTooltip() {
return null;
}
public void saveUpdatedBean(ListModelElement wrapper, Object bean) {
wrapper.wrapper = (Nameable)bean;
}
}
};
}
protected boolean isCreatorNeedIocn() {
return false;
}
protected ShortCut4JControlPane[] createShortcuts() {
return new ShortCut4JControlPane[]{
addItemShortCut(),
removeItemShortCut(),
};
}
protected int getLeftPreferredSize() {
return LEFT_WIDTH;
}
@Override
protected String title4PopupWindow() {
return Inter.getLocText(new String[]{"FR-Chart-Map_Map", "FR-Chart-Data_Edit"});
}
/**
* 更新
*/
public void updateBeans() {
super.update();
this.update4AllType();
this.updateAllEditedAttrMaps();
MapSvgXMLHelper.getInstance().clearTempAttrMaps();
//versionID递增
this.toolBar.fireTargetModified();
this.saveMapInfo(selectedName);
}
/**
* 创建list
* @return 返回list
*/
public JNameEdList createJNameList() {
JNameEdList nameEdList = new JNameEdList(new DefaultListModel()) {
public Rectangle createRect(Rectangle rect, int iconWidth) {
return rect;
}
protected void doAfterLostFocus() {
MapArrayPane.this.updateControlUpdatePane();
}
public void setNameAt(String name, int index) {
super.setNameAt(name,index);
update4Edited(name);
}
};
nameEdList.setCellRenderer(new NameableListCellRenderer());
return nameEdList;
}
protected void update4Edited(String editingName){
}
private void updateAllEditedAttrMaps(){
MapSvgXMLHelper helper = MapSvgXMLHelper.getInstance();
for(String editedName : editedNames){
if(helper.getMapAttr(editedName)!=null){
helper.getMapAttr(editedName).writeBack(editedName);
}else if(helper.getNewMapAttr(editedName)!=null){
helper.getNewMapAttr(editedName).writeBack(editedName);
}
}
}
//根据地图的名字返回地图的图片
private Image getMapImage(String mapName) {
if (MapSvgXMLHelper.getInstance().containsMapName(mapName)) {
MapSvgAttr mapAttr = MapSvgXMLHelper.getInstance().getMapAttr(mapName);
if (mapAttr == null) {
return null;
}
return mapAttr.getMapImage();
}
return null;
}
/*
* Nameable的ListCellRenerer
*/
private class NameableListCellRenderer extends
DefaultListCellRenderer {
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected,
cellHasFocus);
if (value instanceof ListModelElement) {
Nameable wrappee = ((ListModelElement) value).wrapper;
this.setText(((ListModelElement) value).wrapper.getName());
for (NameableCreator creator : MapArrayPane.this.creators()) {
if (creator.menuIcon() != null && creator.acceptObject2Populate(wrappee) != null) {
this.setIcon(creator.menuIcon());
this.setToolTipText(creator.createTooltip());
break;
}
}
}
return this;
}
}
}

210
designer_chart/src/com/fr/design/mainframe/MapPlotPane4ToolBar.java

@ -1,210 +0,0 @@
package com.fr.design.mainframe;
import com.fr.chart.base.MapSvgXMLHelper;
import com.fr.chart.chartattr.*;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.mainframe.chart.ChartDesignEditPane;
import com.fr.general.ComparatorUtils;
import com.fr.general.Inter;
import com.fr.stable.StringUtils;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* Date: 14/12/1
* Time: 上午11:57
*/
public class MapPlotPane4ToolBar extends AbstractMapPlotPane4ToolBar{
private static final int WORLD_MAP = 0;
private static final int STATE_MAP = 1;
private static final int PROVINCE_MAP = 2;
private static final int CUSTOM_MAP = 3;
private static final int BUTTON_WIDTH = 44;
private static final String[] TYPE_NAMES = new String[]{
Inter.getLocText("FR-Chart-World_Map"),
Inter.getLocText("FR-Chart-State_Map"),
Inter.getLocText("FR-Chart-Province_Map"),
Inter.getLocText("FR-Chart-Custom_Map")};
private String lastEditingName =StringUtils.EMPTY;
private UIButton mapEditButton = new UIButton(Inter.getLocText("FR-Chart-Data_Edit")){
public Dimension getPreferredSize() {
return new Dimension(BUTTON_WIDTH, COM_HEIGHT);
}
};
protected UIComboBox detailMaps = new UIComboBox(){
public Dimension getPreferredSize() {
return new Dimension(COMBOX_WIDTH, COM_HEIGHT);
}
};
private ItemListener detailListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
fireMapChange();
}
};
private ActionListener mapEditListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String selectedName =StringUtils.EMPTY;
if(detailMaps.getSelectedItem() != null){
selectedName = detailMaps.getSelectedItem().toString();
}
final MapArrayPane mapArrayPane = new MapArrayPane(mapTypeComboBox.getSelectedItem().toString(),selectedName,chartDesigner){
public void updateBeans() {
super.updateBeans();
if(reCalculateDetailsMaps(mapTypeComboBox.getSelectedItem().toString(),lastEditingName) ||
ComparatorUtils.equals(StringUtils.EMPTY,lastEditingName)){
detailMaps.setSelectedItem(lastEditingName);
ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection();
com.fr.chart.chartattr.Chart chart =chartCollection.getSelectedChart();
if(chart.getPlot().isMapPlot()){
MapPlot mapPlot = (MapPlot) chart.getPlot();
mapPlot.setMapName(lastEditingName);
}
}
}
protected void update4Edited(String editingName){
lastEditingName = editingName;
}
};
BasicDialog mapArrayDialog = mapArrayPane.showWindow4ChartMapArray(DesignerContext.getDesignerFrame(),
new DialogActionAdapter() {
@Override
public void doOk() {
mapArrayPane.updateBeans();
}
});
mapArrayDialog.setModal(true);
mapArrayPane.setToolBarPane(MapPlotPane4ToolBar.this);
mapArrayPane.populate(MapSvgXMLHelper.getInstance().getAllMapObjects4Cate(mapTypeComboBox.getSelectedItem().toString()));
if(detailMaps.getSelectedItem() != null){
mapArrayPane.setSelectedName(detailMaps.getSelectedItem().toString());
}
mapArrayDialog.setVisible(true);
}
};
public MapPlotPane4ToolBar(ChartDesigner chartDesigner){
super(chartDesigner);
this.add(detailMaps);
detailMaps.addItemListener(detailListener);
mapEditButton.addActionListener(mapEditListener);
this.add(mapEditButton);
}
/**
* 更新地图面板
* @param mapType 地图名字
*/
public void populateMapPane(String mapType){
super.populateMapPane(mapType);
populateDetilMaps(mapTypeComboBox.getSelectedItem().toString());
detailMaps.removeItemListener(detailListener);
detailMaps.setSelectedItem(mapType);
detailMaps.addItemListener(detailListener);
}
/**
* 触发地图改变
*/
public void fireMapChange(){
MapPlot plot = new MapPlot();
String selectedName = StringUtils.EMPTY;
if(detailMaps.getSelectedItem() !=null ){
selectedName = detailMaps.getSelectedItem().toString();
}
plot.setMapName(selectedName);// 名字问题
ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection();
Chart chart =chartCollection.getSelectedChart();
chart.setPlot(plot);
ChartDesignEditPane.getInstance().populate(chartCollection);
chartDesigner.fireTargetModified();
}
//默认选中国家地图
protected void calculateDetailMaps(int mapType){
switch (mapType) {
case WORLD_MAP:
populateDetilMaps(Inter.getLocText("FR-Chart-World_Map"));
break;
case STATE_MAP:
populateDetilMaps(Inter.getLocText("FR-Chart-State_Map"));
break;
case PROVINCE_MAP:
populateDetilMaps(Inter.getLocText("FR-Chart-Province_Map"));
break;
case CUSTOM_MAP:
populateDetilMaps(Inter.getLocText("FR-Chart-Custom_Map"));
break;
default:
populateDetilMaps(Inter.getLocText("FR-Chart-State_Map"));
}
fireMapChange();
}
private boolean reCalculateDetailsMaps(String mapType ,String detailMap){
detailMaps.removeItemListener(detailListener);
detailMaps.removeAllItems();
java.util.List list = MapSvgXMLHelper.getInstance().getNamesListWithCateName(mapType);
boolean isContains = false;
for (Object name : list) {
detailMaps.addItem(name);
if(ComparatorUtils.equals(detailMap,name)){
isContains = true;
}
}
detailMaps.addItemListener(detailListener);
return isContains;
}
protected void populateDetilMaps(String mapType){
detailMaps.removeItemListener(detailListener);
detailMaps.removeAllItems();
java.util.List list = MapSvgXMLHelper.getInstance().getNamesListWithCateName(mapType);
for (Object name : list) {
detailMaps.addItem(name);
}
detailMaps.addItemListener(detailListener);
if(detailMaps.getSelectedItem() != null){
lastEditingName = detailMaps.getSelectedItem().toString();
}
}
protected Plot getSelectedClonedPlot() {
MapPlot mapPlot = new MapPlot();
populateDetilMaps(Inter.getLocText("FR-Chart-State_Map"));
if(detailMaps.getSelectedItem()!= null && !StringUtils.isEmpty(detailMaps.getSelectedItem().toString())){
mapPlot.setMapName(detailMaps.getSelectedItem().toString());
}
return mapPlot;
}
public String[] getMapTypes(){
return TYPE_NAMES;
}
}

90
designer_chart/src/com/fr/design/mainframe/PlotToolBarFactory.java

@ -1,90 +0,0 @@
package com.fr.design.mainframe;
import com.fr.chart.base.ChartTypeValueCollection;
import com.fr.design.mainframe.chart.gui.type.*;
import com.fr.general.FRLogger;
import java.lang.reflect.Constructor;
import java.util.HashMap;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* 图表设计器工具栏面板的工厂类
*/
public class PlotToolBarFactory {
private static HashMap<ChartTypeValueCollection,Class<? extends PlotPane4ToolBar>> panes4NormalPlot =
new HashMap<ChartTypeValueCollection, Class<? extends PlotPane4ToolBar>>();
private static HashMap<ChartTypeValueCollection,Class<? extends AbstractMapPlotPane4ToolBar>> panes4MapPlot =
new HashMap<ChartTypeValueCollection, Class<? extends AbstractMapPlotPane4ToolBar>>();
static {
panes4NormalPlot.put(ChartTypeValueCollection.COLUMN, ColumnPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.LINE, LinePlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.BAR, BarPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.PIE, PiePlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.AREA,AreaPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.XYSCATTER,XYSCatterPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.BUBBLE,BubblePlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.RADAR,RadarPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.STOCK,StockPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.METER,MeterPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.RANGE,RangePlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.COMB,CustomPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.GANTT,GanttPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.DONUT,DonutPlotPane4ToolBar.class);
panes4MapPlot.put(ChartTypeValueCollection.MAP,MapPlotPane4ToolBar.class);
panes4MapPlot.put(ChartTypeValueCollection.GIS,GisMapPlotPane4ToolBar.class);
}
private PlotToolBarFactory(){
}
/**
* 为了地图和gis以外的图表类型创建工具栏
* @param type 图表类型
* @param chartDesigner 图表设计器
* @return 工具栏
*/
public static PlotPane4ToolBar createToolBar4NormalPlot(ChartTypeValueCollection type,ChartDesigner chartDesigner){
if(!panes4NormalPlot.containsKey(type)){
return new ColumnPlotPane4ToolBar(chartDesigner);
}
try {
Class<? extends PlotPane4ToolBar> cls = panes4NormalPlot.get(type);
Constructor<? extends PlotPane4ToolBar > constructor = cls.getConstructor(ChartDesigner.class);
return constructor.newInstance(chartDesigner);
}catch (Exception e){
FRLogger.getLogger().error(e.getMessage());
return new ColumnPlotPane4ToolBar(chartDesigner);
}
}
/**
*为地图和gis创建工具栏
* @param type 类型
* @param chartDesigner 图表设计器
* @return 工具栏
*/
public static AbstractMapPlotPane4ToolBar createToolBar4MapPlot(ChartTypeValueCollection type,ChartDesigner chartDesigner){
if(!panes4MapPlot.containsKey(type)){
return new MapPlotPane4ToolBar(chartDesigner);
}
try {
Class<? extends AbstractMapPlotPane4ToolBar> cls = panes4MapPlot.get(type);
Constructor<? extends AbstractMapPlotPane4ToolBar > constructor = cls.getConstructor(ChartDesigner.class);
return constructor.newInstance(chartDesigner);
}catch (Exception e){
FRLogger.getLogger().error(e.getMessage());
return new MapPlotPane4ToolBar(chartDesigner);
}
}
}

91
designer_chart/src/com/fr/design/mainframe/ToolTip4Chart.java

@ -1,91 +0,0 @@
package com.fr.design.mainframe;
import com.fr.base.GraphHelper;
import com.fr.base.background.ColorBackground;
import com.fr.stable.CoreConstants;
import javax.swing.*;
import java.awt.*;
import java.awt.geom.Dimension2D;
import java.awt.geom.RoundRectangle2D;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-25
* Time: 下午4:11
*/
public class ToolTip4Chart extends JWindow {
private static ToolTip4Chart instance = new ToolTip4Chart();
private static final int HGAP = 5;
private static final int VGAP = 3;
private static final int FONT_SIZE = 12;
private ToolTipStringPane stringPane;
private Font font = new Font("Dialog", Font.PLAIN, FONT_SIZE);
public ToolTip4Chart() {
stringPane = new ToolTipStringPane();
this.getContentPane().add(stringPane);
}
public static ToolTip4Chart getInstance() {
if (instance == null) {
instance = new ToolTip4Chart();
}
return instance;
}
/**
* 现实提示信息
*
* @param toolTip 提示信息
* @param xAbs 绝对位置x
* @param yAbs 绝对位置Y
*/
public void showToolTip(String toolTip, int xAbs, int yAbs) {
stringPane.text = toolTip.trim();
Dimension2D dim = GraphHelper.stringDimensionWithRotation(toolTip, font, 0, CoreConstants.DEFAULT_FRC);
this.setSize(new Dimension((int) dim.getWidth() + HGAP * 2, (int) dim.getHeight() + VGAP * 2));
stringPane.setPreferredSize(new Dimension((int) dim.getWidth(), (int) dim.getHeight()));
if (!this.isVisible()) {
this.setVisible(true);
if (xAbs + this.getWidth() > Toolkit.getDefaultToolkit().getScreenSize().width) {
xAbs -= this.getWidth();
}
this.setLocation(xAbs, yAbs+HGAP*2);
}
}
/**
* 隐藏弹出框
*/
public void hideToolTip() {
this.setVisible(false);
}
private class ToolTipStringPane extends JPanel {
String text;
public ToolTipStringPane() {
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (!isOpaque()) {
return;
}
g.setFont(font);
Rectangle r = new Rectangle(0, 0, this.getWidth(), this.getHeight());
ColorBackground background = ColorBackground.getInstance(Color.white);
background.paint(g, new RoundRectangle2D.Double(r.getX(), r.getY(), r.getWidth(), r.getHeight(), HGAP, HGAP));
Graphics2D g2d = (Graphics2D) g;
g2d.drawString(text, HGAP, this.getHeight() - HGAP);
}
}
}

170
designer_chart/src/com/fr/design/mainframe/actions/ChartDownLoadWorker.java

@ -1,170 +0,0 @@
package com.fr.design.mainframe.actions;
import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.file.SaveSomeTemplatePane;
import com.fr.design.mainframe.DesignerContext;
import com.fr.general.ComparatorUtils;
import com.fr.general.FRLogger;
import com.fr.json.JSONObject;
import com.fr.stable.StableUtils;
import com.fr.stable.StringUtils;
import javax.swing.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class ChartDownLoadWorker extends SwingWorker<Void, Double>{
private static final String FILE_PATH = "http://chart.finedevelop.com/update/";
private static final String VERSION = "version";
private static final String TEMP = "_temp";
private static final int BYTE = 153600;
private static final int FILE_BYTE = 1024;
private HashMap<String,String> files = new HashMap<String, String>();
public ChartDownLoadWorker() {
}
private void loadFilesPaths() throws Exception {
files.clear();
final String installHome = StableUtils.getInstallHome();
JSONObject serverVersion = UpdateVersion.getJsonContent();
if(serverVersion == null){
return;
}
Iterator<String> keys = serverVersion.keys();
while (keys.hasNext()){
String jarName = keys.next();
if(!ComparatorUtils.equals(jarName, VERSION)){
String filePath = (String) serverVersion.get(jarName);
String path =installHome + filePath.substring(2);
files.put(jarName,path);
}
}
files.isEmpty();
}
@Override
protected Void doInBackground() throws Exception {
try {
loadFilesPaths();
Set key = files.keySet();
Iterator iterator = key.iterator();
int totalSize = 0;
//先得到所有的长度,方便计算百分比
while (iterator.hasNext()) {
String jarName = (String) iterator.next();
String jarUrl = FILE_PATH + jarName;
URL url = new URL(jarUrl);
URLConnection connection = url.openConnection();
totalSize += connection.getContentLength();
}
int totalBytesRead = 0;
iterator = key.iterator();
while (iterator.hasNext()) {
String jarName = (String) iterator.next();
String jarUrl = FILE_PATH + jarName;
URL url = new URL(jarUrl);
InputStream reader = url.openStream();
String filePath = files.get(jarName);
int point = filePath.lastIndexOf(".");
//先写临时文件,防止更新一半意外中止
String tmpFilePath = filePath.substring(0,point)+TEMP+filePath.substring(point);
FileOutputStream writer = new FileOutputStream(tmpFilePath);
byte[] buffer = new byte[BYTE];
int bytesRead = 0;
while ((bytesRead = reader.read(buffer)) > 0) {
writer.write(buffer, 0, bytesRead);
buffer = new byte[BYTE];
totalBytesRead += bytesRead;
publish(totalBytesRead/(double)totalSize);
}
}
} catch (Exception e) {
throw new Exception("Update Failed !" + e.getMessage());
}
return null;
}
//替换更新下来的临时文件
protected void replaceFiles(){
try {
Set key = files.keySet();
Iterator iterator = key.iterator();
while (iterator.hasNext()) {
String jarName = (String) iterator.next();
String filePath = files.get(jarName);
int point = filePath.lastIndexOf(".");
//先写临时文件,防止更新一半意外中止
String tmpFilePath = filePath.substring(0,point)+TEMP+filePath.substring(point);
FileInputStream inputStream = new FileInputStream(tmpFilePath);
FileOutputStream writer = new FileOutputStream(filePath);
byte[] buffer = new byte[FILE_BYTE];
int bytesRead = 0;
while ((bytesRead = inputStream.read(buffer))>0){
writer.write(buffer,0,bytesRead);
buffer = new byte[FILE_BYTE];
}
writer.flush();
writer.close();
inputStream.close();
}
} catch (Exception e) {
FRLogger.getLogger().error(e.getMessage());
}
}
/**
* 完成时的动作
*/
public void done() {
//检测是否没有保存的模版
SaveSomeTemplatePane saveSomeTempaltePane = new SaveSomeTemplatePane(true);
// 只有一个文件未保存时
if (HistoryTemplateListPane.getInstance().getHistoryCount() == 1) {
int choose = saveSomeTempaltePane.saveLastOneTemplate();
if (choose != JOptionPane.CANCEL_OPTION) {
restartChartDesigner();
}
} else {
if (saveSomeTempaltePane.showSavePane()) {
restartChartDesigner();
}
}
}
private void restartChartDesigner(){
String installHome = StableUtils.getInstallHome();
if(StringUtils.isEmpty(installHome) || ComparatorUtils.equals(".",installHome)){
DesignerContext.getDesignerFrame().exit();
return;
}
try {
String path = installHome + File.separator + "bin" + File.separator + "restart.bat";
ProcessBuilder builder = new ProcessBuilder(path,installHome);
builder.start();
DesignerContext.getDesignerFrame().exit();
}catch (Exception e){
FRLogger.getLogger().error(e.getMessage());
}
}
}

51
designer_chart/src/com/fr/design/mainframe/actions/ChartFeedBackAciton.java

@ -1,51 +0,0 @@
package com.fr.design.mainframe.actions;
import com.fr.design.actions.help.FeedBackAction;
import com.fr.design.actions.help.FeedBackPane;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.DesignerFrame;
import com.fr.general.Inter;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class ChartFeedBackAciton extends FeedBackAction{
/**
* 动作
* @param e 事件
*/
public void actionPerformed(ActionEvent e) {
final DesignerFrame designerFrame = DesignerContext.getDesignerFrame();
ChartFeedBackPane feedBackPane = new ChartFeedBackPane();
BasicDialog basicDialog =feedBackPane.showWindow(designerFrame,false);
feedBackPane.setFeedbackDialog(basicDialog);
basicDialog.setVisible(true);
}
private class ChartFeedBackPane extends FeedBackPane{
protected JPanel getContactPane() {
double f = TableLayout.FILL;
double p = TableLayout.PREFERRED;
Component[][] components = new Component[][]{
new Component[]{new UILabel(Inter.getLocText("email") + ":", SwingConstants.RIGHT), email},
new Component[]{new UILabel(Inter.getLocText("mobile_number") + ":", SwingConstants.RIGHT), phone}
};
double[] rowSize = {p, p, p};
double[] columnSize = {p, p};
int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}};
return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_MEDIUM, LayoutConstants.VGAP_MEDIUM);
}
}
}

25
designer_chart/src/com/fr/design/mainframe/actions/ChartUpdateAction.java

@ -1,25 +0,0 @@
package com.fr.design.mainframe.actions;
import com.fr.design.actions.UpdateAction;
import java.awt.event.ActionEvent;
/**
* @author : richie
* @since : 8.0
*/
public class ChartUpdateAction extends UpdateAction {
private static final String DOWNLOAD_DESIGNER="";
private static final String DOWNLOAD_CHART="";
private static final String DOWNLOAD_THIRD="";
public ChartUpdateAction() {
}
@Override
public void actionPerformed(ActionEvent e) {
}
}

56
designer_chart/src/com/fr/design/mainframe/actions/ChartWebAction.java

@ -1,56 +0,0 @@
package com.fr.design.mainframe.actions;
import com.fr.base.BaseUtils;
import com.fr.design.actions.UpdateAction;
import com.fr.design.menu.MenuKeySet;
import com.fr.general.Inter;
import com.fr.start.StartServer;
import javax.swing.*;
import java.awt.event.ActionEvent;
/**
* 图表设计器得产品演示
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-27
* Time: 下午9:01
*/
public class ChartWebAction extends UpdateAction {
public ChartWebAction() {
this.setMenuKeySet(getSelfMenuKeySet());
this.setName(getMenuKeySet().getMenuName());
this.setMnemonic(getMenuKeySet().getMnemonic());
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_help/demo.png"));
}
private MenuKeySet getSelfMenuKeySet(){
return new MenuKeySet() {
@Override
public char getMnemonic() {
return 'D';
}
@Override
public String getMenuName() {
return Inter.getLocText("FR-Chart-Product_Demo");
}
@Override
public KeyStroke getKeyStroke() {
return null;
}
};
}
/**
* 动作
* @param e 事件
*/
public void actionPerformed(ActionEvent e) {
StartServer.browerURLWithLocalEnv("http://www.vancharts.com/demo.html");
return;
}
}

35
designer_chart/src/com/fr/design/mainframe/actions/OpenChartAction.java

@ -1,35 +0,0 @@
package com.fr.design.mainframe.actions;
import com.fr.design.actions.file.OpenTemplateAction;
import com.fr.design.mainframe.DesignerContext;
import com.fr.file.FILE;
import com.fr.file.FILEChooserPane;
import com.fr.file.FILEChooserPane4Chart;
import java.awt.event.ActionEvent;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-20
* Time: 下午7:35
*/
public class OpenChartAction extends OpenTemplateAction {
/**
* 动作
* @param evt 事件
*/
public void actionPerformed(ActionEvent evt) {
FILEChooserPane fileChooser = FILEChooserPane4Chart.getInstance(true, true);
if (fileChooser.showOpenDialog(DesignerContext.getDesignerFrame(),".crt")
== FILEChooserPane.OK_OPTION) {
final FILE file = fileChooser.getSelectedFILE();
if (file == null) {//选择的文件不能是 null
return;
}
DesignerContext.getDesignerFrame().openTemplate(file);
}
}
}

74
designer_chart/src/com/fr/design/mainframe/actions/UpdateOnlineAction.java

@ -1,74 +0,0 @@
package com.fr.design.mainframe.actions;
import com.fr.design.ChartEnvManager;
import com.fr.design.actions.UpdateAction;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.chart.UpdateOnLinePane;
import com.fr.design.menu.MenuKeySet;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import com.fr.json.JSONObject;
import com.fr.stable.ProductConstants;
import com.fr.stable.StringUtils;
import javax.swing.*;
import java.awt.event.ActionEvent;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* 图表设计器在线更新
*/
public class UpdateOnlineAction extends UpdateAction {
public UpdateOnlineAction() {
this.setMenuKeySet(getKeySet());
this.setName(getMenuKeySet().getMenuKeySetName() + "...");
this.setMnemonic(getMenuKeySet().getMnemonic());
}
private MenuKeySet getKeySet() {
return new MenuKeySet() {
@Override
public char getMnemonic() {
return 'U';
}
@Override
public String getMenuName() {
return Inter.getLocText("FR-Chart-Help_UpdateOnline");
}
@Override
public KeyStroke getKeyStroke() {
return null;
}
};
}
/**
*动作
* @param e 事件
*/
public void actionPerformed(ActionEvent e) {
new UpdateVersion(){
protected void done() {
try {
ChartEnvManager.getEnvManager().resetCheckDate();
JSONObject serverVersion = get();
String version = serverVersion.getString(UpdateVersion.VERSION);
UpdateOnLinePane updateOnLinePane = new UpdateOnLinePane(StringUtils.isEmpty(version)? ProductConstants.RELEASE_VERSION:version);
BasicDialog dg = updateOnLinePane.showWindow4UpdateOnline(DesignerContext.getDesignerFrame());
updateOnLinePane.setParentDialog(dg);
dg.setVisible(true);
}catch (Exception e){
FRLogger.getLogger().error(e.getMessage());
}
}
}.execute();
}
}

69
designer_chart/src/com/fr/design/mainframe/actions/UpdateVersion.java

@ -1,69 +0,0 @@
package com.fr.design.mainframe.actions;
import com.fr.general.FRLogger;
import com.fr.json.JSONObject;
import javax.swing.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class UpdateVersion extends SwingWorker<JSONObject,Void> {
private static final String VERSION_URL ="http://chart.finedevelop.com/update/update.json";
private static final int TIME_OUT = 300;//5s
public static final String VERSION = "version";
public UpdateVersion(){
}
@Override
protected JSONObject doInBackground() throws Exception {
return getJsonContent();
}
public static JSONObject getJsonContent() throws Exception{
String res = null;
try {
res = readVersionFromServer(TIME_OUT);
} catch (IOException e) {
FRLogger.getLogger().error(e.getMessage());
}
return new JSONObject(res);
}
/**
* 从服务器读取版本
*/
private static String readVersionFromServer(int timeOut) throws IOException {
URL getUrl = new URL(VERSION_URL);
// 根据拼凑的URL,打开连接,URL.openConnection函数会根据URL的类型,
// 返回不同的URLConnection子类的对象,这里URL是一个http,因此实际返回的是HttpURLConnection
HttpURLConnection connection = (HttpURLConnection) getUrl
.openConnection();
connection.setReadTimeout(timeOut);
// 进行连接,但是实际上get request要在下一句的connection.getInputStream()函数中才会真正发到
// 服务器
connection.connect();
// 取得输入流,并使用Reader读取
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf8"));//设置编码,否则中文乱码
String lines;
StringBuffer sb = new StringBuffer();
while ((lines = reader.readLine()) != null) {
sb.append(lines);
}
reader.close();
// 断开连接
connection.disconnect();
return sb.toString();
}
}

55
designer_chart/src/com/fr/design/mainframe/chart/ChartDesignEditPane.java

@ -1,55 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart;
import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.mainframe.chart.gui.*;
import java.util.ArrayList;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-15
* Time: 下午5:47
*/
public class ChartDesignEditPane extends ChartEditPane {
private static ChartDesignEditPane instance;
private boolean isFromToolBar = false;
public synchronized static ChartEditPane getInstance() {
if (instance == null) {
instance = new ChartDesignEditPane();
}
return instance;
}
public ChartDesignEditPane() {
paneList = new ArrayList<AbstractChartAttrPane>();
dataPane4SupportCell = new ChartDesignerDataPane(listener);
paneList.add(dataPane4SupportCell);
paneList.add(new StylePane4Chart(listener, false));
paneList.add(new ChartDesignerOtherPane());
createTabsPane();
}
protected void dealWithStyleChange(){
if(!isFromToolBar){
HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().styleChange();
}
}
/**
*主要用于图表设计器判断样式改变是否来自工具栏的全局样式按钮
* @param isFromToolBar 是否来自工具栏
*/
public void styleChange(boolean isFromToolBar){
this.isFromToolBar = isFromToolBar;
}
}

238
designer_chart/src/com/fr/design/mainframe/chart/UpdateOnLinePane.java

@ -1,238 +0,0 @@
package com.fr.design.mainframe.chart;
import com.fr.design.ChartEnvManager;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.dialog.BasicPane;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.actions.ChartDownLoadWorker;
import com.fr.general.ComparatorUtils;
import com.fr.general.Inter;
import com.fr.stable.ProductConstants;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.text.DecimalFormat;
import java.text.NumberFormat;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* 在线更新面板
*/
public class UpdateOnLinePane extends BasicPane{
private static final int GAP = 40;
private static final int H_GAP = 16;
private static final int SIDE_GAP =30;
private static final int RIGHT_BORDER_GAP = 34;
private static final Color LABEL_COLOR = new Color(114,114,114);
private static final int MESSAGE_FONT_SIZE = 20;
private static final int PUSH_FONT_SIZE = 12;
private static final int PROGRESS_WIDTH = 500;
private static final int PROGRESS_HEIGHT = 14;
private static final NumberFormat NUMBER_FORMAT = new DecimalFormat("##.##");
private static final int PRECENT =100;
private static final Color FOREGROUNG = new Color(23,190,86);
private static final Color BACKGROUND = new Color(210,210,210);
String serverVersion = ProductConstants.RELEASE_VERSION;
UIButton okButton = new UIButton(Inter.getLocText("FR-Chart-Dialog_OK"));
UIButton updateButton = new UIButton(Inter.getLocText("FR-Chart-App_Update"));
UIButton cancleButton = new UIButton(Inter.getLocText("FR-Chart-Dialog_Cancle"));
UICheckBox pushAuto = new UICheckBox(Inter.getLocText("FR-Chart-UpdateMessage_PushAuto"));
private JPanel messagePane;
private JPanel optionsPane;
private BasicDialog parentDialog;
private ChartDownLoadWorker downLoadWorker = null;
private boolean isUpdateCancle = false;
private ActionListener updateListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
final JProgressBar progressBar = init4UpdatingPane();
downLoadWorker = new ChartDownLoadWorker(){
protected void process(java.util.List<Double> v) {
progressBar.setValue((int)(v.get(v.size() - 1) * PRECENT));
}
public void done() {
try {
get();
} catch (Exception e1) {
init4UpdateFaild();
return;
}
if(!isUpdateCancle){
replaceFiles();
dialogExit();
super.done();
}
}
};
downLoadWorker.execute();
}
};
private ActionListener okListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dialogExit();
}
};
private ActionListener cancleListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(downLoadWorker !=null){
isUpdateCancle = true;
downLoadWorker.cancel(true);
}
dialogExit();
}
};
public void setParentDialog(BasicDialog dialog){
this.parentDialog = dialog;
}
public UpdateOnLinePane(String serverVersion){
this.serverVersion = serverVersion;
this.isUpdateCancle = false;
pushAuto.setSelected(ChartEnvManager.getEnvManager().isPushUpdateAuto());
pushAuto.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
ChartEnvManager.getEnvManager().setPushUpdateAuto(pushAuto.isSelected());
}
});
init4PanesLayout();
initListeners();
judge();
}
private void initListeners(){
updateButton.addActionListener(updateListener);
okButton.addActionListener(okListener);
cancleButton.addActionListener(cancleListener);
}
private void init4PanesLayout(){
this.setLayout(new BorderLayout());
this.messagePane = FRGUIPaneFactory.createBorderLayout_L_Pane();
this.optionsPane = new JPanel(new FlowLayout(FlowLayout.RIGHT,H_GAP ,0)) ;
this.optionsPane.setBorder(new EmptyBorder(0, 0, GAP, RIGHT_BORDER_GAP));
this.add(this.messagePane, BorderLayout.CENTER);
this.add(this.optionsPane, BorderLayout.SOUTH);
pushAuto.setFont(new Font(Inter.getLocText("FR-Designer-All_MSBold"), 0, PUSH_FONT_SIZE));
pushAuto.setForeground(LABEL_COLOR);
this.revalidate();
}
//更新失败的提示
private void init4UpdateFaild(){
this.messagePane.removeAll();
UILabel label = new UILabel(Inter.getLocText("FR-Chart-Version_UpdateFail")+"!");
label.setHorizontalAlignment(SwingConstants.CENTER);
label.setFont(new Font(Inter.getLocText("FR-Designer-All_MSBold"), 0, MESSAGE_FONT_SIZE));
label.setForeground(LABEL_COLOR);
this.messagePane.add(label,BorderLayout.CENTER);
optionsPane.removeAll();
optionsPane.add(okButton);
this.revalidate();
}
private JProgressBar init4UpdatingPane(){
this.messagePane.removeAll();
JPanel centerPane = new JPanel(new GridLayout(2,1));
UILabel label = new UILabel(Inter.getLocText("FR-Chart-App_UpdateProgress"));
label.setHorizontalAlignment(SwingConstants.CENTER);
label.setFont(new Font(Inter.getLocText("FR-Designer-All_MSBold"), 0, MESSAGE_FONT_SIZE));
label.setForeground(LABEL_COLOR);
label.setBorder(new EmptyBorder(PUSH_FONT_SIZE,0,0,0));
centerPane.add(label);
JProgressBar progressBar = new JProgressBar();
progressBar.setMaximum(PRECENT);
progressBar.setMinimum(0);
progressBar.setValue(0);
progressBar.setBorder(new EmptyBorder(MESSAGE_FONT_SIZE,SIDE_GAP,SIDE_GAP*2,SIDE_GAP));
centerPane.add(progressBar);
messagePane.add(centerPane,BorderLayout.CENTER);
optionsPane.removeAll();
optionsPane.add(cancleButton);
this.revalidate();
return progressBar;
}
private void init4VersionSamePane(){
this.messagePane.removeAll();
UILabel label = new UILabel(Inter.getLocText("FR-Chart-Versions_Lasted"));
label.setHorizontalAlignment(SwingConstants.CENTER);
label.setFont(new Font(Inter.getLocText("FR-Designer-All_MSBold"), 0, MESSAGE_FONT_SIZE));
label.setForeground(LABEL_COLOR);
this.messagePane.add(label,BorderLayout.CENTER);
optionsPane.removeAll();
optionsPane.add(pushAuto);
optionsPane.add(okButton);
this.revalidate();
}
private void init4VersionDifferentPane(){
this.messagePane.removeAll();
createPaneShowVersions();
optionsPane.removeAll();
optionsPane.add(pushAuto);
optionsPane.add(updateButton);
optionsPane.add(cancleButton);
this.revalidate();
}
private void createPaneShowVersions(){
JPanel centerPane = new JPanel(new GridLayout(2,1));
UILabel localLabel = new UILabel(Inter.getLocText("FR-Chart-Version_Local")+":"+ ProductConstants.RELEASE_VERSION);
localLabel.setFont(new Font(Inter.getLocText("FR-Designer-All_MSBold"), 0, MESSAGE_FONT_SIZE));
localLabel.setForeground(LABEL_COLOR);
localLabel.setBorder(new EmptyBorder(PUSH_FONT_SIZE,0,0,0));
UILabel serverLabel = new UILabel(Inter.getLocText("FR-Chart-Version_Lasted")+":"+serverVersion);
serverLabel.setFont(new Font(Inter.getLocText("FR-Designer-All_MSBold"), 0, MESSAGE_FONT_SIZE));
serverLabel.setForeground(LABEL_COLOR);
serverLabel.setBorder(new EmptyBorder(-MESSAGE_FONT_SIZE - PUSH_FONT_SIZE, 0, 0,0));
localLabel.setHorizontalAlignment(SwingConstants.CENTER);
serverLabel.setHorizontalAlignment(SwingConstants.CENTER);
centerPane.add(localLabel);
centerPane.add(serverLabel);
messagePane.add(centerPane,BorderLayout.CENTER);
}
private void judge(){
if(ComparatorUtils.equals(ProductConstants.RELEASE_VERSION,serverVersion)){
//版本一致,提示已经是最新版本
init4VersionSamePane();
}else{
init4VersionDifferentPane();
}
}
/**
* Dialog exit.
*/
private void dialogExit() {
parentDialog.setVisible(false);
parentDialog.dispose();
}
protected String title4PopupWindow() {
return Inter.getLocText("FR-Chart-Help_UpdateOnline");
}
}

71
designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDesignerDataPane.java

@ -1,71 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.chartattr.GisMapPlot;
import com.fr.chart.chartattr.MapPlot;
import com.fr.design.chart.report.GisMapDataPane4Chart;
import com.fr.design.chart.report.MapDataPane4Chart;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.mainframe.chart.gui.data.ImportSetChartDataPane;
import com.fr.general.FRLogger;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-15
* Time: 下午1:57
*/
public class ChartDesignerDataPane extends ChartDataPane {
private AttributeChangeListener listener;
public ChartDesignerDataPane(AttributeChangeListener listener) {
super(listener);
this.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
FRLogger.getLogger().info("SD");
}
});
this.listener = listener;
}
@Override
protected JPanel createContentPane() {
contentsPane = new ImportSetChartDataPane(listener,ChartDesignerDataPane.this);
return contentsPane;
}
protected void repeatLayout(ChartCollection collection) {
if(contentsPane != null) {
this.remove(contentsPane);
}
this.setLayout(new BorderLayout(0, 0));
if (collection.getSelectedChart().getPlot() instanceof MapPlot) {
contentsPane = new MapDataPane4Chart(listener,this);
}else if(collection.getSelectedChart().getPlot() instanceof GisMapPlot){
contentsPane = new GisMapDataPane4Chart(listener,this);
} else{
contentsPane = new ImportSetChartDataPane(listener,ChartDesignerDataPane.this);
}
}
/**
* 主要用于图表设计器
* @return
*/
public boolean isNeedPresentPaneWhenFilterData(){
return true;
}
}

48
designer_chart/src/com/fr/design/mainframe/chart/gui/data/ChartDesignDataLoadPane.java

@ -1,48 +0,0 @@
package com.fr.design.mainframe.chart.gui.data;
import com.fr.base.TableData;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.design.data.tabledata.wrapper.TemplateTableDataWrapper;
import com.fr.design.dialog.BasicPane;
import com.fr.design.mainframe.AbstractChartDataPane4Chart;
/**
* 图表设计器导入 界面
* Created by kunsnat on 14-10-21.
* kunsnat@gmail.com
*/
public abstract class ChartDesignDataLoadPane extends BasicPane {
private AbstractChartDataPane4Chart parentPane;
public ChartDesignDataLoadPane(AbstractChartDataPane4Chart parentPane){
this.parentPane = parentPane;
}
/**
* 加载数据集
*
* @param tableData 数据集
*/
public abstract void populateChartTableData(TableData tableData);
/**
* 根据界面 获取数据集相关.
*
* @return 返回数据集
*/
public abstract TableData getTableData();
protected abstract String getNamePrefix();
//响应属性事件
protected void fireChange() {
parentPane.fireTableDataChange();
}
public TableDataWrapper getTableDataWrapper(){
return new TemplateTableDataWrapper(getTableData());
}
}

124
designer_chart/src/com/fr/design/mainframe/chart/gui/data/EmbbeddDataPane.java

@ -1,124 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.data;
import com.fr.base.BaseUtils;
import com.fr.base.FRContext;
import com.fr.base.TableData;
import com.fr.design.constants.UIConstants;
import com.fr.data.impl.EmbeddedTableData;
import com.fr.design.data.tabledata.tabledatapane.EmbeddedTableDataPane;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.dialog.BasicPane;
import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.mainframe.AbstractChartDataPane4Chart;
import javax.swing.*;
import javax.swing.border.LineBorder;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
/**
* 图表设计器内置数据集面板
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-16
* Time: 上午12:09
*/
public class EmbbeddDataPane extends ChartDesignDataLoadPane {
private UIButton edit;
private UIButton reviewButton;
private EmbeddedTableData tableData;
public EmbbeddDataPane(AbstractChartDataPane4Chart parentPane) {
super(parentPane);
tableData = new EmbeddedTableData();
initEditButton();
initReviewButton();
this.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 3));
this.add(edit);
this.add(reviewButton);
}
private void initEditButton() {
edit = new UIButton(BaseUtils.readIcon("com/fr/design/images/control/edit.png"));
edit.setBorder(new LineBorder(UIConstants.LINE_COLOR));
edit.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
EmbeddedTableDataPane tableDataPane = new EmbeddedTableDataPane();
tableDataPane.populateBean(tableData);
dgEdit(tableDataPane, getNamePrefix());
}
});
}
private void initReviewButton() {
reviewButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/search.png"));
reviewButton.setBorder(new LineBorder(UIConstants.LINE_COLOR));
reviewButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
//预览图表设计器内置数据集
TableDataWrapper tableDataWrappe = getTableDataWrapper();
if (tableDataWrappe != null) {
try {
tableDataWrappe.previewData();
} catch (Exception e1) {
FRContext.getLogger().error(e1.getMessage(), e1);
}
}
}
});
}
@Override
protected String title4PopupWindow() {
return null;
}
@Override
public TableData getTableData() {
return tableData;
}
/**
* 加载数据集
*
* @param tableData 数据集
*/
public void populateChartTableData(TableData tableData) {
if (tableData instanceof EmbeddedTableData) {
this.tableData =(EmbeddedTableData) tableData;
}
}
protected String getNamePrefix() {
return "Embedded";
}
/**
* 编辑面板
*
* @param uPanel 面板
* @param originalName 原始名字
*/
private void dgEdit(final EmbeddedTableDataPane uPanel, String originalName) {
final BasicPane.NamePane nPanel = uPanel.asNamePane();
nPanel.setObjectName(originalName);
final BasicDialog dg;
dg = nPanel.showLargeWindow(SwingUtilities.getWindowAncestor(EmbbeddDataPane.this), new DialogActionAdapter() {
public void doOk() {
tableData = uPanel.updateBean();
fireChange();
}
});
dg.setVisible(true);
}
}

123
designer_chart/src/com/fr/design/mainframe/chart/gui/data/ExcelDataPane.java

@ -1,123 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.data;
import com.fr.base.BaseUtils;
import com.fr.base.FRContext;
import com.fr.base.TableData;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.constants.UIConstants;
import com.fr.design.data.datapane.preview.PreviewTablePane;
import com.fr.data.impl.ExcelTableData;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.mainframe.AbstractChartDataPane4Chart;
import com.fr.design.mainframe.DesignerContext;
import com.fr.file.FILE;
import com.fr.file.FILEChooserPane;
import com.fr.general.Inter;
import javax.swing.*;
import javax.swing.border.LineBorder;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-15
* Time: 下午11:58
*/
public class ExcelDataPane extends ChartDesignDataLoadPane {
private UITextField path = new UITextField();
private UIButton reviewButton;
private ExcelTableData tableData;
private MouseListener listener = new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
FILEChooserPane fileChooserPane = new FILEChooserPane(true, true);
if (fileChooserPane.showOpenDialog(DesignerContext.getDesignerFrame(), ".xlsx")
== FILEChooserPane.OK_OPTION) {
FILE chooseFILE = fileChooserPane.getSelectedFILE();
if (chooseFILE != null && chooseFILE.exists()) {
path.setText(chooseFILE.getPath());
} else {
JOptionPane.showConfirmDialog(ExcelDataPane.this, Inter.getLocText("FR-Template-Path_chooseRightPath"),
Inter.getLocText("FR-App-All_Warning"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE);
path.setText("");
}
tableData.setFilePath(path.getText().toString());
tableData.setFromEnv(chooseFILE.isEnvFile());
tableData.setNeedColumnName(true);
fireChange();
}
}
};
public ExcelDataPane(AbstractChartDataPane4Chart parentPane, JComponent pathChooseButton) {
super(parentPane);
initReviewButton();
tableData = new ExcelTableData();
tableData.setFilePath(path.getText().toString());
tableData.setNeedColumnName(true);
path.setEditable(false);
pathChooseButton.addMouseListener(listener);
this.setLayout(new BorderLayout(0, 0));
JPanel pane = new JPanel(new BorderLayout(LayoutConstants.HGAP_LARGE, 0));
pane.add(path, BorderLayout.CENTER);
pane.add(reviewButton, BorderLayout.EAST);
this.add(pane, BorderLayout.CENTER);
}
@Override
protected String title4PopupWindow() {
return null;
}
private void initReviewButton() {
reviewButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/search.png"));
reviewButton.setBorder(new LineBorder(UIConstants.LINE_COLOR));
reviewButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
//预览本地excel
try {
PreviewTablePane.previewTableData(getTableData());
} catch (Exception e1) {
FRContext.getLogger().error(e1.getMessage(), e1);
}
}
});
}
@Override
public TableData getTableData() {
return tableData;
}
@Override
protected String getNamePrefix() {
return null;
}
/**
* 加载数据集
*
* @param tableData 数据集
*/
public void populateChartTableData(TableData tableData) {
if (tableData instanceof ExcelTableData) {
path.setText(((ExcelTableData) tableData).getFilePath());
this.tableData = (ExcelTableData)tableData;
this.tableData.setNeedColumnName(true);
}
fireChange();
}
}

117
designer_chart/src/com/fr/design/mainframe/chart/gui/data/ImportSetChartDataPane.java

@ -1,117 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.data;
import com.fr.base.TableData;
import com.fr.base.chart.chartdata.TopDefinitionProvider;
import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.chartattr.Plot;
import com.fr.chart.chartdata.TableDataDefinition;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.mainframe.AbstractChartDataPane4Chart;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.design.mainframe.chart.gui.data.table.AbstractTableDataContentPane;
import com.fr.design.mainframe.chart.gui.data.table.CategoryPlotMoreCateTableDataContentPane;
import com.fr.design.mainframe.chart.gui.data.table.Factory4TableDataContentPane;
import javax.swing.*;
/**
* 数据导入数据设置面板
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-15
* Time: 下午2:35
*/
public class ImportSetChartDataPane extends AbstractChartDataPane4Chart {
private AbstractTableDataContentPane dataContentPane;
public ImportSetChartDataPane(final AttributeChangeListener listener, ChartDataPane parent) {
super(listener,parent);
}
/**
* 更新界面 数据内容
*/
public void populate(ChartCollection collection) {
dataContentPane = getContentPane(collection.getSelectedChart().getPlot());
dataContentPane.setNeedSummaryCaculateMethod(false);
dataContentPane.redoLayoutPane();
if (collection != null && collection.getSelectedChart() != null) {
Chart chart = collection.getSelectedChart();
TopDefinitionProvider definition = chart.getFilterDefinition();
if (definition instanceof TableDataDefinition) {
TableData tableData = ((TableDataDefinition) definition).getTableData();
if(tableData != null){
populateChoosePane(tableData);
fireTableDataChange();
}
if (dataContentPane != null) {
dataContentPane.populateBean(collection);
}
}
}
this.remove(leftContentPane);
this.initContentPane();
this.validate();
dataSource.addItemListener(dsListener);
initAllListeners();
initSelfListener(dataContentPane);
this.addAttributeChangeListener(attributeChangeListener);
}
protected JPanel getDataContentPane(){
return dataContentPane;
}
@Override
public void update(ChartCollection collection) {
if (collection != null && collection.getSelectedChart() != null) {
if (dataContentPane != null) {
dataContentPane.updateBean(collection);
}
TableDataDefinition topDefinition =(TableDataDefinition)collection.getSelectedChart().getFilterDefinition();
if(topDefinition !=null){
topDefinition.setTableData(choosePane.getTableData());
}
}
}
private AbstractTableDataContentPane getContentPane(Plot plot) {
if (plot == null || plot.isSupportMoreCate()) {
return new CategoryPlotMoreCateTableDataContentPane(parentPane){
public boolean isNeedSummaryCaculateMethod(){
return false;
}
};
} else{
return Factory4TableDataContentPane.createTableDataContenetPaneWithPlotType(plot, parentPane);
}
}
/**
* 数据集数据改变
*/
public void fireTableDataChange() {
if (dataContentPane != null) {
dataContentPane.onSelectTableData(choosePane.getTableDataWrapper());
}
}
/**
* 清空数据集的设置
*/
public void clearTableDataSetting(){
if(dataContentPane != null){
dataContentPane.clearAllBoxList();
}
}
}

101
designer_chart/src/com/fr/design/mainframe/chart/gui/data/JSONDataPane.java

@ -1,101 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.data;
import com.fr.base.BaseUtils;
import com.fr.base.FRContext;
import com.fr.base.TableData;
import com.fr.chart.chartdata.JSONTableData;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.constants.UIConstants;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.mainframe.AbstractChartDataPane4Chart;
import javax.swing.*;
import javax.swing.border.LineBorder;
import java.awt.*;
import java.awt.event.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-15
* Time: 下午6:45
*/
public class JSONDataPane extends ChartDesignDataLoadPane {
private UITextField url = new UITextField();
private UIButton reviewButton;
private JSONTableData tableData;
public JSONDataPane(AbstractChartDataPane4Chart parentPane) {
super(parentPane);
initReviewButton();
url.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
if(e.getKeyChar() == KeyEvent.VK_ENTER){
tableData.setFilePath(url.getText());
fireChange();
}
}
});
this.setLayout(new BorderLayout(0, 0));
JPanel pane = new JPanel(new BorderLayout(LayoutConstants.HGAP_LARGE, 0));
pane.add(url, BorderLayout.CENTER);
pane.add(reviewButton, BorderLayout.EAST);
this.add(pane, BorderLayout.CENTER);
tableData = new JSONTableData(url.getText());
}
@Override
protected String title4PopupWindow() {
return null;
}
private void initReviewButton() {
reviewButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/search.png"));
reviewButton.setBorder(new LineBorder(UIConstants.LINE_COLOR));
reviewButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
tableData.setFilePath(url.getText());
fireChange();
//预览JSON数据
TableDataWrapper tableDataWrappe = getTableDataWrapper();
if (tableDataWrappe != null) {
try {
tableDataWrappe.previewData();
} catch (Exception e1) {
FRContext.getLogger().error(e1.getMessage(), e1);
}
}
}
});
}
@Override
public TableData getTableData() {
return tableData;
}
@Override
protected String getNamePrefix() {
return null;
}
/**
* 加载数据集
* @param tableData 数据集
*/
public void populateChartTableData(TableData tableData) {
if(tableData instanceof JSONTableData) {
url.setText(((JSONTableData) tableData).getFilePath());
this.tableData = (JSONTableData)tableData;
}
}
}

69
designer_chart/src/com/fr/design/mainframe/chart/gui/type/AreaPlotPane4ToolBar.java

@ -1,69 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.AreaIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-16
* Time: 下午5:55
*/
public class AreaPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int STACK_AREA_CHART = 0;
private static final int PERCENT_AREA_LINE_CHART = 1;
private static final int STACK_3D_AREA_CHART = 2;
private static final int PERCENT_3D_AREA_LINE_CHART = 3;
public AreaPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/area/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
String area = Inter.getLocText("FR-Chart-Type_Area");
String stack = Inter.getLocText("FR-Chart-Type_Stacked");
String percent = Inter.getLocText("FR-Chart-Use_Percent");
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), STACK_AREA_CHART, stack + area,this);
pane.setSelected(true);
demoList.add(pane);
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), PERCENT_AREA_LINE_CHART, percent + stack + area,this));
String td = Inter.getLocText("FR-Chart-Chart_3D");
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), STACK_3D_AREA_CHART, td + stack + area,this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), PERCENT_3D_AREA_LINE_CHART, td + percent + stack + area,this));
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = AreaIndependentChart.areaChartTypes;
Plot newPlot =barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In AreaChart");
}
return cloned;
}
}

72
designer_chart/src/com/fr/design/mainframe/chart/gui/type/BarPlotPane4ToolBar.java

@ -1,72 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.BarIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-16
* Time: 下午5:44
*/
public class BarPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int COLOMN_CHART = 0;
private static final int STACK_COLOMN_CHART = 1;
private static final int PERCENT_STACK_COLOMN_CHART = 2;
private static final int THREE_D_COLOMN_CHART = 3;
private static final int THREE_D_COLOMN_HORIZON_DRAW_CHART = 4;
private static final int THREE_D_STACK_COLOMN_CHART = 5;
private static final int THREE_D_PERCENT_STACK_COLOMN_CHART = 6;
public BarPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/bar/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), COLOMN_CHART, Inter.getLocText("FR-Chart-Type_Bar"),this);
pane.setSelected(true);
demoList.add(pane);
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), STACK_COLOMN_CHART, Inter.getLocText(new String[]{"FR-Chart-Type_Stacked","FR-Chart-Type_Bar"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), PERCENT_STACK_COLOMN_CHART, Inter.getLocText(new String[]{"FR-Chart-Use_Percent","FR-Chart-Type_Stacked","FR-Chart-Type_Bar"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_COLOMN_CHART, Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Type_Bar"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_COLOMN_HORIZON_DRAW_CHART, Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Type_Bar","FR-Chart-Direction_Horizontal"},new String[]{"","(",")"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_STACK_COLOMN_CHART,
Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Type_Stacked","FR-Chart-Type_Bar"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_PERCENT_STACK_COLOMN_CHART,
Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Use_Percent","FR-Chart-Type_Stacked","FR-Chart-Type_Bar"}),this));
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = BarIndependentChart.barChartTypes;
BarPlot newPlot = (BarPlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In BarChart");
}
return cloned;
}
}

72
designer_chart/src/com/fr/design/mainframe/chart/gui/type/BubblePlotPane4ToolBar.java

@ -1,72 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.base.FRContext;
import com.fr.chart.base.TextAttr;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.BubbleIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午1:59
*/
public class BubblePlotPane4ToolBar extends PlotPane4ToolBar {
private static final int BUBBLE_CHART = 0;
public BubblePlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/bubble/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), BUBBLE_CHART, Inter.getLocText("FR-Chart-Chart_BubbleChart"),this);
pane.setSelected(true);
demoList.add(pane);
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = BubbleIndependentChart.bubbleChartTypes;
BubblePlot newPlot = (BubblePlot) barChart[this.getSelectedIndex()].getPlot();
setChartFontAttr(newPlot);
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In BubbleChart");
}
return cloned;
}
/**
* 设置一些几本的属性
* @param plot 绘图区对象
*/
public static void setChartFontAttr(BubblePlot plot) {
if (plot.getxAxis() != null) {
TextAttr categoryTextAttr = new TextAttr();
categoryTextAttr.setFRFont(FRContext.getDefaultValues().getFRFont());
plot.getxAxis().setTextAttr(categoryTextAttr);
}
if (plot.getyAxis() != null) {
TextAttr valueTextAttr = new TextAttr();
valueTextAttr.setFRFont(FRContext.getDefaultValues().getFRFont());
plot.getyAxis().setTextAttr(valueTextAttr);
}
}
}

138
designer_chart/src/com/fr/design/mainframe/chart/gui/type/ChartDesignerImagePane.java

@ -1,138 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.type;
import com.fr.base.BaseUtils;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
/**
* 图表设计器工具栏上的图表类型选择用的单个小图面板
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-16
* Time: 下午4:24
*/
public class ChartDesignerImagePane extends JPanel implements MouseListener{
private static final int SIZE = 28;
private static final String NOMAL = "normal";
private static final String OVER = "over";
private static final String PRESS = "normal";
private String iconPath;
private int chartType;
private String state = NOMAL;//状态,按下、悬浮、正常
private Icon mode;
private boolean isSelected;
private PlotPane4ToolBar parent;
private ArrayList<ChangeListener> changeListeners = new ArrayList<ChangeListener>();
public ChartDesignerImagePane(String iconPath, int chartType, String tipName,PlotPane4ToolBar parent) {
this.iconPath = iconPath;
this.chartType = chartType;
this.isSelected = false;
addMouseListener(this);
this.setToolTipText(tipName);
this.parent = parent;
}
public Dimension getPreferredSize() {
return new Dimension(SIZE, SIZE);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
mode = BaseUtils.readIcon(iconPath + chartType + "_" + state + ".png");
if(this.isSelected){
Icon border =BaseUtils.readIcon("com/fr/design/images/toolbar/border.png");
border.paintIcon(this,g,0,0);
}
mode.paintIcon(this, g, 3, 3);
}
public void setSelected(boolean isSelected) {
this.isSelected = isSelected;
this.state = isSelected ? PRESS : NOMAL;
}
/**
* 鼠标点击
* @param e 事件
*/
public void mouseClicked(MouseEvent e) {
}
/**
* 鼠标按下
* @param e 事件
*/
public void mousePressed(MouseEvent e) {
parent.clearChoose();
if(parent.getSelectedIndex() != this.chartType){
parent.setSelectedIndex(this.chartType);
this.fireStateChange();
}
this.isSelected = true;
state = PRESS;
this.repaint();
}
/**
* 鼠标释放
* @param e 事件
*/
public void mouseReleased(MouseEvent e) {
}
/**
* 鼠标点击
* @param e 进入
*/
public void mouseEntered(MouseEvent e) {
if (this.isSelected) {
state = PRESS;
} else {
state = OVER;
}
this.repaint();
}
/**
* 鼠标点击
* @param e 离开
*/
public void mouseExited(MouseEvent e) {
if (this.isSelected) {
state = PRESS;
} else {
state = NOMAL;
}
this.repaint();
}
private void fireStateChange() {
for (int i = 0; i < changeListeners.size(); i++) {
changeListeners.get(i).stateChanged(new ChangeEvent(this));
}
}
/**
* 注册事件监听
* @param listener 监听
*/
public void registeChangeListener(ChangeListener listener){
changeListeners.add(listener);
}
}

73
designer_chart/src/com/fr/design/mainframe/chart/gui/type/ColumnPlotPane4ToolBar.java

@ -1,73 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.ColumnIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* 柱形图工具栏小图系列
* Created by IntelliJ IDEA.
* Author : DAISY
* Version: 6.5.6
* Date: 14-10-16
* Time: 下午5:21
*/
public class ColumnPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int COLOMN_CHART = 0;
private static final int STACK_COLOMN_CHART = 1;
private static final int PERCENT_STACK_COLOMN_CHART = 2;
private static final int THREE_D_COLOMN_CHART = 3;
private static final int THREE_D_COLOMN_HORIZON_DRAW_CHART = 4;
private static final int THREE_D_STACK_COLOMN_CHART = 5;
private static final int THREE_D_PERCENT_STACK_COLOMN_CHART = 6;
public ColumnPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/column/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), COLOMN_CHART, Inter.getLocText("FR-Chart-Type_Column"),this);
pane.setSelected(true);
demoList.add(pane);
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), STACK_COLOMN_CHART, Inter.getLocText(new String[]{"FR-Chart-Type_Stacked","FR-Chart-Type_Column"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), PERCENT_STACK_COLOMN_CHART,
Inter.getLocText(new String[]{"FR-Chart-Use_Percent","FR-Chart-Type_Stacked","FR-Chart-Type_Column"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_COLOMN_CHART, Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Type_Column"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_COLOMN_HORIZON_DRAW_CHART, Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Type_Column","FR-Chart-Direction_Horizontal"},new String[]{"","(",")"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_STACK_COLOMN_CHART,
Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Type_Stacked","FR-Chart-Type_Column"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_PERCENT_STACK_COLOMN_CHART,
Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Use_Percent","FR-Chart-Type_Stacked","FR-Chart-Type_Column"}),this));
return demoList;
}
protected Plot getSelectedClonedPlot(){
Chart[] barChart = ColumnIndependentChart.columnChartTypes;
BarPlot newPlot = (BarPlot)barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot)newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In ColumnChart");
}
return cloned;
}
}

54
designer_chart/src/com/fr/design/mainframe/chart/gui/type/CustomPlotPane4ToolBar.java

@ -1,54 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.CustomIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午1:39
*/
public class CustomPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int CUSTOM_NO_SHEET = 0;
public CustomPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/custom/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), CUSTOM_NO_SHEET, Inter.getLocText("ChartF-Comb_Chart"),this);
pane.setSelected(true);
demoList.add(pane);
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = CustomIndependentChart.combChartTypes;
CustomPlot newPlot = (CustomPlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In CustomChart");
}
return cloned;
}
}

54
designer_chart/src/com/fr/design/mainframe/chart/gui/type/DonutPlotPane4ToolBar.java

@ -1,54 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.DonutIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午2:18
*/
public class DonutPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int DONUT_CHART = 0; //2d圆环图
private static final int THREE_D_DONUT_CHART = 1; //3D圆环图
public DonutPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/donut/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), DONUT_CHART, Inter.getLocText("FR-Chart-Type_Donut"),this);
pane.setSelected(true);
demoList.add(pane);
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_DONUT_CHART, Inter.getLocText(new String[]{"FR-Chart-Chart_3D", "FR-Chart-Type_Donut"}),this));
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = DonutIndependentChart.donutChartTypes;
DonutPlot newPlot = (DonutPlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In DonutChart");
}
return cloned;
}
}

52
designer_chart/src/com/fr/design/mainframe/chart/gui/type/GanttPlotPane4ToolBar.java

@ -1,52 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.GanttIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : DAISY
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午2:16
*/
public class GanttPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int GANTT = 0;
public GanttPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/gantt/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), GANTT, Inter.getLocText("FR-Chart-Type_Gantt"),this);
pane.setSelected(true);
demoList.add(pane);
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = GanttIndependentChart.ganttChartTypes;
GanttPlot newPlot = (GanttPlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In GanttChart");
}
return cloned;
}
}

57
designer_chart/src/com/fr/design/mainframe/chart/gui/type/LinePlotPane4ToolBar.java

@ -1,57 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.LineIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : DAISY
* Version: 6.5.6
* Date: 14-10-16
* Time: 下午5:37
*/
public class LinePlotPane4ToolBar extends PlotPane4ToolBar {
private static final int LINE_CHART = 0;
public LinePlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/line/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), LINE_CHART, Inter.getLocText("I-LineStyle_Line"), this);
pane.setSelected(true);
demoList.add(pane);
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = LineIndependentChart.lineChartTypes;
LinePlot newPlot = (LinePlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In LineChart");
}
return cloned;
}
}

69
designer_chart/src/com/fr/design/mainframe/chart/gui/type/MeterPlotPane4ToolBar.java

@ -1,69 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.base.FRContext;
import com.fr.chart.base.TextAttr;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.MeterIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午2:08
*/
public class MeterPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int METER = 0;
private static final int BLUE_METER = 1;
private static final int SIMPLE_METER = 2;
public MeterPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/meter/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), METER, Inter.getLocText("FR-Chart-Type_Meter"),this);
pane.setSelected(true);
demoList.add(pane);
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), BLUE_METER, Inter.getLocText("FR-Chart-Type_Meter")+1,this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), SIMPLE_METER, Inter.getLocText("FR-Chart-Type_Meter")+2,this));
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = MeterIndependentChart.meterChartTypes;
MeterPlot newPlot = (MeterPlot) barChart[this.getSelectedIndex()].getPlot();
setChartFontAttr4MeterStyle(newPlot);
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In MeterChart");
}
return cloned;
}
/**
* 设置一些几本的属性
* @param plot 绘图区对象
*/
public static void setChartFontAttr4MeterStyle(MeterPlot plot) {
if(plot.getMeterStyle() != null){
plot.getMeterStyle().setTitleTextAttr(new TextAttr(FRContext.getDefaultValues().getFRFont()));
}
}
}

58
designer_chart/src/com/fr/design/mainframe/chart/gui/type/PiePlotPane4ToolBar.java

@ -1,58 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.PieIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-16
* Time: 下午5:52
*/
public class PiePlotPane4ToolBar extends PlotPane4ToolBar {
private static final int PIE_CHART = 0;
private static final int THREE_D_PIE_CHART = 1;
public PiePlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/pie/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), PIE_CHART, Inter.getLocText("I-PieStyle_Normal"),this);
pane.setSelected(true);
demoList.add(pane);
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_PIE_CHART,
Inter.getLocText(new String[]{"FR-Chart-Chart_3D", "I-PieStyle_Normal"}),this));
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = PieIndependentChart.pieChartTypes;
PiePlot newPlot = (PiePlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In PieChart");
}
return cloned;
}
}

134
designer_chart/src/com/fr/design/mainframe/chart/gui/type/PlotPane4ToolBar.java

@ -1,134 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.type;
import com.fr.base.FRContext;
import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.chartattr.Plot;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.design.mainframe.chart.ChartDesignEditPane;
import com.fr.general.ComparatorUtils;
import com.fr.js.NameJavaScriptGroup;
import com.fr.stable.Constants;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.util.List;
/**
* 图表设计器 工具栏面板
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-16
* Time: 下午5:17
*/
public abstract class PlotPane4ToolBar extends JPanel{
private static final int COM_GAP = 14;
protected List<ChartDesignerImagePane> typeDemo;
protected abstract String getTypeIconPath();
protected abstract List<ChartDesignerImagePane> initDemoList();
private int selectedIndex = 0;//默认选中第一个
private ChartDesigner chartDesigner;
private ChangeListener changeListener = new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
fireChange();
}
};
public PlotPane4ToolBar(ChartDesigner designer){
chartDesigner = designer;
typeDemo = initDemoList();
this.setLayout(new FlowLayout(FlowLayout.LEFT, COM_GAP, 0));
for(int i = 0; i < typeDemo.size(); i++) {
ChartDesignerImagePane tmp = typeDemo.get(i);
tmp.registeChangeListener(changeListener);
this.add(tmp);
}
this.setSelectedIndex(0);
}
/**
* 清除选中
*/
public void clearChoose(){
if(typeDemo == null){
return;
}
for(int i = 0; i < typeDemo.size(); i++) {
typeDemo.get(i).setSelected(false);
this.repaint();
}
}
public void setSelectedIndex(int selectedIndex){
clearChoose();
this.selectedIndex = selectedIndex;
typeDemo.get(selectedIndex).setSelected(true);
}
public int getSelectedIndex(){
return this.selectedIndex;
}
//子类覆盖
protected Plot getSelectedClonedPlot(){
return null;
}
/**
* 切换图表类型
*/
public void fireChange(){
ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection();
Chart chart =chartCollection.getSelectedChart();
chart.switchPlot(getSelectedClonedPlot());
resetChart(chart);
chartDesigner.clearToolBarStyleChoose();
chartDesigner.fireTargetModified();
ChartDesignEditPane.getInstance().populateSelectedTabPane();
}
protected void resetChart(Chart chart){
chart.setBorderStyle(Constants.LINE_NONE);
chart.setBorderColor(new Color(150, 150, 150));
chart.setBackground(null);
}
public Plot setSelectedClonedPlotWithCondition(Plot oldPlot){
Plot newPlot = getSelectedClonedPlot();
if(oldPlot != null && ComparatorUtils.equals(newPlot.getClass(), oldPlot.getClass())){
if(oldPlot.getHotHyperLink() != null){
NameJavaScriptGroup hotHyper = oldPlot.getHotHyperLink();
try {
newPlot.setHotHyperLink((NameJavaScriptGroup)hotHyper.clone());
} catch (CloneNotSupportedException e) {
FRContext.getLogger().error("Error in Hyperlink, Please Check it.", e);
}
}
newPlot.setConditionCollection(oldPlot.getConditionCollection());
newPlot.setSeriesDragEnable(oldPlot.isSeriesDragEnable());
if(newPlot.isSupportZoomCategoryAxis() && newPlot.getxAxis() != null) {
newPlot.getxAxis().setZoom(oldPlot.getxAxis().isZoom());
}
if(newPlot.isSupportTooltipInInteractivePane()) {
newPlot.setHotTooltipStyle(oldPlot.getHotTooltipStyle());
}
if(newPlot.isSupportAutoRefresh()) {
newPlot.setAutoRefreshPerSecond(oldPlot.getAutoRefreshPerSecond());
}
}
return newPlot;
}
}

51
designer_chart/src/com/fr/design/mainframe/chart/gui/type/RadarPlotPane4ToolBar.java

@ -1,51 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.RadarIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午2:02
*/
public class RadarPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int RADAR = 0;
public RadarPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/radar/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), RADAR, Inter.getLocText("FR-Chart-Type_Radar"),this);
pane.setSelected(true);
demoList.add(pane);
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = RadarIndependentChart.radarChartTypes;
RadarPlot newPlot = (RadarPlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In RadarChart");
}
return cloned;
}
}

53
designer_chart/src/com/fr/design/mainframe/chart/gui/type/RangePlotPane4ToolBar.java

@ -1,53 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.RangeIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午2:13
*/
public class RangePlotPane4ToolBar extends PlotPane4ToolBar {
private static final int RANGE = 0;
public RangePlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/range/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), RANGE, Inter.getLocText("ChartF-Range_Chart"),this);
pane.setSelected(true);
demoList.add(pane);
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = RangeIndependentChart.rangeChartTypes;
RangePlot newPlot = (RangePlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In RangeChart");
}
return cloned;
}
}

52
designer_chart/src/com/fr/design/mainframe/chart/gui/type/StockPlotPane4ToolBar.java

@ -1,52 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.StockIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午2:04
*/
public class StockPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int STOCK = 0;
public StockPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/stock/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), STOCK, Inter.getLocText("FR-Chart-Type_Stock"),this);
pane.setSelected(true);
demoList.add(pane);
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = StockIndependentChart.stockChartTypes;
StockPlot newPlot = (StockPlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In StockChart");
}
return cloned;
}
}

45
designer_chart/src/com/fr/design/mainframe/chart/gui/type/UserDefinedChartTypePane.java

@ -1,45 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.Chart;
/**
* Created by eason on 15/4/23.
*/
public abstract class UserDefinedChartTypePane extends AbstractChartTypePane{
protected String[] getTypeLayoutPath() {
return new String[0];
}
protected String[] getTypeLayoutTipName(){
return new String[0];
}
protected String[] getTypeIconPath(){
return new String[]{"/com/fr/design/images/chart/default.png"};
}
protected String[] getTypeTipName() {
return new String[]{title4PopupWindow()};
}
public void updateBean(Chart chart) {
}
public void populateBean(Chart chart){
typeDemo.get(0).isPressing = true;
checkDemosBackground();
}
/**
* 弹出界面的标题
* @return 标题
*/
public String title4PopupWindow(){
return "";
}
}

72
designer_chart/src/com/fr/design/mainframe/chart/gui/type/XYSCatterPlotPane4ToolBar.java

@ -1,72 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.base.FRContext;
import com.fr.chart.base.TextAttr;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.XYScatterIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午1:54
*/
public class XYSCatterPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int XYSCATTER_CHART = 0;
public XYSCatterPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/xyscatter/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), XYSCATTER_CHART, Inter.getLocText("FR-Chart-Type_XYScatter"),this);
pane.setSelected(true);
demoList.add(pane);
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = XYScatterIndependentChart.XYScatterChartTypes;
XYPlot newPlot = (XYPlot) barChart[this.getSelectedIndex()].getPlot();
setChartFontAttr(newPlot);
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In XYScatterChart");
}
return cloned;
}
/**
* 设置一些几本的属性
* @param plot 绘图区对象
*/
public static void setChartFontAttr(XYPlot plot) {
if (plot.getxAxis() != null) {
TextAttr categoryTextAttr = new TextAttr();
categoryTextAttr.setFRFont(FRContext.getDefaultValues().getFRFont());
plot.getxAxis().setTextAttr(categoryTextAttr);
}
if (plot.getyAxis() != null) {
TextAttr valueTextAttr = new TextAttr();
valueTextAttr.setFRFont(FRContext.getDefaultValues().getFRFont());
plot.getyAxis().setTextAttr(valueTextAttr);
}
}
}

38
designer_form/src/com/fr/design/mainframe/FormArea.java

@ -184,8 +184,8 @@ public class FormArea extends JComponent implements ScrollRulerComponent {
reCalculateRoot(screenValue, true);
} else {
// 组件间隔啊
int val = layout.getAcualInterval();
layout.addCompInterval(val);
// REPORT-2585 原有的逻辑导致嵌套的tab中的间隔加不上去,会在后续拖动的过程中出问题
reCalculateDefaultRoot(screenValue, true);
}
}
LayoutUtils.layoutContainer(root);
@ -355,6 +355,40 @@ public class FormArea extends JComponent implements ScrollRulerComponent {
START_VALUE = value;
}
}
/**
* 按照界面大小的百分比值调整root大小
* @param needCalculateParaHeight 是否需要调整参数界面高度
* @param value
*/
private void reCalculateDefaultRoot(double value, boolean needCalculateParaHeight) {
XLayoutContainer root = FormArea.this.designer.getRootComponent();
if (root.acceptType(XWFitLayout.class)) {
XWFitLayout layout = (XWFitLayout) root;
layout.setContainerPercent(1.0);
traverAndAdjust(layout, 0.0);
layout.adjustCreatorsWhileSlide(0.0);
// 拖动滑块,先将内部组件百分比大小计算,再计算容器大小
Dimension d = new Dimension(layout.getWidth(), layout.getHeight());
// 自适应布局的父层是border
if (layout.getParent() != null) {
int paraHeight = designer.getParaHeight();
if (needCalculateParaHeight && paraHeight > 0) {
designer.setParaHeight(paraHeight);
XWBorderLayout parent = (XWBorderLayout) layout.getParent();
parent.toData().setNorthSize(paraHeight);
parent.removeAll();
parent.add(designer.getParaComponent(),WBorderLayout.NORTH);
parent.add(designer.getRootComponent(),WBorderLayout.CENTER);
}
layout.getParent().setSize(d.width, d.height+paraHeight);
// 调整自适应布局大小后,同步调整参数界面和border大小,此时刷新下formArea
FormArea.this.validate();
}
}
}
//循环遍历布局,按百分比调整子组件大小
private void traverAndAdjust(XCreator creator,double percent){

Loading…
Cancel
Save