Browse Source

Merging in latest from upstream (DESIGN/design:refs/heads/release/10.0)

* commit '872470c7612b91c6b1e98d7fd3848fa5817eae6e': (45 commits)
  REPORT-9643 & REPORT-9613
  REPORT-9712 切换远程服务器失败后,再启动平台起不来
  REPORT-9643 & REPORT-9613
  method name
  改个名字
  REPORT-9668&REPORT-9656 切换环境恢复最近打开
  REPORT-9524 远程设计服务端整合
  fix
  设计器监听服务端配置修改
  REPORT-9505 修改来自桌面的文件失败
  REPORT-9505 修改来自桌面的文件失败
  双检锁
  REPORT-9632 设计器选择webroot下的文件有问题 ResourceIOutils不再支持绝对路径
  rt
  格式化
  代码质量
  disconnecte
  .
  无效import
  bug fix
  ...
master
yaoh.wu 6 years ago
parent
commit
b828b9414d
  1. 123
      designer-base/src/main/java/com/fr/design/DesignerEnvManager.java
  2. 5
      designer-base/src/main/java/com/fr/design/actions/file/LocalePane.java
  3. 38
      designer-base/src/main/java/com/fr/design/actions/file/SwitchExistEnv.java
  4. 4
      designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java
  5. 14
      designer-base/src/main/java/com/fr/design/env/RemoteDesignerWorkspaceInfo.java
  6. 18
      designer-base/src/main/java/com/fr/design/env/RemoteWorkspace.java
  7. 10
      designer-base/src/main/java/com/fr/design/file/HistoryTemplateListPane.java
  8. 2
      designer-base/src/main/java/com/fr/design/file/TemplateTreePane.java
  9. 26
      designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java
  10. 4
      designer-base/src/main/java/com/fr/design/mainframe/JVirtualTemplate.java
  11. 19
      designer-base/src/main/java/com/fr/design/mainframe/TemplatePane.java
  12. 2
      designer-base/src/main/java/com/fr/design/remote/action/RemoteDesignAuthorityManagerAction.java
  13. 2
      designer-base/src/main/java/com/fr/design/remote/ui/AuthorityListControlPane.java
  14. 4
      designer-base/src/main/java/com/fr/design/remote/ui/UserManagerPane.java
  15. 2
      designer-base/src/main/java/com/fr/design/remote/ui/list/AddedMemberList.java
  16. 2
      designer-base/src/main/java/com/fr/design/remote/ui/list/AddedMemberListCellRender.java
  17. 2
      designer-base/src/main/java/com/fr/design/remote/ui/list/AddingMemberList.java
  18. 2
      designer-base/src/main/java/com/fr/design/remote/ui/list/AddingMemberListCellRender.java
  19. 2
      designer-base/src/main/java/com/fr/design/remote/ui/list/MemberList.java
  20. 3
      designer-base/src/main/java/com/fr/design/report/WatermarkPreviewPane.java
  21. 3
      designer-base/src/main/java/com/fr/design/style/background/gradient/GradientBar.java
  22. 93
      designer-base/src/main/java/com/fr/design/style/color/ColorSelectConfigManager.java
  23. 3
      designer-base/src/main/java/com/fr/design/style/color/ColorSelectPane.java
  24. 3
      designer-base/src/main/java/com/fr/design/style/color/NewColorSelectPane.java
  25. 5
      designer-base/src/main/java/com/fr/design/style/color/UsedColorPane.java
  26. 8
      designer-base/src/main/java/com/fr/design/widget/component/NumberEditorValidatePane.java
  27. 35
      designer-base/src/main/java/com/fr/design/write/submit/DBManipulationPane.java
  28. 15
      designer-base/src/main/java/com/fr/env/RemoteEnvPane.java
  29. 4
      designer-base/src/main/java/com/fr/file/FILEFactory.java
  30. 7
      designer-base/src/main/java/com/fr/file/FileNodeFILE.java
  31. 3
      designer-base/src/main/java/com/fr/start/Demo.java
  32. 72
      designer-base/src/main/java/com/fr/start/ServerStarter.java
  33. 0
      designer-base/src/main/resources/com/fr/aspectj/designerbase/AlphaFineReminder.aj
  34. 0
      designer-base/src/main/resources/com/fr/aspectj/designerbase/TemplateProcessTracker.aj
  35. 0
      designer-base/src/main/resources/com/fr/common/inputevent/package.html
  36. 0
      designer-base/src/main/resources/com/fr/design/bbs/package.html
  37. 0
      designer-base/src/main/resources/com/fr/design/border/package.html
  38. 0
      designer-base/src/main/resources/com/fr/design/bridge/package.html
  39. 0
      designer-base/src/main/resources/com/fr/design/constants/package.html
  40. 0
      designer-base/src/main/resources/com/fr/design/data/package.html
  41. 0
      designer-base/src/main/resources/com/fr/design/data/tabledata/gui/CONTENT.txt
  42. 0
      designer-base/src/main/resources/com/fr/design/data/tabledata/gui/EXPLAN1.txt
  43. 0
      designer-base/src/main/resources/com/fr/design/data/tabledata/gui/EXPLAN2.txt
  44. 0
      designer-base/src/main/resources/com/fr/design/dialog/package.html
  45. 0
      designer-base/src/main/resources/com/fr/design/editor/package.html
  46. 0
      designer-base/src/main/resources/com/fr/design/event/package.html
  47. 0
      designer-base/src/main/resources/com/fr/design/extra/modal-dialog.css
  48. 0
      designer-base/src/main/resources/com/fr/design/extra/package.html
  49. 0
      designer-base/src/main/resources/com/fr/design/file/package.html
  50. 0
      designer-base/src/main/resources/com/fr/design/foldablepane/package.html
  51. 0
      designer-base/src/main/resources/com/fr/design/formula/package.html
  52. 0
      designer-base/src/main/resources/com/fr/design/fun/package.html
  53. 0
      designer-base/src/main/resources/com/fr/design/gui/autocomplete/CompletionXml.dtd
  54. 0
      designer-base/src/main/resources/com/fr/design/gui/autocomplete/arrow_left.png
  55. 0
      designer-base/src/main/resources/com/fr/design/gui/autocomplete/arrow_right.png
  56. 0
      designer-base/src/main/resources/com/fr/design/gui/autocomplete/bullet_black.png
  57. 0
      designer-base/src/main/resources/com/fr/design/gui/autocomplete/osx_sizegrip.png
  58. 0
      designer-base/src/main/resources/com/fr/design/gui/package.html
  59. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/io/package.html
  60. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/print/package.html
  61. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/focusabletip/osx_sizegrip.png
  62. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/focusabletip/package.html
  63. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/folding/package.html
  64. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/ActionScriptTokenMaker.flex
  65. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/AssemblerX86TokenMaker.flex
  66. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/BBCodeTokenMaker.flex
  67. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/CPlusPlusTokenMaker.flex
  68. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/CSSTokenMaker.flex
  69. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/CSharpTokenMaker.flex
  70. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/CTokenMaker.flex
  71. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/ClojureTokenMaker.flex
  72. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/DelphiTokenMaker.flex
  73. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/DtdTokenMaker.flex
  74. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/FormulaTokenMaker.flex
  75. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/FortranTokenMaker.flex
  76. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/GroovyTokenMaker.flex
  77. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/HTMLTokenMaker.flex
  78. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/HtaccessTokenMaker.flex
  79. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/JSPTokenMaker.flex
  80. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/JavaScriptTokenMaker.flex
  81. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/JavaTokenMaker.flex
  82. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/JsonTokenMaker.flex
  83. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/LatexTokenMaker.flex
  84. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/LispTokenMaker.flex
  85. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/LuaTokenMaker.flex
  86. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/MakefileTokenMaker.flex
  87. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/MxmlTokenMaker.flex
  88. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/NSISTokenMaker.flex
  89. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/PHPTokenMaker.flex
  90. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/PerlTokenMaker.flex
  91. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/PlainTextTokenMaker.flex
  92. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/PropertiesFileTokenMaker.flex
  93. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/PythonTokenMaker.flex
  94. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/RubyTokenMaker.flex
  95. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/SASTokenMaker.flex
  96. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/SQLTokenMaker.flex
  97. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/ScalaTokenMaker.flex
  98. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/TclTokenMaker.flex
  99. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/VisualBasicTokenMaker.flex
  100. 0
      designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/XMLTokenMaker.flex
  101. Some files were not shown because too many files have changed in this diff Show More

123
designer-base/src/main/java/com/fr/design/DesignerEnvManager.java

