set = ExtraDesignClassManager.getInstance().getArray(PreviewProvider.MARK_STRING);
return ArrayUtils.addAll(new PreviewProvider[]{
- new PagePreview(), new WritePreview(), new ViewPreview()
+ new PagePreview(), new WritePreview(), new ViewPreview(), new WriteEnhancePreview()
}, set.toArray(new PreviewProvider[set.size()]));
}
diff --git a/designer/src/com/fr/design/mainframe/errorinfo/ErrorInfo.java b/designer/src/com/fr/design/mainframe/errorinfo/ErrorInfo.java
new file mode 100644
index 000000000..c10170649
--- /dev/null
+++ b/designer/src/com/fr/design/mainframe/errorinfo/ErrorInfo.java
@@ -0,0 +1,130 @@
+package com.fr.design.mainframe.errorinfo;
+
+import com.fr.base.FRContext;
+import com.fr.general.IOUtils;
+import com.fr.json.JSONException;
+import com.fr.json.JSONObject;
+import com.fr.stable.EncodeConstants;
+import com.fr.stable.ProductConstants;
+import com.fr.stable.StableUtils;
+import com.fr.stable.core.UUID;
+
+import java.io.*;
+import java.text.DateFormat;
+import java.util.Date;
+
+/**
+ * Created by Administrator on 2017/7/24 0024.
+ */
+public class ErrorInfo {
+
+ private String username;
+ private String uuid;
+ private String activekey;
+ private String uploadtime;
+ private String templateid;
+ private String logid;
+ private String log;
+
+ public ErrorInfo(String username, String uuid, String activekey) {
+ this.username = username;
+ this.uuid = uuid;
+ this.activekey = activekey;
+ this.uploadtime = dateToString();
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(String uuid) {
+ this.uuid = uuid;
+ }
+
+ public String getActivekey() {
+ return activekey;
+ }
+
+ public void setActivekey(String activekey) {
+ this.activekey = activekey;
+ }
+
+ public String getUploadtime() {
+ return uploadtime;
+ }
+
+ public void setUploadtime(String uploadtime) {
+ this.uploadtime = uploadtime;
+ }
+
+ public String getTemplateid() {
+ return templateid;
+ }
+
+ public void setTemplateid(String templateid) {
+ this.templateid = templateid;
+ }
+
+ public String getLogid() {
+ return logid;
+ }
+
+ public void setLogid(String logid) {
+ this.logid = logid;
+ }
+
+ public String getLog() {
+ return log;
+ }
+
+ public void setLog(String log) {
+ this.log = log;
+ }
+
+ private String dateToString(){
+ DateFormat df = FRContext.getDefaultValues().getDateTimeFormat();
+ return df.format(new Date());
+ }
+
+ /**
+ * 将出错对象存为json字符串, 并放到设计器缓存目录.
+ * 等下一次上传到云中心.
+ */
+ public void saveAsJSON(){
+ JSONObject jo = JSONObject.create();
+ try {
+ jo.put("username", username);
+ jo.put("uuid", uuid);
+ jo.put("activekey", activekey);
+ jo.put("templateid", templateid);
+ jo.put("uploadtime", uploadtime);
+ jo.put("logid", logid);
+ jo.put("log", log);
+ } catch (JSONException ignore) {
+ }
+
+ saveFileToCache(jo);
+ }
+
+ private void saveFileToCache(JSONObject jo) {
+ String content = jo.toString();
+ String fileName = UUID.randomUUID() + ErrorInfoUploader.SUFFIX;
+ File file = new File(StableUtils.pathJoin(ProductConstants.getEnvHome(), ErrorInfoUploader.FOLDER_NAME, fileName));
+ try {
+ StableUtils.makesureFileExist(file);
+ FileOutputStream out = new FileOutputStream(file);
+ InputStream in = new ByteArrayInputStream(content.getBytes(EncodeConstants.ENCODING_UTF_8));
+ IOUtils.copyBinaryTo(in, out);
+ out.close();
+ } catch (IOException ignore) {
+ }
+ }
+}
diff --git a/designer/src/com/fr/design/mainframe/errorinfo/ErrorInfoLogAppender.java b/designer/src/com/fr/design/mainframe/errorinfo/ErrorInfoLogAppender.java
new file mode 100644
index 000000000..1d4f65de5
--- /dev/null
+++ b/designer/src/com/fr/design/mainframe/errorinfo/ErrorInfoLogAppender.java
@@ -0,0 +1,139 @@
+package com.fr.design.mainframe.errorinfo;
+
+import com.fr.base.FRContext;
+import com.fr.base.io.IOFile;
+import com.fr.base.io.XMLReadHelper;
+import com.fr.design.DesignerEnvManager;
+import com.fr.general.FRLogLevel;
+import com.fr.general.FRLogManager;
+import com.fr.general.LogDuration;
+import com.fr.stable.StringUtils;
+import com.fr.stable.project.ProjectConstants;
+import com.fr.stable.xml.XMLPrintWriter;
+import com.fr.stable.xml.XMLableReader;
+import com.fr.web.core.SessionDealWith;
+import com.fr.web.core.SessionIDInfor;
+import org.apache.log4j.AppenderSkeleton;
+import org.apache.log4j.Level;
+import org.apache.log4j.spi.LoggingEvent;
+
+import java.io.InputStream;
+
+/**
+ * 收集设计器报错信息的appender.
+ *
+ * Created by Administrator on 2017/7/24 0024.
+ */
+public class ErrorInfoLogAppender extends AppenderSkeleton {
+
+ private static final int ERROR_LEN = 8;
+
+ // 缓存下不变的, 没必要频繁取.
+ private String username;
+ private String uuid;
+ private String activekey;
+
+ public ErrorInfoLogAppender() {
+ this.layout = new org.apache.log4j.PatternLayout("%d{HH:mm:ss} %t %p [%c] %m%n");
+
+ DesignerEnvManager envManager = DesignerEnvManager.getEnvManager();
+ this.username = envManager.getBBSName();
+ this.uuid = envManager.getUUID();
+ this.activekey = envManager.getActivationKey();
+ }
+
+ protected void append(LoggingEvent event) {
+ this.subAppend(event);
+ }
+
+ public boolean requiresLayout() {
+ return true;
+ }
+
+ public synchronized void close() {
+ if (this.closed) {
+ return;
+ }
+ this.closed = true;
+
+ }
+
+ public void subAppend(LoggingEvent event) {
+ Level level = event.getLevel();
+ // 只分析上传记录error以上的.
+ if (level.isGreaterOrEqual(FRLogLevel.ERROR)) {
+ String msg = this.layout.format(event);
+ // 这个id并不是一定会有的, 有就记录下, 说明是预览模板出的错.
+ String templateid = readTemplateID();
+ String logid = readLogID(msg);
+ ErrorInfo errorInfo = new ErrorInfo(username, uuid, activekey);
+ errorInfo.setTemplateid(templateid);
+ errorInfo.setLog(msg);
+ errorInfo.setLogid(logid);
+ errorInfo.saveAsJSON();
+ }
+ }
+
+ private String readLogID(String log) {
+ int dotIndex = log.lastIndexOf(":");
+ if (dotIndex != -1) {
+ int end = Math.min(dotIndex + ERROR_LEN, log.length());
+ String logid = log.substring(dotIndex + 1, end).trim();
+ try {
+ Long.parseLong(logid);
+ return logid;
+ } catch (Exception ignore) {
+
+ }
+ }
+
+ return StringUtils.EMPTY;
+ }
+
+ private String readTemplateID() {
+ LogDuration logDuration = FRLogManager.getSession();
+ if (logDuration == null) {
+ return StringUtils.EMPTY;
+ }
+
+ String sessionID = logDuration.getSessionID();
+ SessionIDInfor infor = SessionDealWith.getSessionIDInfor(sessionID);
+ if (infor == null) {
+ return StringUtils.EMPTY;
+ }
+
+ String bookPath = infor.getBookPath();
+ // 这个iofile只读一个templateid, 其他以后有需要再读.
+ IOFile file = new IOFile() {
+ @Override
+ public void readStream(InputStream in) throws Exception {
+ XMLableReader xmlReader = XMLReadHelper.createXMLableReader(in, XMLPrintWriter.XML_ENCODER);
+ xmlReader.readXMLObject(this);
+ xmlReader.close();
+ in.close();
+ }
+
+ @Override
+ public void readXML(XMLableReader reader) {
+ super.readXML(reader);
+ readDesign(reader);
+ }
+
+ @Override
+ protected String openTag() {
+ return StringUtils.EMPTY;
+ }
+
+ @Override
+ protected void mainContent(XMLPrintWriter writer) {
+ }
+ };
+ try {
+ file.readStream(FRContext.getCurrentEnv().readBean(bookPath, ProjectConstants.REPORTLETS_NAME));
+ return file.getTemplateID();
+ } catch (Exception ignore) {
+ }
+
+ return StringUtils.EMPTY;
+ }
+}
\ No newline at end of file
diff --git a/designer/src/com/fr/design/mainframe/errorinfo/ErrorInfoUploader.java b/designer/src/com/fr/design/mainframe/errorinfo/ErrorInfoUploader.java
new file mode 100644
index 000000000..0204d33a9
--- /dev/null
+++ b/designer/src/com/fr/design/mainframe/errorinfo/ErrorInfoUploader.java
@@ -0,0 +1,98 @@
+package com.fr.design.mainframe.errorinfo;
+
+import com.fr.general.*;
+import com.fr.general.http.HttpClient;
+import com.fr.json.JSONObject;
+import com.fr.stable.CodeUtils;
+import com.fr.stable.EnvChangedListener;
+import com.fr.stable.ProductConstants;
+import com.fr.stable.StableUtils;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.HashMap;
+
+/**
+ * Created by Administrator on 2017/7/24 0024.
+ */
+public class ErrorInfoUploader {
+
+ public static final String SUFFIX = ".json";
+ public static final String FOLDER_NAME = "errorInfo";
+
+ private static ErrorInfoUploader collector;
+
+ static {
+ GeneralContext.addEnvChangedListener(new EnvChangedListener() {
+ @Override
+ public void envChanged() {
+ FRLogger.getLogger().addLogAppender(new ErrorInfoLogAppender());
+ }
+ });
+ }
+
+ private ErrorInfoUploader() {
+ FRLogger.getLogger().addLogAppender(new ErrorInfoLogAppender());
+ }
+
+ public static ErrorInfoUploader getInstance() {
+ if (collector == null) {
+ collector = new ErrorInfoUploader();
+ }
+
+ return collector;
+ }
+
+ public void sendErrorInfo(){
+ //读取文件夹里的json, 加入上传队列中.
+ File folder = new File(StableUtils.pathJoin(ProductConstants.getEnvHome(), FOLDER_NAME));
+ if (!folder.exists()) {
+ return;
+ }
+
+ File[] files = folder.listFiles();
+ try {
+ for (File file : files) {
+ String filePath = file.getPath();
+ String suffix = filePath.substring(filePath.lastIndexOf("."));
+
+ if (suffix.endsWith(SUFFIX)) {
+ Thread.sleep(1000L);
+ String content = IOUtils.inputStream2String(new FileInputStream(file));
+ String url = SiteCenter.getInstance().acquireUrlByKind("design.error");
+ if (sendErroInfo(url, content)) {
+ file.delete();
+ }
+ }
+ }
+ } catch (Exception ignore) {
+
+ }
+ }
+
+ private boolean sendErroInfo(String url, String content) {
+ HashMap para = new HashMap<>();
+ String date = new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime());
+ para.put("token", CodeUtils.md5Encode(date, "", "MD5"));
+ para.put("content", content);
+ HttpClient httpClient = new HttpClient(url, para, true);
+ httpClient.asGet();
+
+ if (!httpClient.isServerAlive()) {
+ return false;
+ }
+
+ String res = httpClient.getResponseText();
+ boolean success;
+ try {
+ success = ComparatorUtils.equals(new JSONObject(res).get("status"), "success");
+ } catch (Exception ex) {
+ success = false;
+ }
+ return success;
+ }
+
+
+}
diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties
index b958853f3..b82720aa2 100644
--- a/designer_base/src/com/fr/design/locale/designer.properties
+++ b/designer_base/src/com/fr/design/locale/designer.properties
@@ -2005,6 +2005,24 @@ FR-Designer_AlphaFine_NoResult=no results
FR-Designer_ConnectionFailed=connection failed
FR-Designer_NoResult=No results
FR-Designer-AlphaFine_SetShortcuts=
+FR-Designer_Write_Enhance_Preview=Write Enhance PreviewFR-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
+FR-Designer_Data_Filter=Data Filter
+Default=Default
+FR-Base-Load_Resource_File=Load resource file
FR-Designer_Cell_Element=Cell Element
FR-Designer_Cell_Attributes=Cell Attributes
FR-Designer_Float_Element=Float Element
diff --git a/designer_base/src/com/fr/design/locale/designer_en_US.properties b/designer_base/src/com/fr/design/locale/designer_en_US.properties
index d88c8cbe2..8bd02f8a5 100644
--- a/designer_base/src/com/fr/design/locale/designer_en_US.properties
+++ b/designer_base/src/com/fr/design/locale/designer_en_US.properties
@@ -2005,6 +2005,25 @@ FR-Designer_AlphaFine_EnableAlphaFine=Enable AlphaFine
FR-Designer_AlphaFine_EnableInternet=Internet
FR-Designer_NoResult=No results
FR-Designer-AlphaFine_SetShortcuts=please press two key to set shortcut
+FR-Designer_Write_Enhance_Preview=Write Enhance PreviewFR-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_Can_not_use_FormatBursh=Can't use format painter in multiple selections
+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
+FR-Designer_Data_Filter=Data Filter
+Default=Default
+FR-Base-Load_Resource_File=Load Configuration File
FR-Designer_Cell_Element=Cell Element
FR-Designer_Cell_Attributes=Cell Attributes
FR-Designer_Float_Element=Float Element
diff --git a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties
index 7c85af3bd..b5157d4e5 100644
--- a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties
+++ b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties
@@ -641,8 +641,8 @@ FR-Server_Embedded_Server_Stop=\u5185\u8535\u30B5\u30FC\u30D0\u30FC-\u4E00\u6642
FR-Designer-Plugin_Detecting_Update=\u66F4\u65B0\u3092\u30C1\u30A7\u30C3\u30AF\u3057\u3066\u3044\u307E\u3059
HF-Whether_to_define_the_selected_type=\u9078\u629E\u3055\u308C\u305F\u30BF\u30A4\u30D7\u3092\u5B9A\u7FA9\u3057\u307E\u3059\u304B
StyleAlignment-Right=\u53F3\u8A70\u3081
-FR-Designer_Alignment-Style=\u30A2\u30E9\u30A4\u30F3\u30E1\u30F3\u30C8
-PageSetup-Title_Start_Column=\u91CD\u8907\u3059\u308B\u6A19\u984C\u5217
+FR-Designer_Alignment-Style=\u63C3\u3048\u65B9\u6CD5
+PageSetup-Title_Start_Column=\u91CD\u8907\u30D8\u30C3\u30C0\u30FC\u5217
Tree-Mutiple_Selection_Or_Not=\u8907\u6570\u9078\u629E
FR-Designer-Plugin_Search=\u691C\u7D22
Choose_Role=\u6A29\u9650\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB
@@ -777,13 +777,13 @@ Cannot-Add_To_This_Area=\u5730\u57DF\u306B\u306F\u8FFD\u52A0\u3067\u304D\u307E\u
Run=\u904B\u884C
Set_Submit_Condition=\u6761\u4EF6\u3092\u8A2D\u7F6E\u306B\u63D0\u51FA\u3059\u308B\u3053\u3068\u306B\u3057\u305F
FR-Base_Value=\u5024
-fileLocked_undeleted=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u304C\u30ED\u30C3\u30AF\u3055\u308C\u3066\u3044\u308B\u3001\u3042\u306A\u305F\u304C\u524A\u9664\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\uFF01
-Web_Apply=WEB\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3
-Refresh_Database=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u5237\u65B0
-Set_Row_Title_End=\u91CD\u8907\u3059\u308B\u7D42\u4E86\u884C\u3092\u8A2D\u5B9A
-FR-Utils-New_Folder=\u30D5\u30A1\u30A4\u30EB\u65B0\u898F\u4F5C\u6210
-BiasD-From-upper_left_to_lower_right=\u5DE6\u4E0A\u5074\u304B\u3089\u53F3\u4E0B\u5074\u3078\u5E83\u304C\u308B
-CapsLock=Caps Lock\u30AD\u30FC\u304C\u30AA\u30F3\u306B\u306A\u3063\u3066\u3044\u308B
+fileLocked_undeleted=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u304C\u30ED\u30C3\u30AF\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u524A\u9664\u3067\u304D\u307E\u305B\u3093\u3002OK\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3001\u30EA\u30B9\u30C8\u3092\u518D\u8AAD\u307F\u8FBC\u307F\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+Web_Apply=WEB\u30A2\u30D7\u30EA
+Refresh_Database=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u66F4\u65B0
+Set_Row_Title_End=\u91CD\u8907\u30D5\u30C3\u30BF\u30FC\u884C\u8A2D\u5B9A
+FR-Utils-New_Folder=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0\u30FC\u306E\u4F5C\u6210
+BiasD-From-upper_left_to_lower_right=\u5DE6\u4E0A\u5074\u304B\u3089\u53F3\u4E0B\u5074\u3078\u5E83\u3052\u308B
+CapsLock=Caps Lock\u304C\u30AA\u30F3\u306B\u306A\u3063\u3066\u3044\u308B
StyleFormat-Sample=\u4F8B
RWA-Smart_Add_Cell_Group=\u30A4\u30F3\u30C6\u30EA\u30B8\u30A7\u30F3\u30C8\u6DFB\u52A0\u30EC\u30A4\u30E4\u30FC\u7D44
MConfig-CancelButton=\u30AD\u30E3\u30F3\u30BB\u30EB
@@ -794,7 +794,7 @@ BackgroundTexture-GreenMarble=\u7DD1\u8272\u306E\u5927\u7406\u77F3
read_time_out=\u30ED\u30FC\u30C9\u306E\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8
JavaScript-Commit_to_Database=\u5165\u5EAB\u63D0\u51FA
DS-Relation_TableData=\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u95A2\u9023\u4ED8\u3051
-CellWrite-Page_Before_Row=\u884C\u524D\u306E\u6539\u9801
+CellWrite-Page_Before_Row=\u884C\u524D\u306E\u6539\u30DA\u30FC\u30B8
FR-Designer-Plugin_Load_Plugins_From_Server=\u30D7\u30E9\u30B0\u30A4\u30F3\u30DE\u30FC\u30B1\u30C3\u30C8\u304B\u3089\u30C7\u30FC\u30BF\u53D6\u5F97\u4E2D
D-Dispaly_Divide_Result_Set_into_Groups=resultset\u306E\u30B0\u30EB\u30FC\u30D7\u5206\u3051
Closed=\u9589\u9396\u6E08\u307F
@@ -886,7 +886,7 @@ Device=\u8A2D\u5099
M_Insert-Cell=\u30BB\u30EB\u8981\u7D20
Present-Formula_Present=\u516C\u5F0F\u30D5\u30A9\u30EB\u30E0
FRFont-Superscript=\u4E0A\u4ED8\u304D
-CellWrite-Page_Before_Column=\u5217\u524D\u306E\u6539\u9801
+CellWrite-Page_Before_Column=\u5217\u524D\u306E\u6539\u30DA\u30FC\u30B8
Golden=\u30B4\u30FC\u30EB\u30C7\u30F3
Preference-Support_Cell_Editor_Definition=\u30BB\u30EB\u30A8\u30C7\u30A3\u30BF\u30FC\u3092\u30B5\u30DD\u30FC\u30C8\u3059\u308B
M-Page_Preview=\u30DA\u30FC\u30B8\u5225\u30D7\u30EC\u30D3\u30E5\u30FC
@@ -997,8 +997,8 @@ Hyperlink-Web_link=\u30A6\u30A7\u30D6\u30EA\u30F3\u30AF
StyleAlignment-between_-90_and_90=-90\u304B\u308990\u307E\u3067\u306E\u7BC4\u56F2\u3067
FormulaD-Custom_Function=\u30E6\u30FC\u30B6\u5B9A\u7FA9\u95A2\u6570
FR-Designer_Integer=\u6574\u6570
-PageSetup-Finis_Start_Row=\u91CD\u8907\u3059\u308B\u7D42\u4E86\u884C
-RWA-Remove_Field=\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u30EA\u30E0\u30FC\u30D6
+PageSetup-Finis_Start_Row=\u91CD\u8907\u30D5\u30C3\u30BF\u30FC\u884C
+RWA-Remove_Field=\u30D5\u30A3\u30FC\u30EB\u30C9\u524A\u9664
Form-Desin_Width=\u30C7\u30B6\u30A4\u30F3\u5E45
No-tableData=\u623B\u3057\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u304C\u3042\u308A\u307E\u305B\u3093
Page_Total=\u5408\u8A08
@@ -1317,20 +1317,20 @@ FR-Base_Table=\u8868
Des-Remove_WorkSheet=\u9078\u629E\u3059\u308B\u5E33\u7968\u306B\u306F\u30C7\u30FC\u30BF\u304C\u3042\u308B\u304B\u3082\u3057\u308C\u307E\u305B\u3093\u304C\u3001\u5B8C\u5168\u306B\u524A\u9664\u3059\u308B\u5834\u5408\u3001
Rotation=\u56DE\u8EE2
Undefined=\u672A\u5B9A\u7FA9
-Support-Auto_Complete_Shortcut=\u81EA\u52D5\u3067\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC\u3092\u88DC\u3046
-Set_Column_Title_End=\u91CD\u8907\u3059\u308B\u7D42\u4E86\u5217\u3092\u8A2D\u5B9A
-Submit_Url=\u30A2\u30C9\u30EC\u30B9\u63D0\u51FA
-ReportServerP-Are_you_sure_to_delete_the_selected_printer=\u9078\u629E\u3055\u308C\u305F\u30D7\u30EA\u30F3\u30BF\u30FC\u3092\u524A\u9664\u3057\u3066
-long_data_can_not_show_fully=\u9577\u3044\u30C7\u30FC\u30BF\u304C\u5341\u5206\u306B\u767A\u63EE\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093
-Utils-Beyond_the_bottom_side_of_Border=\u4E0B\u9818\u57DF\u3092\u30AA\u30FC\u30D0\u30FC
-FR-Import-Export_PDF=PDF\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8
-Form-CheckBoxGroup=\u30D5\u30EC\u30FC\u30E0\u30BB\u30C3\u30C8\u3092\u8907\u6570\u9078\u629E
-Click-Me=\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u30B5\u30D7\u30E9\u30A4\u30BA\u304C\u3042\u308A\u307E\u3059\u3088\uFF01
-Hyperlink-Self=\u540C\u3058Frame(S)
-Tree-Select_Leaf_Only_Tips=\u30C1\u30A7\u30C3\u30AF\u3057\u306A\u3044\u5834\u5408\u3001\u623B\u308A\u5024\u306F\u5F53\u30CE\u30FC\u30C9\u3060\u3051\u3002
-StyleAlignment-Text_Rotation=\u30C6\u30AD\u30B9\u30C8\u65B9\u5411
-Format-Error=\u5165\u529B\u3057\u305F\u5024\u306E\u66F8\u5F0F\u304C\u4E0D\u6B63\u78BA\u3067\u3059
-Server-Stop=\u4E00\u6642\u505C\u6B62
+Support-Auto_Complete_Shortcut=\u81EA\u52D5\u88DC\u5B8C\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC
+Set_Column_Title_End=\u91CD\u8907\u30D5\u30C3\u30BF\u30FC\u5217\u8A2D\u5B9A
+Submit_Url=\u66F8\u304D\u8FBC\u307F\u30A2\u30C9\u30EC\u30B9
+ReportServerP-Are_you_sure_to_delete_the_selected_printer=\u9078\u629E\u3055\u308C\u305F\u30D7\u30EA\u30F3\u30BF\u3092\u524A\u9664\u3057\u307E\u3059\u304B
+long_data_can_not_show_fully=\u9577\u3044\u30C7\u30FC\u30BF\u306E\u8868\u793A\u306F\u4E0D\u5B8C\u5168
+Utils-Beyond_the_bottom_side_of_Border=\u4E0B\u306E\u5883\u754C\u3092\u8D85\u904E\u3057\u3066\u3044\u307E\u3059\u3002
+FR-Import-Export_PDF=PDF
+Form-CheckBoxGroup=\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30B0\u30EB\u30FC\u30D7
+Click-Me=\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u30B5\u30D7\u30E9\u30A4\u30BA\u304C\u3042\u308A\u307E\u3059\u3088!
+Hyperlink-Self=\u540C\u3058\u30D5\u30EC\u30FC\u30E0(S)
+Tree-Select_Leaf_Only_Tips=(\u30C1\u30A7\u30C3\u30AF\u304C\u306A\u3044\u5834\u5408\u3001\u5B50\u30CE\u30FC\u30C9\u3092\u542B\u307E\u306A\u3044\u9078\u629E\u306E\u30CE\u30FC\u30C9\u3060\u3051\u3092\u623B\u3059)
+StyleAlignment-Text_Rotation=\u6587\u5B57\u5217\u306E\u65B9\u5411
+Format-Error=\u5165\u529B\u5024\u306E\u66F8\u5F0F\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093
+Server-Stop=\u505C\u6B62
Preference-Setting_Grid=\u30B0\u30EA\u30C3\u30C9\u8A2D\u5B9A
ReportServerP-Add_Printer=\u30D7\u30EA\u30F3\u30BF\u30FC\u8FFD\u52A0
FR-Designer-Plugin_Active=\u4F7F\u7528\u958B\u59CB
@@ -1374,10 +1374,10 @@ Formula_Tips=\u5F0F\u306F "\
FR-Action_Copy=\u30B3\u30D4\u30FC
Compile_Success=\u7DE8\u96C6\u7FFB\u8A33\u306B\u6210\u529F\u3057\u307E\u3057\u305F
BackgroundTexture-RecycledPaper=\u518D\u751F\u7D19
-StyleAlignment-Single_Line=\u4E00\u884C\u3067\u8868\u793A
-Utils-Move_Down=\u4E0B\u3078\u79FB\u52D5
-Please_Set_Repeat_First=\u307E\u305A\u91CD\u8907\u3059\u308B\u6A19\u984C\u884C\u3068\u5217\u3092\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044
-Writer-ShortCuts_Setting=\u5831\u544A\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC\u8A2D\u5B9A
+StyleAlignment-Single_Line=1\u884C\u8868\u793A
+Utils-Move_Down=\u4E0B\u3078
+Please_Set_Repeat_First=\u91CD\u8907\u30D8\u30C3\u30C0\u30FC\u884C\u3068\u5217\u3092\u4E8B\u524D\u306B\u5B9A\u7FA9\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+Writer-ShortCuts_Setting=\u66F8\u304D\u8FBC\u307F\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC\u8A2D\u5B9A
Verify-Data_Verify=\u30C7\u30FC\u30BF\u691C\u8A3C
FR-mobile_analysis_style=\u89E3\u6790\u65B9\u5F0F
Confirm-Delete-File=\u9078\u629E\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F
@@ -1405,13 +1405,13 @@ LayerData=\u5E95\u5C42\u6570\u636E
Rename=\u540D\u79F0\u306E\u5909\u66F4
Widget-Load_By_Async=\u975E\u540C\u671F\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9
Shape=\u56F3\u5F62
-BindColumn-This_Condition_has_been_existed=\u5F53\u8A72\u6761\u4EF6\u306F\u5B58\u5728\u3057\u3066\u3044\u307E\u3059
-NS-exception_readError=\u30A8\u30E9\u30FC\u30B3\u30FC\u30C9\:11300005 \u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D5\u30A1\u30A4\u30EB\u89E3\u6790\u306B\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3057\u305F
-Set_Column_Title_Start=\u91CD\u8907\u3059\u308B\u6A19\u984C\u5217\u3092\u8A2D\u5B9A
-Fri=\u91D1
-M_Report-Report_Parameter=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC
-REPORTLETS=\u8907\u6570\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u30EB\u30FC\u30C8\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u306B\u30A2\u30AF\u30BB\u30B9
-WLayout-Card-ToolTip=\u30AB\u30FC\u30C9\u306E\u30EC\u30A4\u30A2\u30A6\u30C8\u306F\u3001\u30EC\u30A4\u30A2\u30A6\u30C8\u30B3\u30F3\u30C6\u30CA\u5185\u306E\u4ED6\u306E\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u6570
+BindColumn-This_Condition_has_been_existed=\u3053\u306E\u6761\u4EF6\u306F\u65E2\u306B\u3042\u308A\u307E\u3059
+NS-exception_readError=\u30A8\u30E9\u30FC\u30B3\u30FC\u30C9\:1305 \u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D5\u30A1\u30A4\u30EB\u89E3\u6790\u30A8\u30E9\u30FC
+Set_Column_Title_Start=\u91CD\u8907\u30D8\u30C3\u30C0\u30FC\u5217\u8A2D\u5B9A
+Fri=\u91D1\u66DC\u65E5
+M_Report-Report_Parameter=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D1\u30E9\u30E1\u30FC\u30BF
+REPORTLETS=\u8907\u6570\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306B\u30A2\u30AF\u30BB\u30B9\u3059\u308B\u30D1\u30B9\u306E\u30D1\u30E9\u30E1\u30FC\u30BF
+WLayout-Card-ToolTip=\u30AB\u30FC\u30C9\u578B\u30EC\u30A4\u30A2\u30A6\u30C8\u3002\u3053\u306E\u30EC\u30A4\u30A2\u30A6\u30C8\u30B3\u30F3\u30C6\u30CA\u306B\u8907\u6570\u306E\u4ED6\u306E\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u8FFD\u52A0\u3067\u304D\u307E\u3059\u3002
M-Popup_ChartType=\u30B0\u30E9\u30D5\u30BF\u30A4\u30D7
Please-Wait=\u5C11\u3005\u304A\u5F85\u3061\u304F\u3060\u3055\u3044
FR-Designer-Form-ToolBar_Widget=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB
@@ -1530,7 +1530,7 @@ M_Insert-Barcode=\u30D0\u30FC\u30B3\u30FC\u30C9
Bounds=\u30DC\u30FC\u30C0\u30FC
FR-Designer-Undo_All_Authority_Operations=\u524D\u56DE\u306E\u6A29\u9650\u7DE8\u96C6\u6642\u306E\u5168\u3066\u306E\u30AA\u30DA\u30EC\u30FC\u30B7\u30E7\u30F3\u3092\u64A4\u56DE\u3059
Datasource-Context=\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8
-CellWrite-Page_After_Column=\u5217\u5F8C\u306E\u6539\u9801
+CellWrite-Page_After_Column=\u5217\u5F8C\u306E\u6539\u30DA\u30FC\u30B8
FR-Designer_Cancel=\u30AD\u30E3\u30F3\u30BB\u30EB
Button-Group-Display-Columns=\u5217\u306E\u6570\u3092\u8868\u793A\u3059\u308B
Widget-Height=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u9AD8\u3055
@@ -1736,11 +1736,11 @@ No_Editor_Property_Definition=\u5F53\u8A72\u30A8\u30C7\u30A3\u30BF\u306F\u5C5E\u
Env-Remote_Server=\u30EA\u30E2\u30FC\u30C8\u30B5\u30FC\u30D0\u30FC
FR-Utils_Background=\u80CC\u666F
FR-Designer-Plugin_Warning=\u8B66\u544A
-Server-version-info=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D5\u30A1\u30A4\u30EB\u306F\u3001\u5F8C\u3067\u8A2D\u8A08\u3084\u5143\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u5C5E\u6027\u3092\u5931\u3046\u30EA\u30B9\u30AF\u306B
-CellWrite-Page_After_Row=\u884C\u5F8C\u306E\u6539\u9801
-HF-Right_Section=\u53F3\u5074\u30BB\u30AF\u30B7\u30E7\u30F3
-PageSetup-Title_Start_Row=\u91CD\u8907\u3059\u308B\u6A19\u984C\u884C
-From=\u7B2C\u3000\u304B\u3089
+Server-version-info=\u958B\u3044\u305F\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D5\u30A1\u30A4\u30EB\u306F\u3001\u4E0A\u4F4D\u30A8\u30C7\u30A3\u30B7\u30E7\u30F3\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u3067\u4F5C\u6210\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u4E0A\u4F4D\u30A8\u30C7\u30A3\u30B7\u30E7\u30F3\u3067\u4F5C\u6210\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F\u3068\u30A8\u30E9\u30FC\u306E\u767A\u751F\u539F\u56E0\u3068\u306A\u308B\u307B\u304B\u3001\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u6A5F\u80FD\u3084\u5C5E\u6027\u306E\u4E00\u90E8\u3092\u5931\u3046\u6050\u308C\u304C\u3042\u308A\u307E\u3059\u3002\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u4F5C\u6210\u7528\u306E\u30C7\u30B6\u30A4\u30CA\u30FC\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u3001\u914D\u5099\u3055\u308C\u308B\u30A8\u30C7\u30A3\u30B7\u30E7\u30F3\u3088\u308A\u3082\u4E0B\u4F4D\u306E\u30A8\u30C7\u30A3\u30B7\u30E7\u30F3\u3067\u3042\u308B\u3053\u3068\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+CellWrite-Page_After_Row=\u884C\u5F8C\u306E\u6539\u30DA\u30FC\u30B8
+HF-Right_Section=\u53F3\u5074
+PageSetup-Title_Start_Row=\u91CD\u8907\u30D8\u30C3\u30C0\u30FC\u884C
+From=From
Preference-Grid_Line_Color=\u30B0\u30EA\u30C3\u30C9\u7DDA\u306E\u8272
RowTo=\u884C\u304B\u3089\u7B2C\u307E\u3067
FR-Designer_ReportColumns-Repeat_Column=\u5217\u9806\u5E8F\u3092\u30B3\u30D4\u30FC
@@ -1819,8 +1819,8 @@ FR-mobile_native_analysis=\u4E00\u6B21\u89E3\u6790
HighLight=\u30CF\u30A4\u30E9\u30A4\u30C8
FR-Designer_Dropdown-More-Preview=\u4E0B\u62C9\u83B7\u53D6\u66F4\u591A\u9884\u89C8\u65B9\u5F0F
local=\u30ED\u30FC\u30AB\u30EB
-FR-Designer_Gradation=\u69CB\u6210
-PageSetup-Finis_Start_Column=\u91CD\u8907\u3059\u308B\u7D42\u4E86\u5217
+FR-Designer_Gradation=\u30EC\u30D9\u30EB
+PageSetup-Finis_Start_Column=\u91CD\u8907\u30D5\u30C3\u30BF\u30FC\u5217
Env-Invalid_User_and_Password=\u7121\u52B9\u306A\u30E6\u30FC\u30B6\u30FC\u540D\u307E\u305F\u306F\u30D1\u30B9\u30EF\u30FC\u30C9\u3067\u3059
FR-Designer-Plugin_All_Plugins=\u5168\u3066\u306E\u30D7\u30E9\u30B0\u30A4\u30F3
FR-Designer_Prepare_Export=\u5C0E\u51FA\u3092\u958B\u59CB\u3057\u3066\u3044\u307E\u3059\u3002\u304A\u5F85\u3061\u304F\u3060\u3055\u3044
@@ -1933,16 +1933,16 @@ Sun=\u65E5
FR-Designer_ToolBar_Bottom=\u30D5\u30C3\u30BF\u30FC\u30C4\u30FC\u30EB\u30D0\u30FC
Widget-Width=\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u5E45
Series_Name=\u7CFB\u5217\u540D
-Set_Row_Title_Start=\u91CD\u8907\u3059\u308B\u6A19\u984C\u884C\u3092\u8A2D\u5B9A
-HF-Default_Page=\u30C7\u30D5\u30A9\u30EB\u30C8\u30DA\u30FC\u30B8
-Env_Des=\u30ED\u30B0\u30A4\u30F3\u74B0\u5883\u4E2D\u306E\u5E33\u7968\u5DE5\u7A0B\u306B\u6A29\u9650\u3092\u4ED8\u4E0E\u3059\u308B\u5834\u5408\u3001\u30E6\u30FC\u30B6\u30FC\u540D\u3068\u30D1\u30B9\u30EF\u30FC\u30C9\u306E\u8A18\u5165\u306F\u5FC5\u305A
-Widget-User_Defined=\u30D7\u30EC\u5B9A\u7FA9
-Url_location=\u7D76\u5BFE\u30EB\u30FC\u30C8
-Disk_File=\u30CF\u30FC\u30C9\u30C7\u30A3\u30B9\u30AF\u30D5\u30A1\u30A4\u30EB
-Inside=\u5185\u90E8
-FR-Designer_filedChosen=
-ServerM-Predefined_Styles=\u30D7\u30EC\u5B9A\u7FA9\u30B9\u30BF\u30A4\u30EB
-is_need_word_adjust=\u884C\u306E\u9AD8\u3055\u3092\u56FA\u5B9A\u305B\u305A\u5C0E\u51FA
+Set_Row_Title_Start=\u91CD\u8907\u30D8\u30C3\u30C0\u30FC\u884C\u8A2D\u5B9A
+HF-Default_Page=\u65E2\u5B9A\u30DA\u30FC\u30B8
+Env_Des=\u30ED\u30B0\u30A4\u30F3\u74B0\u5883\u4E2D\u306E\u5E33\u7968\u5DE5\u7A0B\u306B\u6A29\u9650\u3092\u4ED8\u4E0E\u3059\u308B\u5834\u5408\u3001\u30E6\u30FC\u30B6\u30FC\u540D\u3068\u30D1\u30B9\u30EF\u30FC\u30C9\u306E\u8A18\u5165\u306F\u5FC5\u305A\u5BFE\u5FDC\u3059\u308B\u30ED\u30B0\u30A4\u30F3\u74B0\u5883\u306E\u30E6\u30FC\u30B6\u30FC\u3068\u30D1\u30B9\u30EF\u30FC\u30C9\u3067\u306A\u3051\u308C\u3070\u306A\u308A\u307E\u305B\u3093\u3002
+Widget-User_Defined=\u4E8B\u524D\u5B9A\u7FA9
+Url_location=\u7D76\u5BFE\u30D1\u30B9
+Disk_File=\u30D5\u30A1\u30A4\u30EB
+Inside=\u5185\u5074
+FR-Designer_filedChosen=\u4F9D\u5B58\u30D5\u30A3\u30FC\u30EB\u30C9
+ServerM-Predefined_Styles=\u4E8B\u524D\u5B9A\u7FA9\u30B9\u30BF\u30A4\u30EB
+is_need_word_adjust=\u884C\u306E\u9AD8\u3055\u3092\u56FA\u5B9A\u3057\u306A\u3044
Background-Null=\u80CC\u666F\u306A\u3057
PageSetup-Vertically=\u5782\u76F4\u4E2D\u592E\u63C3\u3048
FR-Designer_Root=\u30EB\u30FC\u30C8\u30CE\u30FC\u30C9
@@ -1976,11 +1976,36 @@ ColumnSpan=\u5217\u7BC4\u56F2
StyleAlignment-Bottom=\u4E0B\u8A70\u3081
Read_failure=\u8AAD\u307F\u306B\u969C\u5BB3\u304C\u767A\u751F\u3059\u308B\u3068\u3001\u30BD\u30FC\u30B9\u00B7\u30D5\u30A1\u30A4\u30EB\u304C\u7834\u640D\u3057\u3066\u3044\u308B
Verify-Verify=\u30C7\u30FC\u30BF\u691C\u8A3C
-FR-Designer-Widget-Style_Title_Format=\u6A19\u984C\u66F8\u5F0F
-FR-Designer_Edit_String_To_Formula=\u30AD\u30E3\u30E9\u30AF\u30BF\u30FC\u6587\u5B57\u5217\u3092\u7DE8\u96C6\u3057\u3066\u516C\u5F0F\u3068\u3059\u308B\u304B\u5426\u304B
-FR-Base_UnSignIn=\ \u672A\u30ED\u30B0\u30A4\u30F3
-Every=\u6BCF
-CellWrite-Preview_Cell_Content=\u30BB\u30EB\u306E\u5185\u5BB9\u3092\u30D7\u30EC\u30D3\u30E5\u30FC\u3059\u308B
+FR-Designer-Widget-Style_Title_Format=\u30BF\u30A4\u30C8\u30EB\u66F8\u5F0F
+FR-Designer_Edit_String_To_Formula=\u6587\u5B57\u5217\u3092\u6570\u5F0F\u306B\u7DE8\u96C6\u3059\u308B\u304B
+FR-Base_UnSignIn=\ \u672A\u30ED\u30B0\u30A4\u30F3
+Every=\u6BCE
+CellWrite-Preview_Cell_Content=\u30BB\u30EB\u5185\u5BB9
+FormulaD-Data_Fields=\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9
+FormulaD-Data_Fields=\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9
+FR-Designer_Permissions=\u6A29\u9650
+FR-Designer_Form_Button=\u30DC\u30BF\u30F3
+FR-Designer_WF_Name=\u540D
+FR-Designer_Role=\u5F79\u5272
+FR-Designer_Double=\u5C0F\u6570
+FR-Designer_Query=\u30AF\u30A8\u30EA
+FR-Designer_Font=\u30D5\u30A9\u30F3\u30C8
+FR-Designer_Confirm=OK
+FR-Designer_Parameter=\u30D1\u30E9\u30E1\u30FC\u30BF
+FR-Designer-Plugin_Plugin=\u30D7\u30E9\u30B0\u30A4\u30F3
+FR-Designer_Background=\u80CC\u666F
+Template=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8
+FR-Designer_Original_Marked_Filed=\u521D\u671F\u30DE\u30FC\u30AF\u30D5\u30A3\u30FC\u30EB\u30C9
+FR-Designer_Build_Tree_Accord_Marked_Filed_Length=\u30DE\u30FC\u30AF\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u9577\u3055\u3088\u308A\u30C4\u30EA\u30FC\u3092\u69CB\u7BC9\u3059\u308B
+FR-Designer_Tree_Data_Field=\u30C4\u30EA\u30FC\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9
+FR-Designer_Parent_Marked_Field=\u89AA\u30DE\u30FC\u30AF\u30D5\u30A3\u30FC\u30EB\u30C9
+FR-Designer_Build_Tree_Accord_Parent_Marked_Filed=\u89AA\u30DE\u30FC\u30AF\u30D5\u30A3\u30FC\u30EB\u30C9\u3088\u308A\u30C4\u30EA\u30FC\u3092\u69CB\u7BC9\u3059\u308B
+FR-Product_Demo=\u88FD\u54C1\u30C7\u30E2
+FR-Designer_Data_Filter=\u30C7\u30FC\u30BF\u30D5\u30A3\u30EB\u30BF
+FR-Designer_Can_not_use_FormatBursh=\u9023\u7D9A\u3057\u306A\u3044\u8907\u6570\u9818\u57DF\u3067\u306F\u66F8\u5F0F\u30B3\u30D4\u30FC\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
+Default=\u65E2\u5B9A
+FR-Base-Load_Resource_File=\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u30ED\u30FC\u30C9
+
FormulaD-Data_Fields=\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9
FR-Designer_Cell_Element=\u30BB\u30EB\u8981\u7D20
FR-Designer_Cell_Attributes=\u30BB\u30EB\u5C5E\u6027
diff --git a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties
index dac296a5e..44b825ce7 100644
--- a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties
+++ b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties
@@ -1982,6 +1982,30 @@ 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
+FR-Designer_Data_Filter=\uB370\uC774\uD130\uC120\uBCC4
+Default=\uAE30\uBCF8
+FR-Base-Load_Resource_File=\uB85C\uB529\uAD6C\uC131\uD30C\uC77C
+FormulaD-Data_Fields=\uB370\uC774\uD130\uD56D\uBAA9
FR-Designer_Cell_Element=\uC140\uC694\uC18C
FR-Designer_Cell_Attributes=\uC140\uC18D\uC131
FR-Designer_Float_Element=\uD638\uBC84\uC694\uC18C
diff --git a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties
index 7da10e611..7dea8a6a8 100644
--- a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties
+++ b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties
@@ -2003,6 +2003,26 @@ FR-Designer_AlphaFine_NoResult=\u6682\u65E0\u76F8\u5173\u5185\u5BB9
FR-Designer_ConnectionFailed=\u94FE\u63A5\u5931\u8D25
FR-Designer_NoResult=\u6682\u4E0D\u652F\u6301\u663E\u793A
FR-Designer-AlphaFine_SetShortcuts=\u8BF7\u76F4\u63A5\u5728\u952E\u76D8\u4E0A\u6309\u4E24\u4E2A\u7EC4\u5408\u952E
+FR-Designer_Write_Enhance_Preview=\u65B0\u586B\u62A5\u9884\u89C8
+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
+FR-Designer_Data_Filter=\u6570\u636E\u7B5B\u9009
+Default=\u9ED8\u8BA4
+FR-Base-Load_Resource_File=\u52A0\u8F7D\u914D\u7F6E\u6587\u4EF6
+
FR-Designer_Cell_Element=\u5355\u5143\u683C\u5143\u7D20
FR-Designer_Cell_Attributes=\u5355\u5143\u683C\u5C5E\u6027
FR-Designer_Float_Element=\u60AC\u6D6E\u5143\u7D20
diff --git a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties
index ba5a858dc..412bcf25c 100644
--- a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties
+++ b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties
@@ -2004,6 +2004,27 @@ FR-Designer_AlphaFine_NoResult=\u66AB\u7121\u76F8\u95DC\u5167\u5BB9
FR-Designer_ConnectionFailed=\u93C8\u63A5\u5931\u6557
FR-Designer_NoResult=\u66AB\u4E0D\u652F\u6301\u986F\u793A
FR-Designer-AlphaFine_SetShortcuts=\u8ACB\u76F4\u63A5\u5728\u9375\u76E4\u4E0A\u6309\u5169\u500B\u7D44\u5408\u9375
+FR-Designer_Write_Enhance_Preview=\u65B0\u586B\u5831\u9810\u89BD
+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_Can_not_use_FormatBursh=\u7121\u6CD5\u4F7F\u7528\u8907\u88FD\u683C\u5F0F
+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
+FR-Designer_Data_Filter=\u8CC7\u6599\u7BE9\u9078
+Default=\u9810\u8A2D
+FR-Base-Load_Resource_File=\u52A0\u8F09\u914D\u7F6E\u6A94\u6848
+
FR-Designer_Cell_Element=\u5132\u5B58\u683C\u5143\u7D20
FR-Designer_Cell_Attributes=\u5132\u5B58\u683C\u5C6C\u6027
FR-Designer_Float_Element=\u61F8\u6D6E\u5143\u7D20
diff --git a/designer_base/src/com/fr/design/mainframe/loghandler/LogHandlerBar.java b/designer_base/src/com/fr/design/mainframe/loghandler/LogHandlerBar.java
index eeba6c2fd..f0caeb6e4 100644
--- a/designer_base/src/com/fr/design/mainframe/loghandler/LogHandlerBar.java
+++ b/designer_base/src/com/fr/design/mainframe/loghandler/LogHandlerBar.java
@@ -1,23 +1,16 @@
package com.fr.design.mainframe.loghandler;
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.Insets;
-import java.awt.ItemSelectable;
-import java.awt.LayoutManager;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
-
-import javax.swing.BorderFactory;
-import javax.swing.JPanel;
-import javax.swing.Timer;
-
import com.fr.base.BaseUtils;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.general.Inter;
+import com.fr.stable.script.Atom;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.util.concurrent.atomic.AtomicBoolean;
public class LogHandlerBar extends JPanel implements ItemSelectable {
@@ -33,8 +26,6 @@ public class LogHandlerBar extends JPanel implements ItemSelectable {
private int SERVERNUM = 0;
private boolean isWithSerious;
- private int i;
- private Timer timer;
public LogHandlerBar() {
this(null);
@@ -48,17 +39,17 @@ public class LogHandlerBar extends JPanel implements ItemSelectable {
clear.setMargin(null);
clear.setOpaque(false);
clear.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
- clear.setToolTipText(Inter.getLocText("Clear_All"));
+ clear.setToolTipText(Inter.getLocText("FR-Designer_Clear_All"));
selectedall = new UIButton(BaseUtils.readIcon("com/fr/design/images/log/selectedall.png"));
selectedall.setMargin(null);
selectedall.setOpaque(false);
selectedall.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
- selectedall.setToolTipText(Inter.getLocText("Select_All"));
+ selectedall.setToolTipText(Inter.getLocText("FR-Designer_Select_All"));
set = new UIButton(BaseUtils.readIcon("com/fr/design/images/log/setting.png"));
set.setMargin(null);
set.setOpaque(false);
set.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
- set.setToolTipText(Inter.getLocText("Set"));
+ set.setToolTipText(Inter.getLocText("FR-Designer_Set"));
this.add(clear);
this.add(selectedall);
@@ -94,29 +85,14 @@ public class LogHandlerBar extends JPanel implements ItemSelectable {
timerPaint();
}
- public synchronized void timerPaint() {
- isWithSerious = true;
- timer = new Timer(500, null);
- ActionListener taskAction = new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- if (i < 5) {
- isWithSerious = i % 2 == 0 ? true : false;
- repaint();
- } else if (i == 5) {
- if (timer == null)
- return;
- timer.stop();
- timer = null;
- i = 0;
- isWithSerious = true;
- return;
- }
- i++;
- }
- };
- if (timer != null) {
- timer.addActionListener(taskAction);
- timer.start();
+
+ private AtomicBoolean painting = new AtomicBoolean(false);
+
+ public void timerPaint() {
+ if(!painting.get()) {
+ painting.set(true);
+ repaint();
+ painting.set(false);
}
}
@@ -197,11 +173,16 @@ public class LogHandlerBar extends JPanel implements ItemSelectable {
Insets insets = target.getInsets();
int top = insets.top;
int right = target.getWidth() - insets.right;
- clear.setBounds(right - 130, top + 4, clear.getPreferredSize().width, clear.getPreferredSize().height);
- selectedall.setBounds(right - 100, top + 4, selectedall.getPreferredSize().width, selectedall.getPreferredSize().height);
- set.setBounds(right - 70, top + 4, set.getPreferredSize().width, set.getPreferredSize().height);
+ clear.setBounds(right - CLEAR_OFFSET, top + TOP_OFFSET, clear.getPreferredSize().width, clear.getPreferredSize().height);
+ selectedall.setBounds(right - SELECT_OFFSET, top + TOP_OFFSET, selectedall.getPreferredSize().width, selectedall.getPreferredSize().height);
+ set.setBounds(right - SET_OFFSET, top + TOP_OFFSET, set.getPreferredSize().width, set.getPreferredSize().height);
}
+
+ private static final int CLEAR_OFFSET = 130;
+ private static final int TOP_OFFSET = 4;
+ private static final int SELECT_OFFSET = 100;
+ private static final int SET_OFFSET = 70;
}
}
\ No newline at end of file
diff --git a/designer_base/src/com/fr/design/preview/WriteEnhancePreview.java b/designer_base/src/com/fr/design/preview/WriteEnhancePreview.java
new file mode 100644
index 000000000..71705e963
--- /dev/null
+++ b/designer_base/src/com/fr/design/preview/WriteEnhancePreview.java
@@ -0,0 +1,40 @@
+package com.fr.design.preview;
+
+import com.fr.base.io.IOFile;
+import com.fr.design.fun.impl.AbstractPreviewProvider;
+import com.fr.general.Inter;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by loy on 2017/7/7.
+ */
+public class WriteEnhancePreview extends AbstractPreviewProvider {
+ @Override
+ public String nameForPopupItem() {
+ return Inter.getLocText("FR-Designer_Write_Enhance_Preview");
+ }
+
+ @Override
+ public String iconPathForPopupItem() {
+ return "com/fr/design/images/buttonicon/writes.png";
+ }
+
+ @Override
+ public String iconPathForLarge() {
+ return "com/fr/design/images/buttonicon/writeb24.png";
+ }
+
+ @Override
+ public int previewTypeCode() {
+ return IOFile.WRITE_PREVIEW_TYPE;
+ }
+
+ @Override
+ public Map parametersForPreview() {
+ Map map = new HashMap();
+ map.put("op", "write_ex");
+ return map;
+ }
+}
diff --git a/designer_base/src/com/fr/start/BaseDesigner.java b/designer_base/src/com/fr/start/BaseDesigner.java
index f0036c329..eb44ec0e3 100644
--- a/designer_base/src/com/fr/start/BaseDesigner.java
+++ b/designer_base/src/com/fr/start/BaseDesigner.java
@@ -17,13 +17,15 @@ import com.fr.design.fun.impl.GlobalListenerProviderManager;
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.*;
+import com.fr.general.ComparatorUtils;
+import com.fr.general.FRLogger;
+import com.fr.general.Inter;
+import com.fr.general.ModuleContext;
import com.fr.plugin.PluginCollector;
import com.fr.plugin.manage.PluginManager;
import com.fr.stable.*;
@@ -66,9 +68,6 @@ 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) {
diff --git a/designer_chart/src/com/fr/design/chart/report/GisMapTableDataContentPane.java b/designer_chart/src/com/fr/design/chart/report/GisMapTableDataContentPane.java
index 5a2f3a4b9..e9aef9d97 100644
--- a/designer_chart/src/com/fr/design/chart/report/GisMapTableDataContentPane.java
+++ b/designer_chart/src/com/fr/design/chart/report/GisMapTableDataContentPane.java
@@ -74,6 +74,12 @@ public class GisMapTableDataContentPane extends FurtherBasicBeanPane(new String[]{Inter.getLocText("Chart-Gis_Address"), Inter.getLocText("Chart-Gis_LatLng")});
lnglatOrder = new UIButtonGroup(new String[]{Inter.getLocText("Chart-Lng_First"),Inter.getLocText("Chart-Lat_First")});
+ addressType.addChangeListener(new ChangeListener() {
+ @Override
+ public void stateChanged(ChangeEvent e) {
+ orderPane.setVisible(addressType.getSelectedIndex() == 1);
+ }
+ });
addressBox = new UIComboBox();
addressNameBox = new UIComboBox();
double p = TableLayout.PREFERRED;
diff --git a/designer_chart/src/com/fr/design/mainframe/chart/ChartsConfigPane.java b/designer_chart/src/com/fr/design/mainframe/chart/ChartsConfigPane.java
index bebf6d2c2..1bf04c439 100644
--- a/designer_chart/src/com/fr/design/mainframe/chart/ChartsConfigPane.java
+++ b/designer_chart/src/com/fr/design/mainframe/chart/ChartsConfigPane.java
@@ -14,11 +14,11 @@ public abstract class ChartsConfigPane extends AbstractChartA
public final static String CHART_STYLE_TITLE = Inter.getLocText("Chart-Style_Name");
- public abstract Class extends Charts> accptType();
+ public abstract Class extends Charts> acceptType();
@Override
public void populate(ChartCollection collection) {
- if (StableUtils.classInstanceOf(collection.getSelectedChart().getClass(),accptType())) {
+ if (StableUtils.classInstanceOf(collection.getSelectedChart().getClass(), acceptType())) {
populate(collection, (T)collection.getSelectedChart());
}
}
@@ -27,7 +27,7 @@ public abstract class ChartsConfigPane extends AbstractChartA
@Override
public void update(ChartCollection collection) {
- if (StableUtils.classInstanceOf(collection.getSelectedChart().getClass(),accptType())) {
+ if (StableUtils.classInstanceOf(collection.getSelectedChart().getClass(), acceptType())) {
update(collection, (T)collection.getSelectedChart());
}
}
diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/MeterPlotReportDataContentPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/MeterPlotReportDataContentPane.java
index b447c7d09..1e07a587d 100644
--- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/MeterPlotReportDataContentPane.java
+++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/MeterPlotReportDataContentPane.java
@@ -24,7 +24,7 @@ import java.awt.*;
public class MeterPlotReportDataContentPane extends AbstractReportDataContentPane {
private static final String CATENAME = Inter.getLocText(new String[]{"ChartF-Meter", "StyleFormat-Category", "WF-Name"});
- private static final String NVALUE = Inter.getLocText("Needle Value");
+ private static final String NVALUE = Inter.getLocText("Chart-Pointer_Value");
private TinyFormulaPane singCatePane;
private TinyFormulaPane singValuePane;
@@ -59,7 +59,7 @@ public class MeterPlotReportDataContentPane extends AbstractReportDataContentPan
double[] cs = {p};
components = new Component[][]{
new Component[]{new JSeparator()},
- new Component[]{new BoldFontTextLabel(Inter.getLocText("Data_Filter"))},
+ new Component[]{new BoldFontTextLabel(Inter.getLocText("FR-Designer_Data_Filter"))},
new Component[]{filterPane = new ChartDataFilterPane(new MeterPlot(), parent)},
};
JPanel pane = TableLayoutHelper.createTableLayoutPane(components, rowSize, cs);