From b3477fb7f88dae3ae559fd6d8385bd59709a00ae Mon Sep 17 00:00:00 2001 From: kerry Date: Thu, 16 Nov 2017 16:01:03 +0800 Subject: [PATCH 1/2] =?UTF-8?q?REPORT-5692=20[9.0=E4=B8=89=E8=BD=AE?= =?UTF-8?q?=E5=9B=9E=E5=BD=92]=20=E6=9F=A5=E8=AF=A2=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E6=94=B9=E5=90=8D=E5=AD=97=E5=90=8E=EF=BC=8C=E4=B8=8D=E4=BC=9A?= =?UTF-8?q?=E7=AB=8B=E5=8D=B3=E5=9C=A8=E8=AE=BE=E8=AE=A1=E5=99=A8=E6=94=B9?= =?UTF-8?q?=E5=8F=98=E5=90=8D=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/designer/creator/XButton.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/designer_form/src/com/fr/design/designer/creator/XButton.java b/designer_form/src/com/fr/design/designer/creator/XButton.java index 9913c27d0..d534f6d63 100644 --- a/designer_form/src/com/fr/design/designer/creator/XButton.java +++ b/designer_form/src/com/fr/design/designer/creator/XButton.java @@ -289,4 +289,21 @@ public class XButton extends XWidgetCreator { protected String getIconName() { return "button_16.png"; } + + /** + * data属性改变触发其他操作 + * + */ + public void firePropertyChange(){ + FreeButton button = (FreeButton) data; + setButtonText(button.getText()); + checkButonType(); + if (button.getFont() != null) { + contentLabel.setFont(button.getFont().applyResolutionNP( + ScreenResolution.getScreenResolution())); + contentLabel.setForeground(button.getFont().getForeground()); + } + + } + } \ No newline at end of file From 3ee3f35bffd0300c658928bb0b7a8c3e416c6f90 Mon Sep 17 00:00:00 2001 From: RichieJi Date: Wed, 22 Nov 2017 10:53:26 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96JavaScript?= =?UTF-8?q?=E4=BB=A3=E7=A0=81+=E7=99=BB=E5=BD=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/images/edit/format.png | Bin 0 -> 463 bytes .../fr/design/javascript/JSContentPane.java | 333 ++++++++++-------- .../com/fr/design/locale/designer.properties | 1 + .../design/locale/designer_en_US.properties | 1 + .../design/locale/designer_ja_JP.properties | 1 + .../design/locale/designer_ko_KR.properties | 1 + .../design/locale/designer_zh_CN.properties | 1 + .../design/locale/designer_zh_TW.properties | 1 + 8 files changed, 192 insertions(+), 147 deletions(-) create mode 100644 designer_base/src/com/fr/design/images/edit/format.png diff --git a/designer_base/src/com/fr/design/images/edit/format.png b/designer_base/src/com/fr/design/images/edit/format.png new file mode 100644 index 0000000000000000000000000000000000000000..9e147853406719e4442c315ea50ac94aa74bc3af GIT binary patch literal 463 zcmV;=0WkiFP)Px$iAh93R5%f1W*`G3XA~J4nws&SKXdXeBdPk6Q}eq2|7R!x>0@MJF=8UcfTWcC z9++m3KBm9_B#1Tuq?v)?e=*ELMn=Z9($WGui8272W?5;$h=zuSe=MKZiB4o<=IG@1 zfBXz)I*d+9&7Tf*@_$AqhP(g%K}10|LpA>ai7H6??m;w23SBc;?Ef|u_D?@P zyZ~A$fTXpbK~bt659WM|H%fr$Q-EP3SZFcc$k6cGyvnYf!d~I4m1D&002ovPDHLk FV1fz~$%X&` literal 0 HcmV?d00001 diff --git a/designer_base/src/com/fr/design/javascript/JSContentPane.java b/designer_base/src/com/fr/design/javascript/JSContentPane.java index 31d005035..47f2b5293 100644 --- a/designer_base/src/com/fr/design/javascript/JSContentPane.java +++ b/designer_base/src/com/fr/design/javascript/JSContentPane.java @@ -1,148 +1,187 @@ -package com.fr.design.javascript; - -import com.fr.design.constants.KeyWords; -import com.fr.design.DesignerEnvManager; -import com.fr.design.gui.autocomplete.*; -import com.fr.design.gui.icontainer.UIScrollPane; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.gui.syntax.ui.rsyntaxtextarea.RSyntaxTextArea; -import com.fr.design.gui.syntax.ui.rsyntaxtextarea.SyntaxConstants; -import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.dialog.BasicPane; - -import javax.swing.*; -import java.awt.*; -import java.util.ArrayList; - -public class JSContentPane extends BasicPane { - private RSyntaxTextArea contentTextArea; - private UILabel funNameLabel; - - private int titleWidth = 180; - - public JSContentPane(String[] args) { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - funNameLabel = new UILabel(); - this.setFunctionTitle(args); - this.add(funNameLabel, BorderLayout.NORTH); - - contentTextArea = new RSyntaxTextArea(); - contentTextArea.setCloseCurlyBraces(true); - contentTextArea.setLineWrap(true); - contentTextArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVASCRIPT); - contentTextArea.setCodeFoldingEnabled(true); - contentTextArea.setAntiAliasingEnabled(true); - - CompletionProvider provider = createCompletionProvider(); - - AutoCompletion ac = new AutoCompletion(provider); - String shortCuts = DesignerEnvManager.getEnvManager().getAutoCompleteShortcuts(); - - ac.setTriggerKey(convert2KeyStroke(shortCuts)); - ac.install(contentTextArea); - - UIScrollPane sp = new UIScrollPane(contentTextArea); - this.add(sp, BorderLayout.CENTER); - - UILabel funNameLabel2 = new UILabel(); - funNameLabel2.setText("}"); - this.add(funNameLabel2, BorderLayout.SOUTH); - } - - private KeyStroke convert2KeyStroke(String ks) { - return KeyStroke.getKeyStroke(ks.replace("+", "pressed")); - } - - @Override - protected String title4PopupWindow() { - return "JS"; - } - - public void populate(String js) { - this.contentTextArea.setText(js); - } - - public String update() { - return this.contentTextArea.getText(); - } - - public void setFunctionTitle(String[] args) { - funNameLabel.setText(createFunctionTitle(args)); - } - - public void setFunctionTitle(String[] args, String[] defaultArgs) { - String[] titles; - if (defaultArgs == null) { - titles = args; - } else if (args == null) { - titles = defaultArgs; - } else { - ArrayList list = new ArrayList(); - for (String s : defaultArgs) { - list.add(s); - } - for (String s : args) { - list.add(s); - } - titles = (String[])list.toArray(new String[list.size()]); - } - setFunctionTitle(titles); - } - - /** - * 用html,方便换行 - * - * @param args - * @return - */ - private String createFunctionTitle(String[] args) { - StringBuffer sb = new StringBuffer(); - sb.append("
function("); - int width = titleWidth; - FontMetrics cellFM = this.getFontMetrics(this.getFont()); - int tempwidth = 0; - if (args != null) { - for (int i = 0; i < args.length; i++) { - if (args[i] == null) { - continue; - } - if (cellFM.stringWidth(args[i]) < width) { - tempwidth = tempwidth + cellFM.stringWidth(args[i]); - if (tempwidth < width) { - sb.append(args[i]); - if (i != args.length - 1) { - sb.append(","); - } - } else { - tempwidth = 0; - i = i - 1;// 后退一步 - sb.append("

     "); - } - } else { - sb.append("

     "); - sb.append(args[i]); - sb.append("

"); - } - } - } - sb.append("){
"); - return sb.toString(); - } - - private CompletionProvider createCompletionProvider() { - - DefaultCompletionProvider provider = new DefaultCompletionProvider(); - - for (String key : KeyWords.JAVASCRIPT) { - provider.addCompletion(new BasicCompletion(provider, key)); - } - - for (String[] key : KeyWords.JAVASCRIPT_SHORT) { - provider.addCompletion(new ShorthandCompletion(provider, key[0], - key[1], key[1])); - } - - return provider; - - } +package com.fr.design.javascript; + +import com.fr.design.DesignerEnvManager; +import com.fr.design.constants.KeyWords; +import com.fr.design.dialog.BasicPane; +import com.fr.design.gui.autocomplete.AutoCompletion; +import com.fr.design.gui.autocomplete.BasicCompletion; +import com.fr.design.gui.autocomplete.CompletionProvider; +import com.fr.design.gui.autocomplete.DefaultCompletionProvider; +import com.fr.design.gui.autocomplete.ShorthandCompletion; +import com.fr.design.gui.icontainer.UIScrollPane; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.syntax.ui.rsyntaxtextarea.RSyntaxTextArea; +import com.fr.design.gui.syntax.ui.rsyntaxtextarea.SyntaxConstants; +import com.fr.design.javascript.beautify.JavaScriptFormatHelper; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.general.IOUtils; +import com.fr.general.Inter; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.ArrayList; + +public class JSContentPane extends BasicPane { + private RSyntaxTextArea contentTextArea; + private UILabel funNameLabel; + + private int titleWidth = 180; + + public JSContentPane(String[] args) { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + funNameLabel = new UILabel(); + this.setFunctionTitle(args); + + UILabel label = new UILabel(Inter.getLocText("FR-Designer_Format_JavaScript"), IOUtils.readIcon("com/fr/design/images/edit/format.png"), SwingConstants.LEFT); + label.setCursor(new Cursor(Cursor.HAND_CURSOR)); + label.setToolTipText(Inter.getLocText("FR-Designer_Format_JavaScript")); + label.addMouseListener(new MouseAdapter() { + @Override + public void mouseReleased(MouseEvent e) { + new SwingWorker() { + @Override + protected String doInBackground() throws Exception { + return JavaScriptFormatHelper.beautify(contentTextArea.getText()); + } + + @Override + protected void done() { + try { + String text = get(); + contentTextArea.setText(text); + } catch (Exception ignore) { + + } + } + }.execute(); + } + }); + + this.add(GUICoreUtils.createBorderLayoutPane( + funNameLabel, BorderLayout.WEST, + label, BorderLayout.EAST + ), BorderLayout.NORTH); + + contentTextArea = new RSyntaxTextArea(); + contentTextArea.setCloseCurlyBraces(true); + contentTextArea.setLineWrap(true); + contentTextArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVASCRIPT); + contentTextArea.setCodeFoldingEnabled(true); + contentTextArea.setAntiAliasingEnabled(true); + + CompletionProvider provider = createCompletionProvider(); + + AutoCompletion ac = new AutoCompletion(provider); + String shortCuts = DesignerEnvManager.getEnvManager().getAutoCompleteShortcuts(); + + ac.setTriggerKey(convert2KeyStroke(shortCuts)); + ac.install(contentTextArea); + + UIScrollPane sp = new UIScrollPane(contentTextArea); + this.add(sp, BorderLayout.CENTER); + + UILabel funNameLabel2 = new UILabel(); + funNameLabel2.setText("}"); + this.add(funNameLabel2, BorderLayout.SOUTH); + } + + private KeyStroke convert2KeyStroke(String ks) { + return KeyStroke.getKeyStroke(ks.replace("+", "pressed")); + } + + @Override + protected String title4PopupWindow() { + return "JS"; + } + + public void populate(String js) { + this.contentTextArea.setText(js); + } + + public String update() { + return this.contentTextArea.getText(); + } + + public void setFunctionTitle(String[] args) { + funNameLabel.setText(createFunctionTitle(args)); + } + + public void setFunctionTitle(String[] args, String[] defaultArgs) { + String[] titles; + if (defaultArgs == null) { + titles = args; + } else if (args == null) { + titles = defaultArgs; + } else { + ArrayList list = new ArrayList(); + for (String s : defaultArgs) { + list.add(s); + } + for (String s : args) { + list.add(s); + } + titles = (String[]) list.toArray(new String[list.size()]); + } + setFunctionTitle(titles); + } + + /** + * 用html,方便换行 + * + * @param args + * @return + */ + private String createFunctionTitle(String[] args) { + StringBuffer sb = new StringBuffer(); + sb.append("
function("); + int width = titleWidth; + FontMetrics cellFM = this.getFontMetrics(this.getFont()); + int tempwidth = 0; + if (args != null) { + for (int i = 0; i < args.length; i++) { + if (args[i] == null) { + continue; + } + if (cellFM.stringWidth(args[i]) < width) { + tempwidth = tempwidth + cellFM.stringWidth(args[i]); + if (tempwidth < width) { + sb.append(args[i]); + if (i != args.length - 1) { + sb.append(","); + } + } else { + tempwidth = 0; + i = i - 1;// 后退一步 + sb.append("

     "); + } + } else { + sb.append("

     "); + sb.append(args[i]); + sb.append("

"); + } + } + } + sb.append("){
"); + return sb.toString(); + } + + private CompletionProvider createCompletionProvider() { + + DefaultCompletionProvider provider = new DefaultCompletionProvider(); + + for (String key : KeyWords.JAVASCRIPT) { + provider.addCompletion(new BasicCompletion(provider, key)); + } + + for (String[] key : KeyWords.JAVASCRIPT_SHORT) { + provider.addCompletion(new ShorthandCompletion(provider, key[0], + key[1], key[1])); + } + + return provider; + + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index 0cde11425..bbed62b64 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -2148,3 +2148,4 @@ FR-Designer_Sheet_Label_Page_Display_Position= FR-Designer_Provide_Choose_All= FR-Designer_Decimal_Places= FR-Designer_Env_Des_Https=If HTTPS is enabled or the HTTPS configuration (certificate path, HTTPS key) is modified, you must restart the designer to take effect. +FR-Designer_Format_JavaScript=Format Code 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 26abebb96..e5608bf89 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 @@ -2147,3 +2147,4 @@ FR-Designer_Sheet_Label_Page_Display_Position= FR-Designer_Provide_Choose_All= FR-Designer_Decimal_Places= FR-Designer_Env_Des_Https=If HTTPS is enabled or the HTTPS configuration (certificate path, HTTPS key) is modified, you must restart the designer to take effect. +FR-Designer_Format_JavaScript=Format Code 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 a4501ea4d..bb5cfc171 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 @@ -2148,3 +2148,4 @@ FR-Designer_Provide_Choose_All=\u5168\u9078\u629E\u53EF\u80FD FR-Designer_Decimal_Places=\u5C0F\u6570\u67A0\u6570: FR-Base-Load_Resource_File=\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u30ED\u30FC\u30C9 FR-Designer_Env_Des_Https= +FR-Designer_Format_JavaScript=Format Code 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 925a7779f..d25124d98 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 @@ -2148,3 +2148,4 @@ FR-Base-Load_Resource_File=\uB85C\uB529\uAD6C\uC131\uD30C\uC77C FR-Designer_Export_Background= FR-Designer_Print_Background= FR-Designer_Env_Des_Https= +FR-Designer_Format_JavaScript=Format Code 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 6590ed583..f7b8d3a3c 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 @@ -2148,3 +2148,4 @@ FR-Designer_Sheet_Label_Page_Display_Position= FR-Designer_Provide_Choose_All= FR-Designer_Decimal_Places= FR-Designer_Env_Des_Https=\u82E5\u542F\u7528https\u6216\u4FEE\u6539https\u914D\u7F6E\uFF08\u8BC1\u4E66\u8DEF\u5F84\u3001https\u79D8\u94A5\uFF09\uFF0C\u5FC5\u987B\u91CD\u542F\u8BBE\u8BA1\u5668\u624D\u80FD\u751F\u6548\u3002 +FR-Designer_Format_JavaScript=\u683C\u5F0F\u5316\u4EE3\u7801 \ No newline at end of file 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 157d30351..42817879e 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 @@ -2147,3 +2147,4 @@ FR-Designer_Sheet_Label_Page_Display_Position= FR-Designer_Provide_Choose_All= FR-Designer_Decimal_Places= FR-Designer_Env_Des_Https=\u82E5\u555F\u7528https\u6216\u4FEE\u6539https\u914D\u7F6E\uFF08\u8B49\u66F8\u8DEF\u5F91\u3001https\u7955\u9470\uFF09\uFF0C\u5FC5\u9808\u91CD\u555F\u8A2D\u8A08\u5668\u624D\u80FD\u751F\u6548\u3002 +FR-Designer_Format_JavaScript=Format Code