@ -13,6 +13,7 @@ import com.fr.design.env.DesignerWorkspaceInfo;
import com.fr.design.env.DesignerWorkspaceType; import com.fr.design.env.DesignerWorkspaceType;
import com.fr.design.env.LocalDesignerWorkspaceInfo; import com.fr.design.env.LocalDesignerWorkspaceInfo;
import com.fr.design.env.RemoteDesignerWorkspaceInfo; import com.fr.design.env.RemoteDesignerWorkspaceInfo;
import com.fr.design.style.color.ColorSelectConfigManager;
import com.fr.file.FILEFactory; import com.fr.file.FILEFactory;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.general.FRLogFormatter; import com.fr.general.FRLogFormatter;
@ -51,6 +52,7 @@ import java.io.StringReader;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.GregorianCalendar; import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -66,6 +68,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
private static final int MAX_SHOW_NUM = 10; private static final int MAX_SHOW_NUM = 10;
private static final String VERSION_80 = "80"; private static final String VERSION_80 = "80";
private static final int CACHINGTEMPLATE_LIMIT = 5; private static final int CACHINGTEMPLATE_LIMIT = 5;
private static final String WEB_NAME = "webapps";
private static DesignerEnvManager designerEnvManager; // gui. private static DesignerEnvManager designerEnvManager; // gui.
private String activationKey = null; private String activationKey = null;
@ -73,7 +76,8 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
private Rectangle windowBounds = null; // window bounds. private Rectangle windowBounds = null; // window bounds.
private String DialogCurrentDirectory = null; private String DialogCurrentDirectory = null;
private String CurrentDirectoryPrefix = null; private String CurrentDirectoryPrefix = null;
private List<String> recentOpenedFilePathList = new ArrayList<String>(); private Map<String, List<String>> recentOpenedFileListMap = new HashMap<>();
private List<String> tempRecentOpenedFilePathList = new ArrayList<String>();
private boolean showPaintToolBar = true; private boolean showPaintToolBar = true;
private int maxNumberOrPreviewRow = 200; private int maxNumberOrPreviewRow = 200;
// name和Env的键值对 // name和Env的键值对
@ -129,7 +133,8 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
//记录当前激活码的在线激活状态. //记录当前激活码的在线激活状态.
private int activeKeyStatus = -1; private int activeKeyStatus = -1;
private boolean joinProductImprove = true; private boolean joinProductImprove = true;
//最近使用的颜色
private ColorSelectConfigManager configManager = new ColorSelectConfigManager();
/** /**
* alphafine * alphafine
*/ */
@ -190,6 +195,10 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
return designerEnvManager; return designerEnvManager;
} }
public ColorSelectConfigManager getColorConfigManager() {
return this.configManager;
}
public static void checkNameEnvMap() { public static void checkNameEnvMap() {
if (designerEnvManager == null || designerEnvManager.nameEnvMap.size() > 0) { if (designerEnvManager == null || designerEnvManager.nameEnvMap.size() > 0) {
return; return;
@ -197,7 +206,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
String installHome = StableUtils.getInstallHome(); String installHome = StableUtils.getInstallHome();
if (installHome != null && !".".equals(installHome)) { if (installHome != null && !".".equals(installHome)) {
String name = Inter.getLocText("FR-Engine_DEFAULT"); String name = Inter.getLocText("FR-Engine_DEFAULT");
String envPath = StableUtils.pathJoin(installHome, ProjectConstants.WEBAPP_NAME, ProjectConstants.WEBINF_NAME); String envPath = designerEnvManager.getDefaultenvPath(installHome);
designerEnvManager.putEnv(name, LocalDesignerWorkspaceInfo.create(name, envPath)); designerEnvManager.putEnv(name, LocalDesignerWorkspaceInfo.create(name, envPath));
designerEnvManager.setCurEnvName(name); designerEnvManager.setCurEnvName(name);
} }
@ -332,7 +341,6 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
} }
// 清空前一个版本中的工作目录和最近打开 // 清空前一个版本中的工作目录和最近打开
nameEnvMap = new ListMap<String, DesignerWorkspaceInfo>(); nameEnvMap = new ListMap<String, DesignerWorkspaceInfo>();
recentOpenedFilePathList = new ArrayList<String>();
curEnvName = null; curEnvName = null;
designerEnvManager.saveXMLFile(); designerEnvManager.saveXMLFile();
} }
@ -480,8 +488,8 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
public boolean isCurrentEnvDefault() { public boolean isCurrentEnvDefault() {
DesignerWorkspaceInfo current = this.getWorkspaceInfo(curEnvName); DesignerWorkspaceInfo current = this.getWorkspaceInfo(curEnvName);
String defaultEnvPath = StableUtils.pathJoin(new String[]{StableUtils.getInstallHome(), ProjectConstants.WEBAPP_NAME, ProjectConstants.WEBINF_NAME}); String defaultEnvPath = getDefaultenvPath(StableUtils.getInstallHome());
return ComparatorUtils.equals(new File(defaultEnvPath).getPath(), current.getPath()); return ComparatorUtils.equals(defaultEnvPath, current.getPath());
} }
/** /**
@ -489,7 +497,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
*/ */
public DesignerWorkspaceInfo getDefaultConfig() { public DesignerWorkspaceInfo getDefaultConfig() {
String installHome = StableUtils.getInstallHome(); String installHome = StableUtils.getInstallHome();
String defaultenvPath = StableUtils.pathJoin(installHome, ProjectConstants.WEBAPP_NAME, ProjectConstants.WEBINF_NAME); String defaultenvPath = getDefaultenvPath(installHome);
defaultenvPath = new File(defaultenvPath).getPath(); defaultenvPath = new File(defaultenvPath).getPath();
Iterator<Entry<String, DesignerWorkspaceInfo>> entryIt = nameEnvMap.entrySet().iterator(); Iterator<Entry<String, DesignerWorkspaceInfo>> entryIt = nameEnvMap.entrySet().iterator();
while (entryIt.hasNext()) { while (entryIt.hasNext()) {
@ -510,7 +518,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
*/ */
public String getDefaultEnvName() { public String getDefaultEnvName() {
String installHome = StableUtils.getInstallHome(); String installHome = StableUtils.getInstallHome();
String defaultenvPath = StableUtils.pathJoin(new String[]{installHome, ProjectConstants.WEBAPP_NAME, ProjectConstants.WEBINF_NAME}); String defaultenvPath = getDefaultenvPath(installHome);
defaultenvPath = new File(defaultenvPath).getPath(); defaultenvPath = new File(defaultenvPath).getPath();
if (nameEnvMap.size() >= 0) { if (nameEnvMap.size() >= 0) {
Iterator<Entry<String, DesignerWorkspaceInfo>> entryIt = nameEnvMap.entrySet().iterator(); Iterator<Entry<String, DesignerWorkspaceInfo>> entryIt = nameEnvMap.entrySet().iterator();
@ -525,6 +533,12 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
return Inter.getLocText(new String[]{"Default", "Utils-Report_Runtime_Env"}); return Inter.getLocText(new String[]{"Default", "Utils-Report_Runtime_Env"});
} }
private String getDefaultenvPath(String installHome) {
//这里需要转成反斜杠和生成默认路径一致
return new File(StableUtils.pathJoin(installHome, WEB_NAME, ProjectConstants.WEBAPP_NAME, ProjectConstants.WEBINF_NAME)).getPath();
}
/** /**
* 设置当前环境为默认 * 设置当前环境为默认
*/ */
@ -813,7 +827,17 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
* 返回最近打开的文件路径列表 * 返回最近打开的文件路径列表
*/ */
public List<String> getRecentOpenedFilePathList() { public List<String> getRecentOpenedFilePathList() {
return this.recentOpenedFilePathList;
if (StringUtils.isEmpty(getCurEnvName())) {
return tempRecentOpenedFilePathList;
} else {
if (!recentOpenedFileListMap.containsKey(getCurEnvName())) {
recentOpenedFileListMap.put(getCurEnvName(), tempRecentOpenedFilePathList);
}
}
return recentOpenedFileListMap.get(getCurEnvName());
} }
/** /**
@ -823,11 +847,11 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
*/ */
public void addRecentOpenedFilePath(String filePath) { public void addRecentOpenedFilePath(String filePath) {
// 先删除. // 先删除.
if (this.recentOpenedFilePathList.contains(filePath)) { if (getRecentOpenedFilePathList().contains(filePath)) {
this.recentOpenedFilePathList.remove(filePath); getRecentOpenedFilePathList().remove(filePath);
} }
this.recentOpenedFilePathList.add(0, filePath); getRecentOpenedFilePathList().add(0, filePath);
checkRecentOpenedFileNum(); checkRecentOpenedFileNum();
} }
@ -838,19 +862,21 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
* @param newPath 新的路径 * @param newPath 新的路径
*/ */
public void replaceRecentOpenedFilePath(String oldPath, String newPath) { public void replaceRecentOpenedFilePath(String oldPath, String newPath) {
if (this.recentOpenedFilePathList.contains(oldPath)) { List<String> list = getRecentOpenedFilePathList();
int index = recentOpenedFilePathList.indexOf(oldPath); if (list.contains(oldPath)) {
this.recentOpenedFilePathList.remove(oldPath); int index = getRecentOpenedFilePathList().indexOf(oldPath);
this.recentOpenedFilePathList.add(index, newPath); list.remove(oldPath);
list.add(index, newPath);
} }
} }
private void checkRecentOpenedFileNum() { private void checkRecentOpenedFileNum() {
if (this.recentOpenedFilePathList == null) { List<String> list = getRecentOpenedFilePathList();
if (list == null) {
return; return;
} }
while (this.recentOpenedFilePathList.size() > MAX_SHOW_NUM) { while (list.size() > MAX_SHOW_NUM) {
this.recentOpenedFilePathList.remove(this.recentOpenedFilePathList.size() - 1); list.remove(list.size() - 1);
} }
} }
@ -860,8 +886,8 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
* @param filePath 文件路径 * @param filePath 文件路径
*/ */
public void removeRecentOpenedFilePath(String filePath) { public void removeRecentOpenedFilePath(String filePath) {
if (this.recentOpenedFilePathList.contains(filePath)) { if (getRecentOpenedFilePathList().contains(filePath)) {
this.recentOpenedFilePathList.remove(filePath); getRecentOpenedFilePathList().remove(filePath);
} }
} }
@ -1299,6 +1325,10 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
} }
} }
private void readRecentColor(XMLableReader reader) {
reader.readXMLObject(this.configManager);
}
/** /**
* Read XML.<br> * Read XML.<br>
* The method will be invoked when read data from XML file.<br> * The method will be invoked when read data from XML file.<br>
@ -1316,7 +1346,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
this.readAttributes(reader); this.readAttributes(reader);
} else if (name.equals("ReportPaneAttributions")) { } else if (name.equals("ReportPaneAttributions")) {
this.readReportPaneAttributions(reader); this.readReportPaneAttributions(reader);
} else if ("RecentOpenedFilePathList".equals(name) || "ResentOpenedFilePathList".equals(name)) { } else if ("RecentOpenedFilePath".equals(name)) {
this.readRecentOpenFileList(reader); this.readRecentOpenFileList(reader);
} else if ("EnvConfigMap".equals(name)) { } else if ("EnvConfigMap".equals(name)) {
this.readEnvConfigMap(reader); this.readEnvConfigMap(reader);
@ -1350,6 +1380,8 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
readHttpsParas(reader); readHttpsParas(reader);
} else if (name.equals("AlphaFineConfigManager")) { } else if (name.equals("AlphaFineConfigManager")) {
readAlphaFineAttr(reader); readAlphaFineAttr(reader);
} else if (name.equals("RecentColors")) {
readRecentColor(reader);
} else { } else {
readLayout(reader, name); readLayout(reader, name);
} }
@ -1499,21 +1531,32 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
private void readRecentOpenFileList(XMLableReader reader) { private void readRecentOpenFileList(XMLableReader reader) {
reader.readXMLObject(new XMLReadable() { reader.readXMLObject(new XMLReadable() {
@Override @Override
public void readXML(XMLableReader reader) { public void readXML(XMLableReader reader) {
if (reader.isAttr()) { if (reader.isAttr()) {
DesignerEnvManager.this.recentOpenedFilePathList.clear(); DesignerEnvManager.this.recentOpenedFileListMap.clear();
} }
if (reader.isChildNode()) { if (reader.isChildNode()) {
String tmpVal;
String name = reader.getTagName(); String name = reader.getTagName();
// alex:以前一直是写ResentOpenedFilePath if ("Env".equals(name)) {
if ("ResentOpenedFilePath".equals(name) || "Path".equals(name)) { // description. final String envName = reader.getAttrAsString("name", StringUtils.EMPTY);
if ((tmpVal = reader.getElementValue()) != null) { final List<String> recentOpenedFileList = new ArrayList<>();
DesignerEnvManager.this.recentOpenedFilePathList.add(tmpVal); reader.readXMLObject(new XMLReadable() {
} @Override
public void readXML(XMLableReader reader) {
if (reader.isChildNode()) {
String n = reader.getTagName();
if ("Path".equals(n)) {
String path = reader.getElementValue();
if (StringUtils.isNotEmpty(path)) {
recentOpenedFileList.add(path);
}
}
}
}
});
DesignerEnvManager.this.recentOpenedFileListMap.put(envName, recentOpenedFileList);
} }
} }
} }
@ -1542,6 +1585,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
writeActiveStatus(writer); writeActiveStatus(writer);
writeHttpsParas(writer); writeHttpsParas(writer);
writeAlphaFineAttr(writer); writeAlphaFineAttr(writer);
writeRecentColor(writer);
writer.end(); writer.end();
} }
@ -1551,6 +1595,12 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
} }
} }
private void writeRecentColor(XMLPrintWriter writer) {
if (this.configManager != null) {
this.configManager.writeXML(writer);
}
}
public String getUUID() { public String getUUID() {
return StringUtils.isEmpty(uuid) ? UUID.randomUUID().toString() : uuid; return StringUtils.isEmpty(uuid) ? UUID.randomUUID().toString() : uuid;
} }
@ -1597,10 +1647,15 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
private void writeRecentOpenFileAndEnvList(XMLPrintWriter writer) { private void writeRecentOpenFileAndEnvList(XMLPrintWriter writer) {
checkRecentOpenedFileNum(); checkRecentOpenedFileNum();
writer.startTAG("RecentOpenedFilePathList"); writer.startTAG("RecentOpenedFilePath");
int resentOpenedFilePathCount = Math.min(12, this.recentOpenedFilePathList.size()); for (Entry<String, List<String>> entry : recentOpenedFileListMap.entrySet()) {
for (int i = 0; i < resentOpenedFilePathCount; i++) { writer.startTAG("Env").attr("name", entry.getKey());
writer.startTAG("Path").textNode(recentOpenedFilePathList.get(i)).end(); List<String> paths = entry.getValue();
int count = Math.min(12, paths.size());
for (int i = 0; i < count; i++) {
writer.startTAG("Path").textNode(paths.get(i)).end();
}
writer.end();
} }
writer.end(); writer.end();

5
designer-base/src/main/java/com/fr/design/actions/file/LocalePane.java

@ -18,6 +18,7 @@ import com.fr.stable.StableUtils;
import com.fr.stable.bridge.StableFactory; import com.fr.stable.bridge.StableFactory;
import com.fr.stable.project.ProjectConstants; import com.fr.stable.project.ProjectConstants;
import com.fr.workspace.WorkContext; import com.fr.workspace.WorkContext;
import com.fr.workspace.resource.WorkResourceOutputStream;
import javax.swing.*; import javax.swing.*;
import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentEvent;
@ -233,11 +234,9 @@ public class LocalePane extends BasicPane {
properties.setProperty(GeneralUtils.objectToString(customTableModel.getValueAt(j, 0)), GeneralUtils.objectToString(customTableModel.getValueAt(j, i))); properties.setProperty(GeneralUtils.objectToString(customTableModel.getValueAt(j, 0)), GeneralUtils.objectToString(customTableModel.getValueAt(j, i)));
} }
OutputStream out = null;
try { try {
out = FRContext.getCommonOperator().writeBean(PREFIX + fileName + ".properties", ProjectConstants.LOCALE_NAME); OutputStream out = new WorkResourceOutputStream(StableUtils.pathJoin(ProjectConstants.LOCALE_NAME, PREFIX + fileName + ".properties"));
properties.store(out, null); properties.store(out, null);
out.flush(); out.flush();
out.close(); out.close();
} catch (Exception e) { } catch (Exception e) {

38
designer-base/src/main/java/com/fr/design/actions/file/SwitchExistEnv.java

@ -22,7 +22,7 @@ import com.fr.workspace.WorkContextCallback;
import com.fr.workspace.Workspace; import com.fr.workspace.Workspace;
import com.fr.workspace.connect.AuthException; import com.fr.workspace.connect.AuthException;
import javax.swing.JOptionPane; import javax.swing.*;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
@ -38,7 +38,7 @@ public class SwitchExistEnv extends MenuDef {
JTemplate<?, ?> t = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); JTemplate<?, ?> t = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate();
if (t != null) { if (t != null) {
GeneralContext.addEnvWillChangedListener( GeneralContext.addEnvWillChangedListener(
t.getFullPathName(), t.getPath(),
new EnvChangedListener() { new EnvChangedListener() {
public void envChanged() { public void envChanged() {
SwitchExistEnv.this.clearShortCuts(); SwitchExistEnv.this.clearShortCuts();
@ -107,28 +107,28 @@ public class SwitchExistEnv extends MenuDef {
Workspace workspace; Workspace workspace;
try { try {
workspace = DesignerWorkspaceGenerator.generate(selectedEnv); workspace = DesignerWorkspaceGenerator.generate(selectedEnv);
if (workspace == null) {
JOptionPane.showMessageDialog(
DesignerContext.getDesignerFrame(),
Inter.getLocText(new String[]{"FR-Designer_M-SwitchWorkspace", "Failed"}));
return;
}
WorkContext.switchTo(workspace, new WorkContextCallback() {
@Override
public void done() {
DesignerEnvManager.getEnvManager().setCurEnvName(envName);
DesignUtils.refreshDesignerFrame();
HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().refreshToolArea();
fireDSChanged();
}
});
} catch (AuthException exception) { } catch (AuthException exception) {
JOptionPane.showMessageDialog( JOptionPane.showMessageDialog(
DesignerContext.getDesignerFrame(), DesignerContext.getDesignerFrame(),
Inter.getLocText(new String[]{"Fine-Designer_Basic_Remote_Connect_Auth_Failed"})); Inter.getLocText(new String[]{"Fine-Designer_Basic_Remote_Connect_Auth_Failed"}));
return;
} }
WorkContext.switchTo(workspace, new WorkContextCallback() {
@Override
public void success() {
DesignerEnvManager.getEnvManager().setCurEnvName(envName);
DesignUtils.refreshDesignerFrame();
HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().refreshToolArea();
fireDSChanged();
}
@Override
public void fail() {
JOptionPane.showMessageDialog(
DesignerContext.getDesignerFrame(),
Inter.getLocText(new String[]{"M-SwitchWorkspace", "Failed"}));
}
});
} }
} }
} }

4
designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java

@ -105,7 +105,7 @@ public abstract class DesignTableDataManager {
public static void closeTemplate(JTemplate<?, ?> template) { public static void closeTemplate(JTemplate<?, ?> template) {
if (template != null) { if (template != null) {
dsListenersMap.remove(template.getFullPathName()); dsListenersMap.remove(template.getPath());
} }
} }
@ -164,7 +164,7 @@ public abstract class DesignTableDataManager {
JTemplate<?, ?> template = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); JTemplate<?, ?> template = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate();
String key = StringUtils.EMPTY; String key = StringUtils.EMPTY;
if (template != null) { if (template != null) {
key = template.getFullPathName(); key = template.getPath();
} }
List<ChangeListener> dsListeners = dsListenersMap.get(key); List<ChangeListener> dsListeners = dsListenersMap.get(key);
if (dsListeners == null) { if (dsListeners == null) {

14
designer-base/src/main/java/com/fr/design/env/RemoteDesignerWorkspaceInfo.java vendored

@ -55,8 +55,10 @@ public class RemoteDesignerWorkspaceInfo implements DesignerWorkspaceInfo {
String url = reader.getAttrAsString("url", StringUtils.EMPTY); String url = reader.getAttrAsString("url", StringUtils.EMPTY);
String username = reader.getAttrAsString("username", StringUtils.EMPTY); String username = reader.getAttrAsString("username", StringUtils.EMPTY);
//密码解密 //密码解密
String password = SecurityToolbox.defaultDecrypt(reader.getAttrAsString("password", StringUtils.EMPTY).replaceAll(" ","\r\n")); String password = SecurityToolbox.defaultDecrypt(reader.getAttrAsString("password", StringUtils.EMPTY).replaceAll(" ", "\r\n"));
this.connection = new WorkspaceConnection(url, username, password); String certPath = reader.getAttrAsString("certPath", StringUtils.EMPTY);
String certSecretKey = reader.getAttrAsString("certSecretKey", StringUtils.EMPTY);
this.connection = new WorkspaceConnection(url, username, password, certPath, certSecretKey);
} }
} }
} }
@ -70,6 +72,8 @@ public class RemoteDesignerWorkspaceInfo implements DesignerWorkspaceInfo {
writer.attr("url", connection.getUrl()); writer.attr("url", connection.getUrl());
writer.attr("username", connection.getUserName()); writer.attr("username", connection.getUserName());
writer.attr("password", SecurityToolbox.defaultEncrypt(connection.getPassword())); writer.attr("password", SecurityToolbox.defaultEncrypt(connection.getPassword()));
writer.attr("certPath", connection.getCertPath());
writer.attr("certSecretKey", connection.getCertSecretKey());
writer.end(); writer.end();
} }
} }
@ -77,9 +81,9 @@ public class RemoteDesignerWorkspaceInfo implements DesignerWorkspaceInfo {
@Override @Override
public Object clone() throws CloneNotSupportedException { public Object clone() throws CloneNotSupportedException {
RemoteDesignerWorkspaceInfo object = (RemoteDesignerWorkspaceInfo)super.clone(); RemoteDesignerWorkspaceInfo object = (RemoteDesignerWorkspaceInfo) super.clone();
object.connection = (WorkspaceConnection)StableUtils.cloneObject(this.connection); object.connection = (WorkspaceConnection) StableUtils.cloneObject(this.connection);
return object; return object;
} }
} }

18
designer-base/src/main/java/com/fr/design/env/RemoteWorkspace.java vendored

@ -1,11 +1,12 @@
package com.fr.design.env; package com.fr.design.env;
import com.fr.env.operator.decision.DecisionOperator;
import com.fr.locale.InterProviderFactory; import com.fr.locale.InterProviderFactory;
import com.fr.stable.AssistUtils;
import com.fr.workspace.WorkContext; import com.fr.workspace.WorkContext;
import com.fr.workspace.Workspace; import com.fr.workspace.Workspace;
import com.fr.workspace.connect.WorkspaceClient; import com.fr.workspace.connect.WorkspaceClient;
import com.fr.workspace.connect.WorkspaceConnection; import com.fr.workspace.connect.WorkspaceConnection;
import com.fr.workspace.server.authority.decision.DecisionOperator;
/** /**
* Created by juhaoyu on 2018/6/14. * Created by juhaoyu on 2018/6/14.
@ -17,10 +18,13 @@ public class RemoteWorkspace implements Workspace {
private final String address; private final String address;
private final WorkspaceConnection connection;
RemoteWorkspace(WorkspaceClient client, WorkspaceConnection connection) { RemoteWorkspace(WorkspaceClient client, WorkspaceConnection connection) {
this.client = client; this.client = client;
this.address = connection.getUrl(); this.address = connection.getUrl();
this.connection = connection;
} }
@Override @Override
@ -61,4 +65,16 @@ public class RemoteWorkspace implements Workspace {
return client.getPool().get(type); return client.getPool().get(type);
} }
@Override
public int hashCode() {
return connection.hashCode();
}
@Override
public boolean equals(Object obj) {
return obj != null && obj instanceof RemoteWorkspace && AssistUtils.equals(((RemoteWorkspace) obj).connection, this.connection);
}
} }

10
designer-base/src/main/java/com/fr/design/file/HistoryTemplateListPane.java

@ -114,7 +114,7 @@ public class HistoryTemplateListPane extends JPanel implements FileOperations, C
public void closeSelectedReport(JTemplate<?, ?> selected) { public void closeSelectedReport(JTemplate<?, ?> selected) {
DesignModuleFactory.clearChartPropertyPane(); DesignModuleFactory.clearChartPropertyPane();
DesignTableDataManager.closeTemplate(selected); DesignTableDataManager.closeTemplate(selected);
GeneralContext.removeEnvWillChangedListener(selected.getFullPathName()); GeneralContext.removeEnvWillChangedListener(selected.getPath());
if (contains(selected) == -1) { if (contains(selected) == -1) {
return; return;
} }
@ -139,7 +139,7 @@ public class HistoryTemplateListPane extends JPanel implements FileOperations, C
public void closeVirtualSelectedReport(JTemplate<?, ?> selected) { public void closeVirtualSelectedReport(JTemplate<?, ?> selected) {
DesignModuleFactory.clearChartPropertyPane(); DesignModuleFactory.clearChartPropertyPane();
DesignTableDataManager.closeTemplate(selected); DesignTableDataManager.closeTemplate(selected);
GeneralContext.removeEnvWillChangedListener(selected.getFullPathName()); GeneralContext.removeEnvWillChangedListener(selected.getPath());
if (contains(selected) == -1) { if (contains(selected) == -1) {
return; return;
} }
@ -185,7 +185,7 @@ public class HistoryTemplateListPane extends JPanel implements FileOperations, C
if (editingTemplate == null) { if (editingTemplate == null) {
return; return;
} }
DesignerEnvManager.getEnvManager().addRecentOpenedFilePath(editingTemplate.getFullPathName()); DesignerEnvManager.getEnvManager().addRecentOpenedFilePath(editingTemplate.getPath());
((HistoryListDataMode) list.getModel()).add(editingTemplate); ((HistoryListDataMode) list.getModel()).add(editingTemplate);
} }
@ -246,7 +246,7 @@ public class HistoryTemplateListPane extends JPanel implements FileOperations, C
*/ */
public int contains(String filename) { public int contains(String filename) {
for (int i = 0; i < historyList.size(); i++) { for (int i = 0; i < historyList.size(); i++) {
String historyPath = historyList.get(i).getFullPathName(); String historyPath = historyList.get(i).getPath();
if (ComparatorUtils.equals(historyPath, filename)) { if (ComparatorUtils.equals(historyPath, filename)) {
return i; return i;
} }
@ -261,7 +261,7 @@ public class HistoryTemplateListPane extends JPanel implements FileOperations, C
* @return 是则返回TRUE * @return 是则返回TRUE
*/ */
public boolean isCurrentEditingFile(String filename) { public boolean isCurrentEditingFile(String filename) {
String editingFileName = editingTemplate.getFullPathName(); String editingFileName = editingTemplate.getPath();
return ComparatorUtils.equals(filename, editingFileName); return ComparatorUtils.equals(filename, editingFileName);
} }

2
designer-base/src/main/java/com/fr/design/file/TemplateTreePane.java

@ -218,7 +218,7 @@ public class TemplateTreePane extends JPanel implements FileOperations {
MutilTempalteTabPane.getInstance().setSelectedIndex(index - 1); MutilTempalteTabPane.getInstance().setSelectedIndex(index - 1);
} }
JTemplate selectedfile = MutilTempalteTabPane.getInstance().getSelectedFile(); JTemplate selectedfile = MutilTempalteTabPane.getInstance().getSelectedFile();
if (!HistoryTemplateListPane.getInstance().isCurrentEditingFile(selectedfile.getFullPathName())) { if (!HistoryTemplateListPane.getInstance().isCurrentEditingFile(selectedfile.getPath())) {
//如果此时面板上的实时刷新的selectedIndex得到的和历史的不一样 //如果此时面板上的实时刷新的selectedIndex得到的和历史的不一样
DesignerContext.getDesignerFrame().activateJTemplate(selectedfile); DesignerContext.getDesignerFrame().activateJTemplate(selectedfile);
} }

26
designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java

@ -40,7 +40,6 @@ import com.fr.design.write.submit.DBManipulationInWidgetEventPane;
import com.fr.design.write.submit.DBManipulationPane; import com.fr.design.write.submit.DBManipulationPane;
import com.fr.file.FILE; import com.fr.file.FILE;
import com.fr.file.FILEChooserPane; import com.fr.file.FILEChooserPane;
import com.fr.file.FileNodeFILE;
import com.fr.file.MemFILE; import com.fr.file.MemFILE;
import com.fr.form.ui.NoneWidget; import com.fr.form.ui.NoneWidget;
import com.fr.form.ui.Widget; import com.fr.form.ui.Widget;
@ -50,19 +49,14 @@ import com.fr.log.FineLoggerFactory;
import com.fr.report.cell.Elem; import com.fr.report.cell.Elem;
import com.fr.report.cell.cellattr.CellImage; import com.fr.report.cell.cellattr.CellImage;
import com.fr.stable.ArrayUtils; import com.fr.stable.ArrayUtils;
import com.fr.stable.OperatingSystem;
import com.fr.stable.ProductConstants; import com.fr.stable.ProductConstants;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.stable.core.UUID; import com.fr.stable.core.UUID;
import com.fr.stable.project.ProjectConstants;
import com.fr.workspace.WorkContext;
import javax.swing.*; import javax.swing.*;
import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.undo.UndoManager; import javax.swing.undo.UndoManager;
import java.awt.*; import java.awt.*;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Set; import java.util.Set;
@ -204,16 +198,8 @@ public abstract class JTemplate<T extends BaseBook, U extends BaseUndoState<?>>
return -1; return -1;
} }
public String getFullPathName() { public String getPath() {
String editingFileName = getEditingFILE().getPath(); return getEditingFILE().getPath();
if (editingFileName.startsWith(ProjectConstants.REPORTLETS_NAME)) {
editingFileName = ((FileNodeFILE) getEditingFILE()).getEnvPath() + File.separator + editingFileName;
}
if (OperatingSystem.isWindows()) {
return editingFileName.replaceAll("/", "\\\\");
} else {
return editingFileName.replaceAll("\\\\", "/");
}
} }
protected abstract JComponent createCenterPane(); protected abstract JComponent createCenterPane();
@ -581,7 +567,7 @@ public abstract class JTemplate<T extends BaseBook, U extends BaseUndoState<?>>
* @return * @return
*/ */
public boolean saveAsTemplate(boolean isShowLoc, String fileName) { public boolean saveAsTemplate(boolean isShowLoc, String fileName) {
String oldName = this.getFullPathName(); String oldName = this.getPath();
// alex:如果是SaveAs的话需要让用户来选择路径了 // alex:如果是SaveAs的话需要让用户来选择路径了
FILEChooserPane fileChooser = getFILEChooserPane(isShowLoc); FILEChooserPane fileChooser = getFILEChooserPane(isShowLoc);
fileChooser.setFileNameTextField(fileName, this.suffix()); fileChooser.setFileNameTextField(fileName, this.suffix());
@ -620,7 +606,7 @@ public abstract class JTemplate<T extends BaseBook, U extends BaseUndoState<?>>
collectInfo(); collectInfo();
} }
//更换最近打开 //更换最近打开
DesignerEnvManager.getEnvManager().replaceRecentOpenedFilePath(oldName, this.getFullPathName()); DesignerEnvManager.getEnvManager().replaceRecentOpenedFilePath(oldName, this.getPath());
return result; return result;
} }
@ -656,9 +642,7 @@ public abstract class JTemplate<T extends BaseBook, U extends BaseUndoState<?>>
return false; return false;
} }
try { try {
ByteArrayOutputStream out = new ByteArrayOutputStream(); this.getTarget().export(editingFILE.asOutputStream());
this.getTarget().export(out);
WorkContext.getWorkResource().write(editingFILE.getPath(), out.toByteArray());
} catch (Exception e) { } catch (Exception e) {
FRContext.getLogger().error(e.getMessage(), e); FRContext.getLogger().error(e.getMessage(), e);
JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), e.getMessage(), "Save Error", JOptionPane.ERROR_MESSAGE); JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), e.getMessage(), "Save Error", JOptionPane.ERROR_MESSAGE);

4
designer-base/src/main/java/com/fr/design/mainframe/JVirtualTemplate.java

@ -37,7 +37,7 @@ public class JVirtualTemplate extends JTemplate {
} }
@Override @Override
public String getFullPathName() { public String getPath() {
String editingFileName = getEditingFILE().getPath(); String editingFileName = getEditingFILE().getPath();
if (editingFileName.startsWith(ProjectConstants.REPORTLETS_NAME)) { if (editingFileName.startsWith(ProjectConstants.REPORTLETS_NAME)) {
editingFileName = ((FileNodeFILE) getEditingFILE()).getEnvPath() + File.separator + editingFileName; editingFileName = ((FileNodeFILE) getEditingFILE()).getEnvPath() + File.separator + editingFileName;
@ -258,7 +258,7 @@ public class JVirtualTemplate extends JTemplate {
@Override @Override
public Icon getIcon() { public Icon getIcon() {
if (getFullPathName().endsWith("cpt")) { if (getPath().endsWith("cpt")) {
return BaseUtils.readIcon("/com/fr/design/images/buttonicon/newcpts.png"); return BaseUtils.readIcon("/com/fr/design/images/buttonicon/newcpts.png");
} else { } else {
return BaseUtils.readIcon("/com/fr/web/images/form/new_form3.png"); return BaseUtils.readIcon("/com/fr/web/images/form/new_form3.png");

19
designer-base/src/main/java/com/fr/design/mainframe/TemplatePane.java

@ -19,6 +19,7 @@ import com.fr.general.Inter;
import com.fr.stable.EnvChangedListener; import com.fr.stable.EnvChangedListener;
import com.fr.workspace.WorkContext; import com.fr.workspace.WorkContext;
import com.fr.workspace.WorkContextCallback; import com.fr.workspace.WorkContextCallback;
import com.fr.workspace.Workspace;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
@ -132,17 +133,17 @@ public class TemplatePane extends JPanel implements MouseListener {
DesignerWorkspaceInfo selectedEnv = envManager.getWorkspaceInfo(selectedName); DesignerWorkspaceInfo selectedEnv = envManager.getWorkspaceInfo(selectedName);
GeneralContext.fireEnvWillChangeListener(); GeneralContext.fireEnvWillChangeListener();
try { try {
WorkContext.switchTo(DesignerWorkspaceGenerator.generate(selectedEnv), new WorkContextCallback() { Workspace workspace = DesignerWorkspaceGenerator.generate(selectedEnv);
if (workspace == null) {
@Override JOptionPane.showMessageDialog(
public void fail() { DesignerContext.getDesignerFrame(),
Inter.getLocText(new String[]{"FR-Designer_M-SwitchWorkspace", "Failed"}));
JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), Inter.getLocText(new String[]{"M-SwitchWorkspace", "Failed"}), return false;
null, 0, UIManager.getIcon("OptionPane.errorIcon")); }
} WorkContext.switchTo(workspace, new WorkContextCallback() {
@Override @Override
public void success() { public void done() {
DesignerEnvManager.getEnvManager().setCurEnvName(selectedName); DesignerEnvManager.getEnvManager().setCurEnvName(selectedName);
DesignUtils.refreshDesignerFrame(); DesignUtils.refreshDesignerFrame();
} }

2
designer-base/src/main/java/com/fr/design/remote/action/RemoteDesignAuthorityManagerAction.java

@ -6,7 +6,7 @@ import com.fr.design.dialog.BasicDialog;
import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerContext;
import com.fr.design.remote.ui.AuthorityManagerPane; import com.fr.design.remote.ui.AuthorityManagerPane;
import com.fr.env.operator.authority.AuthorityOperator; import com.fr.workspace.server.authority.AuthorityOperator;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import com.fr.report.DesignAuthority; import com.fr.report.DesignAuthority;

2
designer-base/src/main/java/com/fr/design/remote/ui/AuthorityListControlPane.java

@ -18,7 +18,7 @@ import com.fr.design.remote.RemoteDesignAuthorityCreator;
import com.fr.design.remote.ui.list.AuthorityList; import com.fr.design.remote.ui.list.AuthorityList;
import com.fr.design.remote.ui.list.AuthorityListCellRenderer; import com.fr.design.remote.ui.list.AuthorityListCellRenderer;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.env.RemoteDesignMember; import com.fr.workspace.server.authority.RemoteDesignMember;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;

4
designer-base/src/main/java/com/fr/design/remote/ui/UserManagerPane.java

@ -13,8 +13,8 @@ import com.fr.design.remote.ui.list.AddedMemberListCellRender;
import com.fr.design.remote.ui.list.AddingMemberList; import com.fr.design.remote.ui.list.AddingMemberList;
import com.fr.design.remote.ui.list.AddingMemberListCellRender; import com.fr.design.remote.ui.list.AddingMemberListCellRender;
import com.fr.design.remote.ui.list.MemberListSelectedChangeListener; import com.fr.design.remote.ui.list.MemberListSelectedChangeListener;
import com.fr.env.RemoteDesignMember; import com.fr.workspace.server.authority.RemoteDesignMember;
import com.fr.env.operator.decision.DecisionOperator; import com.fr.workspace.server.authority.decision.DecisionOperator;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.third.guava.collect.ImmutableList; import com.fr.third.guava.collect.ImmutableList;

2
designer-base/src/main/java/com/fr/design/remote/ui/list/AddedMemberList.java

@ -1,6 +1,6 @@
package com.fr.design.remote.ui.list; package com.fr.design.remote.ui.list;
import com.fr.env.RemoteDesignMember; import com.fr.workspace.server.authority.RemoteDesignMember;
import javax.swing.DefaultListModel; import javax.swing.DefaultListModel;
import java.awt.Point; import java.awt.Point;

2
designer-base/src/main/java/com/fr/design/remote/ui/list/AddedMemberListCellRender.java

@ -3,7 +3,7 @@ package com.fr.design.remote.ui.list;
import com.fr.base.BaseUtils; import com.fr.base.BaseUtils;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.remote.button.IconButton; import com.fr.design.remote.button.IconButton;
import com.fr.env.RemoteDesignMember; import com.fr.workspace.server.authority.RemoteDesignMember;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
import javax.swing.JList; import javax.swing.JList;

2
designer-base/src/main/java/com/fr/design/remote/ui/list/AddingMemberList.java

@ -1,6 +1,6 @@
package com.fr.design.remote.ui.list; package com.fr.design.remote.ui.list;
import com.fr.env.RemoteDesignMember; import com.fr.workspace.server.authority.RemoteDesignMember;
import javax.swing.DefaultListModel; import javax.swing.DefaultListModel;
import java.awt.Point; import java.awt.Point;

2
designer-base/src/main/java/com/fr/design/remote/ui/list/AddingMemberListCellRender.java

@ -3,7 +3,7 @@ package com.fr.design.remote.ui.list;
import com.fr.base.BaseUtils; import com.fr.base.BaseUtils;
import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.env.RemoteDesignMember; import com.fr.workspace.server.authority.RemoteDesignMember;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
import javax.swing.JList; import javax.swing.JList;

2
designer-base/src/main/java/com/fr/design/remote/ui/list/MemberList.java

@ -1,7 +1,7 @@
package com.fr.design.remote.ui.list; package com.fr.design.remote.ui.list;
import com.fr.env.RemoteDesignMember; import com.fr.workspace.server.authority.RemoteDesignMember;
import javax.swing.DefaultListModel; import javax.swing.DefaultListModel;
import javax.swing.JList; import javax.swing.JList;

3
designer-base/src/main/java/com/fr/design/report/WatermarkPreviewPane.java

@ -32,6 +32,7 @@ public class WatermarkPreviewPane extends JPanel {
super.paint(g); super.paint(g);
Graphics2D g2d = (Graphics2D)g; Graphics2D g2d = (Graphics2D)g;
g2d.drawImage(UIConstants.WATERMARK_BACKGROUND, 0, 0, this.getWidth(), this.getHeight(), null); g2d.drawImage(UIConstants.WATERMARK_BACKGROUND, 0, 0, this.getWidth(), this.getHeight(), null);
new WatermarkPainter(watermark).paint(g2d, this.getWidth(), this.getHeight()); WatermarkPainter painter = WatermarkPainter.createPainter(watermark);
painter.paint(g2d, this.getWidth(), this.getHeight());
} }
} }

3
designer-base/src/main/java/com/fr/design/style/background/gradient/GradientBar.java

@ -19,6 +19,7 @@ import javax.swing.event.ChangeListener;
import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener; import javax.swing.event.DocumentListener;
import com.fr.design.DesignerEnvManager;
import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserver;
import com.fr.design.event.UIObserverListener; import com.fr.design.event.UIObserverListener;
import com.fr.design.gui.itextfield.UINumberField; import com.fr.design.gui.itextfield.UINumberField;
@ -104,7 +105,7 @@ public class GradientBar extends JComponent implements UIObserver,ColorSelectabl
ColorSelectDialog.showDialog(DesignerContext.getDesignerFrame(), pane, Color.WHITE, GradientBar.this); ColorSelectDialog.showDialog(DesignerContext.getDesignerFrame(), pane, Color.WHITE, GradientBar.this);
Color color = GradientBar.this.getColor(); Color color = GradientBar.this.getColor();
if (color != null) { if (color != null) {
ColorSelectConfigManager.getInstance().addToColorQueue(color); DesignerEnvManager.getEnvManager().getColorConfigManager().addToColorQueue(color);
list.get(select).setColorInner(color); list.get(select).setColorInner(color);
stateChanged(); stateChanged();
GradientBar.this.repaint(); GradientBar.this.repaint();

93
designer-base/src/main/java/com/fr/design/style/color/ColorSelectConfigManager.java

@ -1,16 +1,12 @@
package com.fr.design.style.color; package com.fr.design.style.color;
import com.fr.base.FRContext;
import com.fr.file.XMLFileManager;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.general.GeneralContext;
import com.fr.stable.EnvChangedListener;
import com.fr.stable.xml.XMLPrintWriter; import com.fr.stable.xml.XMLPrintWriter;
import com.fr.stable.xml.XMLTools; import com.fr.stable.xml.XMLReadable;
import com.fr.stable.xml.XMLableReader; import com.fr.stable.xml.XMLableReader;
import java.awt.*; import java.awt.*;
import java.io.InputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -19,42 +15,20 @@ import java.util.List;
* *
* @author focus * @author focus
*/ */
public class ColorSelectConfigManager extends XMLFileManager implements ColorSelectConfigManagerProvider { public class ColorSelectConfigManager implements XMLReadable {
// 最近使用的颜色个数 // 最近使用的颜色个数
private int colorNums = 20; private int colorNums = 20;
private static ColorSelectConfigManagerProvider configManager = null;
private static ColorSelectConfigManager colorSelectConfigManager = null;
private boolean init = true; private boolean init = true;
// 最近使用颜色 // 最近使用颜色
private List<Color> colors = new ArrayList<Color>(); private List<Color> colors = new ArrayList<Color>();
private static final String RECENT_COLOR_TAG = "RecentColors"; private static final String RECENT_COLOR_TAG = "RecentColors";
private static final String COLOR_TAG = "Color"; private static final String COLOR_TAG = "Color";
static {
GeneralContext.addEnvChangedListener(new EnvChangedListener() {
public void envChanged() {
ColorSelectConfigManager.envChanged();
}
});
}
private static void envChanged() {
configManager = null;
}
public Color[] getColors() { public Color[] getColors() {
//初次打开软件时从xml文件中获取历史颜色信息
if (init) {
ColorSelectConfigManagerProvider manager = ColorSelectConfigManager.getProviderInstance();
this.colors = manager.getColorsFromFile();
init = false;
}
if (colors == null) {
colors = new ArrayList<Color>();
}
return colors.toArray(new Color[colors.size()]); return colors.toArray(new Color[colors.size()]);
} }
@ -66,12 +40,6 @@ public class ColorSelectConfigManager extends XMLFileManager implements ColorSel
this.colorNums = colorNums; this.colorNums = colorNums;
} }
public synchronized static ColorSelectConfigManager getInstance() {
if (colorSelectConfigManager == null) {
colorSelectConfigManager = new ColorSelectConfigManager();
}
return colorSelectConfigManager;
}
/** /**
* 添加颜色到最近使用队列中 * 添加颜色到最近使用队列中
@ -91,52 +59,24 @@ public class ColorSelectConfigManager extends XMLFileManager implements ColorSel
/*@author yaohwu*/ /*@author yaohwu*/
//将历史颜色信息保存到xml文件中去 //将历史颜色信息保存到xml文件中去
ColorSelectConfigManagerProvider manager = ColorSelectConfigManager.getProviderInstance();
if (colors != null && !colors.isEmpty()) { if (colors != null && !colors.isEmpty()) {
manager.setColorsToFile(colors); this.setColorsToFile(colors);
}
}
/**
* 读取配置文件流
*
* @param input
* @throws Exception 异常
*/
@Override
public void readFromInputStream(InputStream input) throws Exception {
ColorSelectConfigManager manager = new ColorSelectConfigManager();
XMLTools.readInputStreamXML(manager, input);
configManager = manager;
}
/**
* 获取配置管理接口
*
* @return 配置管理接口ConfigManagerProvider
*/
public synchronized static ColorSelectConfigManagerProvider getProviderInstance() {
if (configManager == null) {
configManager = new ColorSelectConfigManager();
configManager.readXMLFile();
} }
return configManager;
}
public String fileName() {
return "recentcolors.xml";
} }
public void readXML(XMLableReader reader) { public void readXML(XMLableReader reader) {
String name = reader.getTagName(); reader.readXMLObject(new XMLReadable() {
if (reader.isChildNode()) { @Override
if (ComparatorUtils.equals(COLOR_TAG, name)) { public void readXML(XMLableReader reader) {
Color color = null; String tagName = reader.getTagName();
colors.add(reader.getAttrAsColor("colors", color)); if (reader.isChildNode()) {
if (ComparatorUtils.equals(COLOR_TAG, tagName)) {
Color color = null;
colors.add(reader.getAttrAsColor("colors", color));
}
}
} }
} });
} }
public void writeXML(XMLPrintWriter writer) { public void writeXML(XMLPrintWriter writer) {
@ -151,9 +91,6 @@ public class ColorSelectConfigManager extends XMLFileManager implements ColorSel
writer.end(); writer.end();
} }
public List<Color> getColorsFromFile() {
return this.colors;
}
public void setColorsToFile(List<Color> colors) { public void setColorsToFile(List<Color> colors) {
this.colors = colors; this.colors = colors;

3
designer-base/src/main/java/com/fr/design/style/color/ColorSelectPane.java

@ -3,6 +3,7 @@
*/ */
package com.fr.design.style.color; package com.fr.design.style.color;
import com.fr.design.DesignerEnvManager;
import com.fr.design.border.UIRoundedBorder; import com.fr.design.border.UIRoundedBorder;
import com.fr.design.constants.UIConstants; import com.fr.design.constants.UIConstants;
import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButton;
@ -159,7 +160,7 @@ public class ColorSelectPane extends TransparentPane implements ColorSelectable
} }
} }
ColorSelectConfigManager.getInstance().addToColorQueue(color); DesignerEnvManager.getEnvManager().getColorConfigManager().addToColorQueue(color);
this.repaint(); this.repaint();
} }

3
designer-base/src/main/java/com/fr/design/style/color/NewColorSelectPane.java

@ -1,5 +1,6 @@
package com.fr.design.style.color; package com.fr.design.style.color;
import com.fr.design.DesignerEnvManager;
import com.fr.design.border.UIRoundedBorder; import com.fr.design.border.UIRoundedBorder;
import com.fr.design.constants.UIConstants; import com.fr.design.constants.UIConstants;
import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.BasicPane;
@ -163,7 +164,7 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable {
this.colorChangeListenerList.get(i).stateChanged(evt); this.colorChangeListenerList.get(i).stateChanged(evt);
} }
} }
ColorSelectConfigManager.getInstance().addToColorQueue(color); DesignerEnvManager.getEnvManager().getColorConfigManager().addToColorQueue(color);
this.repaint(); this.repaint();
} }

5
designer-base/src/main/java/com/fr/design/style/color/UsedColorPane.java

@ -1,5 +1,6 @@
package com.fr.design.style.color; package com.fr.design.style.color;
import com.fr.design.DesignerEnvManager;
import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.BasicPane;
import com.fr.design.gui.ibutton.SpecialUIButton; import com.fr.design.gui.ibutton.SpecialUIButton;
@ -66,7 +67,7 @@ public class UsedColorPane extends BasicPane {
panel.setLayout(new GridLayout(rows, columns, 1, 1)); panel.setLayout(new GridLayout(rows, columns, 1, 1));
panel.setBorder(BorderFactory.createEmptyBorder(8, 8, 0, 8)); panel.setBorder(BorderFactory.createEmptyBorder(8, 8, 0, 8));
//最近使用颜色 //最近使用颜色
Color[] colors = ColorSelectConfigManager.getInstance().getColors(); Color[] colors = DesignerEnvManager.getEnvManager().getColorConfigManager().getColors();
int size = colors.length; int size = colors.length;
int i = 0; int i = 0;
if (needPickColorButton) { if (needPickColorButton) {
@ -96,7 +97,7 @@ public class UsedColorPane extends BasicPane {
*/ */
public void updateUsedColor() { public void updateUsedColor() {
int total = columns * rows; int total = columns * rows;
Color[] colors = ColorSelectConfigManager.getInstance().getColors(); Color[] colors = DesignerEnvManager.getEnvManager().getColorConfigManager().getColors();
int size = colors.length; int size = colors.length;
for (int i = this.reserveCells; i < total; i++) { for (int i = this.reserveCells; i < total; i++) {
ColorCell cell = (ColorCell) this.pane.getComponent(i); ColorCell cell = (ColorCell) this.pane.getComponent(i);

8
designer-base/src/main/java/com/fr/design/widget/component/NumberEditorValidatePane.java

@ -259,6 +259,14 @@ public class NumberEditorValidatePane extends JPanel {
ob.setAllowNegative(allowNegativeCheckBox.isSelected()); ob.setAllowNegative(allowNegativeCheckBox.isSelected());
if (setMinValueCheckBox.isSelected()) {
ob.setMinValue(minValueSpinner.getValue());
}
if (setMaxValueCheckBox.isSelected()) {
ob.setMaxValue(maxValueSpinner.getValue());
}
if(setMinValueCheckBox.isSelected() || setMaxValueCheckBox.isSelected()){ if(setMinValueCheckBox.isSelected() || setMaxValueCheckBox.isSelected()){
errorMsgTextFieldPane.setVisible(true); errorMsgTextFieldPane.setVisible(true);
}else{ }else{

35
designer-base/src/main/java/com/fr/design/write/submit/DBManipulationPane.java

@ -310,7 +310,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
protected void setBorderAndLayout(JPanel jPanel){ protected void setBorderAndLayout(JPanel jPanel){
jPanel.setLayout(FRGUIPaneFactory.createBorderLayout()); jPanel.setLayout(FRGUIPaneFactory.createBorderLayout());
jPanel.setBorder(BorderFactory.createTitledBorder( jPanel.setBorder(BorderFactory.createTitledBorder(
new ModLineBorder(ModLineBorder.TOP), Inter.getLocText(new String[]{"Submit", "Condition"}))); new ModLineBorder(ModLineBorder.TOP), Inter.getLocText("Fine-Designer_Submit_Condition")));
} }
protected void addComponent(JPanel mainPane,JScrollPane addPane){ protected void addComponent(JPanel mainPane,JScrollPane addPane){
@ -368,12 +368,12 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
@Override @Override
public void itemStateChanged(ItemEvent e) { public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) { if (e.getStateChange() == ItemEvent.SELECTED) {
Object ob = e.getItem(); Object ob = e.getItem();
if ((ComparatorUtils.equals(ob,DML_CONFIG_TYPES[0])) || ComparatorUtils.equals(ob,DML_CONFIG_TYPES[3])) { if ((ComparatorUtils.equals(ob, DML_CONFIG_TYPES[0])) || ComparatorUtils.equals(ob, DML_CONFIG_TYPES[3])) {
checkBoxUpdatePane.setVisible(true); checkBoxUpdatePane.setVisible(true);
} else if ((ComparatorUtils.equals(ob,DML_CONFIG_TYPES[1])) || ComparatorUtils.equals(ob,DML_CONFIG_TYPES[2])){ } else if ((ComparatorUtils.equals(ob, DML_CONFIG_TYPES[1])) || ComparatorUtils.equals(ob, DML_CONFIG_TYPES[2])) {
checkBoxUpdatePane.setVisible(false); checkBoxUpdatePane.setVisible(false);
} }
} }
} }
}); });
@ -465,6 +465,11 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
// Richie:初始化 // Richie:初始化
int returnValue = DEFAULT_RETURN_VALUE; int returnValue = DEFAULT_RETURN_VALUE;
int coverNumber = 0; int coverNumber = 0;
if (!keyColumnNameValueList.isEmpty()) {
//如果存在先前项,设置状态为5
returnValue = 5 ;
}
for (int i = 0; i < selected.length; i++) { for (int i = 0; i < selected.length; i++) {
if (returnValue == 0 || returnValue == 3) { if (returnValue == 0 || returnValue == 3) {
break; break;
@ -512,7 +517,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
for (int j = 0; j < keyColumnNameValueList.size(); j++) { for (int j = 0; j < keyColumnNameValueList.size(); j++) {
if (ComparatorUtils.equals(selected[i], keyColumnNameValueList.get(j).cn)) { if (ComparatorUtils.equals(selected[i], keyColumnNameValueList.get(j).cn)) {
newKeyColumnNameValueList.remove(i); newKeyColumnNameValueList.remove(i);
newKeyColumnNameValueList.add(i, keyColumnNameValueList.get(j)); newKeyColumnNameValueList.add(i, keyColumnNameValueList.get(j));
} }
} }
@ -523,10 +528,15 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
} }
} else if (returnValue == 1 || returnValue == 2) { } else if (returnValue == 1 || returnValue == 2) {
for (int i = 0; i < selected.length; i++) { for (int i = 0; i < selected.length; i++) {
model.addKeyColumnNameValue(newKeyColumnNameValueList.get(i)); model.addKeyColumnNameValue(newKeyColumnNameValueList.get(i));
} }
} } else if (returnValue == 5){
//新选项和原来没有重复项的情况,产品确认:只做全量增加,原有的清除
for (int i = 0; i < selected.length; i++) {
model.addKeyColumnNameValue(newKeyColumnNameValueList.get(i));
}
}
// Richie:初始化 // Richie:初始化
if (keyColumnNameValueList.isEmpty()) { if (keyColumnNameValueList.isEmpty()) {
@ -535,6 +545,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
model.addKeyColumnNameValue(new KeyColumnNameValue(false, (ColumnName)selected[i], new ColumnValue(""), false)); model.addKeyColumnNameValue(new KeyColumnNameValue(false, (ColumnName)selected[i], new ColumnValue(""), false));
} }
} }
model.fireTableDataChanged(); model.fireTableDataChanged();
keyColumnValuesTable.validate(); keyColumnValuesTable.validate();
} }

15
designer-base/src/main/java/com/fr/env/RemoteEnvPane.java vendored

@ -270,8 +270,13 @@ public class RemoteEnvPane extends BasicBeanPane<RemoteDesignerWorkspaceInfo> {
: new RemoteEnvURL(connection.getUrl()); : new RemoteEnvURL(connection.getUrl());
String username = fromNullable(connection.getUserName()).or(StringUtils.EMPTY); String username = fromNullable(connection.getUserName()).or(StringUtils.EMPTY);
String pwd = fromNullable(connection.getPassword()).or(StringUtils.EMPTY); String pwd = fromNullable(connection.getPassword()).or(StringUtils.EMPTY);
String certPath = fromNullable(connection.getCertPath()).or(StringUtils.EMPTY);
String certSecretKey = fromNullable(connection.getCertSecretKey()).or(StringUtils.EMPTY);
this.usernameInput.setText(username); this.usernameInput.setText(username);
this.passwordInput.setText(pwd); this.passwordInput.setText(pwd);
this.certPathInput.setText(certPath);
this.certSecretKeyInput.setText(certSecretKey);
} }
fillRemoteEnvURLField(); fillRemoteEnvURLField();
@ -290,7 +295,9 @@ public class RemoteEnvPane extends BasicBeanPane<RemoteDesignerWorkspaceInfo> {
WorkspaceConnection connection = new WorkspaceConnection( WorkspaceConnection connection = new WorkspaceConnection(
this.remoteEnvURL.getURL(), this.remoteEnvURL.getURL(),
this.usernameInput.getText(), this.usernameInput.getText(),
new String(this.passwordInput.getPassword())); new String(this.passwordInput.getPassword()),
this.certPathInput.getText(),
new String(this.certSecretKeyInput.getPassword()));
return RemoteDesignerWorkspaceInfo.create(connection); return RemoteDesignerWorkspaceInfo.create(connection);
} }
@ -478,7 +485,11 @@ public class RemoteEnvPane extends BasicBeanPane<RemoteDesignerWorkspaceInfo> {
final RemoteDesignerWorkspaceInfo remoteEnv = updateBean(); final RemoteDesignerWorkspaceInfo remoteEnv = updateBean();
return WorkContext.getConnector().testConnection(remoteEnv.getConnection()); WorkspaceConnection connection = remoteEnv.getConnection();
DesignerEnvManager.getEnvManager().setCertificatePath(connection.getCertPath());
DesignerEnvManager.getEnvManager().setCertificatePass(connection.getCertSecretKey());
return WorkContext.getConnector().testConnection(connection);
} }
@Override @Override

4
designer-base/src/main/java/com/fr/file/FILEFactory.java

@ -35,7 +35,7 @@ public class FILEFactory {
} else if (path.startsWith(FILE_PREFIX)) { } else if (path.startsWith(FILE_PREFIX)) {
return new FileFILE(new java.io.File(path.substring(FILE_PREFIX.length()))); return new FileFILE(new java.io.File(path.substring(FILE_PREFIX.length())));
} else { } else {
return new FileFILE(new java.io.File(path)); return new FileNodeFILE(new FileNode(path, WorkContext.getWorkResource().isDirectory(path)));
} }
} }
@ -52,7 +52,7 @@ public class FILEFactory {
} else if (path.startsWith(FILE_PREFIX)) { } else if (path.startsWith(FILE_PREFIX)) {
return new FileFILE(new java.io.File(path.substring(FILE_PREFIX.length()))); return new FileFILE(new java.io.File(path.substring(FILE_PREFIX.length())));
} else { } else {
return new FileFILE(new java.io.File(path)); return new FileNodeFILE(new FileNode(path, WorkContext.getWorkResource().isDirectory(path)));
} }
} }
} }

7
designer-base/src/main/java/com/fr/file/FileNodeFILE.java

@ -8,6 +8,7 @@ import com.fr.design.gui.itree.filetree.FileTreeIcon;
import com.fr.file.filetree.FileNode; import com.fr.file.filetree.FileNode;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.workspace.resource.WorkResourceOutputStream;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import com.fr.stable.CoreConstants; import com.fr.stable.CoreConstants;
import com.fr.stable.StableUtils; import com.fr.stable.StableUtils;
@ -198,7 +199,6 @@ public class FileNodeFILE implements FILE {
return FRContext.getFileNodes().listWebRootFile(rootFilePath); return FRContext.getFileNodes().listWebRootFile(rootFilePath);
} else { } else {
return FRContext.getFileNodes().list(rootFilePath); return FRContext.getFileNodes().list(rootFilePath);
} }
} catch (Exception e) { } catch (Exception e) {
FRContext.getLogger().error(e.getMessage(), e); FRContext.getLogger().error(e.getMessage(), e);
@ -338,10 +338,7 @@ public class FileNodeFILE implements FILE {
if (!envPath.startsWith(ProjectConstants.REPORTLETS_NAME)) { if (!envPath.startsWith(ProjectConstants.REPORTLETS_NAME)) {
return null; return null;
} }
return FRContext.getCommonOperator().writeBean( return new WorkResourceOutputStream(envPath);
envPath.substring(ProjectConstants.REPORTLETS_NAME.length() + 1),
ProjectConstants.REPORTLETS_NAME
);
} }
/** /**

3
designer-base/src/main/java/com/fr/start/Demo.java

@ -22,9 +22,6 @@ public class Demo {
} else { } else {
executorPath = StableUtils.pathJoin(installHome, "bin", "designer.exe demo"); executorPath = StableUtils.pathJoin(installHome, "bin", "designer.exe demo");
} }
if (!new java.io.File(executorPath).exists()) {
FRContext.getLogger().error(executorPath + " can not be found.");
}
if (OperatingSystem.isMacOS()) { if (OperatingSystem.isMacOS()) {
ProcessBuilder builder = new ProcessBuilder(); ProcessBuilder builder = new ProcessBuilder();

72
designer-base/src/main/java/com/fr/start/ServerStarter.java

@ -22,6 +22,7 @@ import com.fr.stable.StringUtils;
import com.fr.start.server.FineEmbedServer; import com.fr.start.server.FineEmbedServer;
import com.fr.workspace.WorkContext; import com.fr.workspace.WorkContext;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.io.IOException; import java.io.IOException;
@ -39,36 +40,17 @@ public class ServerStarter {
if (!WorkContext.getCurrent().isLocal()) { if (!WorkContext.getCurrent().isLocal()) {
//有问题,这里拿不到远程的http端口 //有问题,这里拿不到远程的http端口
browser(WorkContext.getCurrent().getPath()); browser(WorkContext.getCurrent().getPath());
return;
} }
if (ComparatorUtils.equals(StableUtils.getInstallHome(), ".")) {//august:供代码使用 else if (ComparatorUtils.equals(StableUtils.getInstallHome(), ".")) {//august:供代码使用
String web = GeneralContext.getCurrentAppNameOfEnv(); String web = GeneralContext.getCurrentAppNameOfEnv();
browserURLWithLocalEnv("http://localhost:" + DesignerEnvManager.getEnvManager().getEmbedServerPort() + "/" + web + "/" + ServerConfig.getInstance().getServletName()); browserURLWithLocalEnv("http://localhost:" + DesignerEnvManager.getEnvManager().getEmbedServerPort() + "/" + web + "/" + ServerConfig.getInstance().getServletName());
return; }else{
}
DesignerEnvManager envManager = DesignerEnvManager.getEnvManager();
if (!envManager.isCurrentEnvDefault()) {
InformationPane inf = new InformationPane(envManager.getDefaultEnvName());
inf.showSmallWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() {
@Override
public void doOk() {
try {
WorkContext.switchTo(DesignerWorkspaceGenerator.generate(DesignerEnvManager.getEnvManager().getDefaultConfig()));
TemplateTreePane.getInstance().refreshDockingView();
TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter());
} catch (Exception e) {
FineLoggerFactory.getLogger().error(e.getMessage());
}
initDemoServerAndBrowser();
}
}).setVisible(true);
} else {
initDemoServerAndBrowser(); initDemoServerAndBrowser();
} }
} }
private static void initDemoServerAndBrowser() { private static void initDemoServerAndBrowser() {
try { try {
@ -124,49 +106,5 @@ public class ServerStarter {
} }
} }
private static class InformationPane extends BasicPane {
private static final long serialVersionUID = 1L;
private static final int FREE_STYLE_TOP = 15;
private static final int FREE_STYLE_OTHER = 5;
InformationPane(String message) {
init(message);
}
private void init(String message) {
this.setLayout(new BorderLayout(10, 10));
this.setBorder(BorderFactory.createEmptyBorder(FREE_STYLE_TOP, FREE_STYLE_OTHER, FREE_STYLE_OTHER, FREE_STYLE_OTHER));
String text;
if (!ComparatorUtils.equals(message, Inter.getLocText(new String[]{"Default", "Utils-Report_Runtime_Env"}))) {
text = Inter.getLocText("FR-Designer_Open") +
ProductConstants.APP_NAME +
Inter.getLocText("FR-Designer_Utils-OpenDemoEnv") +
message + Inter.getLocText("FR-Designer_Utils-switch");
} else {
text = Inter.getLocText("FR-Designer_Open") +
ProductConstants.APP_NAME +
Inter.getLocText("FR-Designer_Utils-NewDemoEnv") +
message + Inter.getLocText("FR-Designer_Utils-switch");
}
UITextArea a = new UITextArea(text);
a.setFont(new Font("Dialog", Font.PLAIN, 12));
a.setEditable(false);
a.setBackground(this.getBackground());
a.setLineWrap(true);
this.add(a);
}
@Override
protected String title4PopupWindow() {
return Inter.getLocText("FR-Designer_Tooltips");
}
}
} }

0
designer-base/src/main/java/com/fr/aspectj/designerbase/AlphaFineReminder.aj → designer-base/src/main/resources/com/fr/aspectj/designerbase/AlphaFineReminder.aj

0
designer-base/src/main/java/com/fr/aspectj/designerbase/TemplateProcessTracker.aj → designer-base/src/main/resources/com/fr/aspectj/designerbase/TemplateProcessTracker.aj

0
designer-base/src/main/java/com/fr/common/inputevent/package.html → designer-base/src/main/resources/com/fr/common/inputevent/package.html

0
designer-base/src/main/java/com/fr/design/bbs/package.html → designer-base/src/main/resources/com/fr/design/bbs/package.html

0
designer-base/src/main/java/com/fr/design/border/package.html → designer-base/src/main/resources/com/fr/design/border/package.html

0
designer-base/src/main/java/com/fr/design/bridge/package.html → designer-base/src/main/resources/com/fr/design/bridge/package.html

0
designer-base/src/main/java/com/fr/design/constants/package.html → designer-base/src/main/resources/com/fr/design/constants/package.html

0
designer-base/src/main/java/com/fr/design/data/package.html → designer-base/src/main/resources/com/fr/design/data/package.html

0
designer-base/src/main/java/com/fr/design/data/tabledata/gui/CONTENT.txt → designer-base/src/main/resources/com/fr/design/data/tabledata/gui/CONTENT.txt

0
designer-base/src/main/java/com/fr/design/data/tabledata/gui/EXPLAN1.txt → designer-base/src/main/resources/com/fr/design/data/tabledata/gui/EXPLAN1.txt

0
designer-base/src/main/java/com/fr/design/data/tabledata/gui/EXPLAN2.txt → designer-base/src/main/resources/com/fr/design/data/tabledata/gui/EXPLAN2.txt

0
designer-base/src/main/java/com/fr/design/dialog/package.html → designer-base/src/main/resources/com/fr/design/dialog/package.html

0
designer-base/src/main/java/com/fr/design/editor/package.html → designer-base/src/main/resources/com/fr/design/editor/package.html

0
designer-base/src/main/java/com/fr/design/event/package.html → designer-base/src/main/resources/com/fr/design/event/package.html

0
designer-base/src/main/java/com/fr/design/extra/modal-dialog.css → designer-base/src/main/resources/com/fr/design/extra/modal-dialog.css

0
designer-base/src/main/java/com/fr/design/extra/package.html → designer-base/src/main/resources/com/fr/design/extra/package.html

0
designer-base/src/main/java/com/fr/design/file/package.html → designer-base/src/main/resources/com/fr/design/file/package.html

0
designer-base/src/main/java/com/fr/design/foldablepane/package.html → designer-base/src/main/resources/com/fr/design/foldablepane/package.html

0
designer-base/src/main/java/com/fr/design/formula/package.html → designer-base/src/main/resources/com/fr/design/formula/package.html

0
designer-base/src/main/java/com/fr/design/fun/package.html → designer-base/src/main/resources/com/fr/design/fun/package.html

0
designer-base/src/main/java/com/fr/design/gui/autocomplete/CompletionXml.dtd → designer-base/src/main/resources/com/fr/design/gui/autocomplete/CompletionXml.dtd

0
designer-base/src/main/java/com/fr/design/gui/autocomplete/arrow_left.png → designer-base/src/main/resources/com/fr/design/gui/autocomplete/arrow_left.png

Before

Width:  |  Height:  |  Size: 345 B

After

Width:  |  Height:  |  Size: 345 B

0
designer-base/src/main/java/com/fr/design/gui/autocomplete/arrow_right.png → designer-base/src/main/resources/com/fr/design/gui/autocomplete/arrow_right.png

Before

Width:  |  Height:  |  Size: 349 B

After

Width:  |  Height:  |  Size: 349 B

0
designer-base/src/main/java/com/fr/design/gui/autocomplete/bullet_black.png → designer-base/src/main/resources/com/fr/design/gui/autocomplete/bullet_black.png

Before

Width:  |  Height:  |  Size: 221 B

After

Width:  |  Height:  |  Size: 221 B

0
designer-base/src/main/java/com/fr/design/gui/autocomplete/osx_sizegrip.png → designer-base/src/main/resources/com/fr/design/gui/autocomplete/osx_sizegrip.png

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

0
designer-base/src/main/java/com/fr/design/gui/package.html → designer-base/src/main/resources/com/fr/design/gui/package.html

0
designer-base/src/main/java/com/fr/design/gui/syntax/io/package.html → designer-base/src/main/resources/com/fr/design/gui/syntax/io/package.html

0
designer-base/src/main/java/com/fr/design/gui/syntax/print/package.html → designer-base/src/main/resources/com/fr/design/gui/syntax/print/package.html

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/focusabletip/osx_sizegrip.png → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/focusabletip/osx_sizegrip.png

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/focusabletip/package.html → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/focusabletip/package.html

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/folding/package.html → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/folding/package.html

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/ActionScriptTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/ActionScriptTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/AssemblerX86TokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/AssemblerX86TokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/BBCodeTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/BBCodeTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/CPlusPlusTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/CPlusPlusTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/CSSTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/CSSTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/CSharpTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/CSharpTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/CTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/CTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/ClojureTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/ClojureTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/DelphiTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/DelphiTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/DtdTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/DtdTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/FormulaTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/FormulaTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/FortranTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/FortranTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/GroovyTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/GroovyTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/HTMLTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/HTMLTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/HtaccessTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/HtaccessTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/JSPTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/JSPTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/JavaScriptTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/JavaScriptTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/JavaTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/JavaTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/JsonTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/JsonTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/LatexTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/LatexTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/LispTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/LispTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/LuaTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/LuaTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/MakefileTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/MakefileTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/MxmlTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/MxmlTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/NSISTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/NSISTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/PHPTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/PHPTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/PerlTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/PerlTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/PlainTextTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/PlainTextTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/PropertiesFileTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/PropertiesFileTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/PythonTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/PythonTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/RubyTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/RubyTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/SASTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/SASTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/SQLTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/SQLTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/ScalaTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/ScalaTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/TclTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/TclTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/VisualBasicTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/VisualBasicTokenMaker.flex

0
designer-base/src/main/java/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/XMLTokenMaker.flex → designer-base/src/main/resources/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/XMLTokenMaker.flex

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save