From b3477fb7f88dae3ae559fd6d8385bd59709a00ae Mon Sep 17 00:00:00 2001 From: kerry Date: Thu, 16 Nov 2017 16:01:03 +0800 Subject: [PATCH 1/6] =?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 9913c27d08..d534f6d632 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 ed78a57558c35e82fd2828359e81a2bfba82b35d Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Tue, 21 Nov 2017 15:27:41 +0800 Subject: [PATCH 2/6] =?UTF-8?q?REPORT-5668=20=E5=8D=95=E5=85=83=E6=A0=BC?= =?UTF-8?q?=E5=85=83=E7=B4=A0=E4=B8=8E=E6=82=AC=E6=B5=AE=E5=85=83=E7=B4=A0?= =?UTF-8?q?=E5=9B=BE=E8=A1=A8=E9=85=8D=E7=BD=AE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/module/DesignerModule.java | 6 +- .../fr/design/actions/core/ActionFactory.java | 91 +++++++++++++++---- 2 files changed, 76 insertions(+), 21 deletions(-) diff --git a/designer/src/com/fr/design/module/DesignerModule.java b/designer/src/com/fr/design/module/DesignerModule.java index e3fc7b6162..57b25b2b07 100644 --- a/designer/src/com/fr/design/module/DesignerModule.java +++ b/designer/src/com/fr/design/module/DesignerModule.java @@ -151,7 +151,7 @@ public class DesignerModule extends DesignModule { ActionFactory.registerCellEditor(BiasTextPainter.class, new CellBiasTextPainterEditor()); ActionFactory.registerCellEditor(BufferedImage.class, new CellImageQuickEditor()); - ActionFactory.registerChartCellEditorInEditor(new BasicChartQuickEditor()); + ActionFactory.registerChartCellEditorInEditor(BasicChartQuickEditor.class); Set providers = ExtraDesignClassManager.getInstance().getArray(ElementUIProvider.MARK_STRING); for (ElementUIProvider provider : providers) { @@ -173,13 +173,13 @@ public class DesignerModule extends DesignModule { * kunnat: 注册悬浮选中Editor */ private void registerFloatEditor() { - + ActionFactory.registerFloatEditor(String.class, new FloatStringQuickEditor()); ActionFactory.registerFloatEditor(Formula.class, new FloatStringQuickEditor()); ActionFactory.registerFloatEditor(Image.class, new FloatImageQuickEditor()); ActionFactory.registerFloatEditor(BufferedImage.class, new FloatImageQuickEditor()); - ActionFactory.registerChartFloatEditorInEditor(new FloatChartQuickEditor()); + ActionFactory.registerChartFloatEditorInEditor(FloatChartQuickEditor.class); } /** diff --git a/designer_base/src/com/fr/design/actions/core/ActionFactory.java b/designer_base/src/com/fr/design/actions/core/ActionFactory.java index 38f27ca061..7bc73acbb6 100644 --- a/designer_base/src/com/fr/design/actions/core/ActionFactory.java +++ b/designer_base/src/com/fr/design/actions/core/ActionFactory.java @@ -30,15 +30,25 @@ import java.util.concurrent.ConcurrentMap; public class ActionFactory { private static LinkedHashSet> actionClasses = new LinkedHashSet<>(); private static LinkedHashSet> floatActionClasses = new LinkedHashSet<>(); + private static Class chartCollectionClass = null; /** - * 悬浮元素编辑器 + * 无需每次实例化的悬浮元素编辑器 */ private static ConcurrentMap floatEditor = new ConcurrentHashMap<>(); - private static Class chartCollectionClass = null; /** - * 单元格元素编辑器 + * 无需每次实例化的单元格元素编辑器 */ private static ConcurrentMap cellEditor = new ConcurrentHashMap<>(); + + /** + * 需要每次实例化的悬浮元素编辑器 + */ + private static ConcurrentMap> floatEditorClass = new ConcurrentHashMap<>(); + /** + * 需要每次实例化的单元格元素编辑器 + */ + private static ConcurrentMap> cellEditorClass = new ConcurrentHashMap<>(); + private static UpdateAction chartPreStyleAction = null; private static UpdateAction chartMapEditorAction = null; @@ -46,7 +56,7 @@ public class ActionFactory { } /** - * 注册单元格编辑器 + * 注册无需每次实例化的单元格元素编辑器 * * @param clazz 单元格属性类型 * @param editor 单元格编辑器实例 @@ -57,7 +67,7 @@ public class ActionFactory { /** - * 注册悬浮元素编辑器 + * 注册无需每次实例化的悬浮元素编辑器 * * @param clazz 悬浮元素类型 * @param editor 悬浮元素编辑器实例 @@ -66,6 +76,28 @@ public class ActionFactory { floatEditor.put(clazz, editor); } + /** + * 注册需要每次实例化的单元格元素编辑器 + * + * @param clazz 单元格属性类型 + * @param editorClass 单元格编辑器类 + */ + public static void registerCellEditorClass(Class clazz, Class editorClass) { + cellEditorClass.put(clazz, editorClass); + } + + + /** + * 注册需要每次实例化的悬浮元素编辑器 + * + * @param clazz 悬浮元素类型 + * @param editorClass 悬浮元素编辑器类 + */ + public static void registerFloatEditorClass(Class clazz, Class editorClass) { + floatEditorClass.put(clazz, editorClass); + } + + /** * kunsnat: 图表注册 悬浮元素编辑器 , 因为ChartCollecion和ChartQuickEditor一个在Chart,一个在Designer, 所以分开注册. * @@ -97,22 +129,22 @@ public class ActionFactory { /** * kunsnat: 图表注册 悬浮元素编辑器 , 因为ChartCollection和ChartQuickEditor一个在Chart,一个在Designer, 所以分开注册. * - * @param editor 待说明 + * @param editorClass 悬浮元素图表编辑器类 */ - public static void registerChartFloatEditorInEditor(QuickEditor editor) { + public static void registerChartFloatEditorInEditor(Class editorClass) { if (chartCollectionClass != null) { - floatEditor.put(chartCollectionClass, editor); + registerFloatEditorClass(chartCollectionClass, editorClass); } } /** - * kunsnat: 图表注册 悬浮元素编辑器 , 因为ChartCollecion和ChartQuickEditor一个在Chart,一个在Designer, 所以分开注册. + * kunsnat: 图表注册 单元格元素编辑器 , 因为ChartCollecion和ChartQuickEditor一个在Chart,一个在Designer, 所以分开注册. * - * @param editor 待说明 + * @param editorClass 单元格元素图表编辑器类 */ - public static void registerChartCellEditorInEditor(QuickEditor editor) { + public static void registerChartCellEditorInEditor(Class editorClass) { if (chartCollectionClass != null) { - cellEditor.put(chartCollectionClass, editor); + registerCellEditorClass(chartCollectionClass, editorClass); } } @@ -153,7 +185,7 @@ public class ActionFactory { * @return 编辑器实例 */ public static QuickEditor getFloatEditor(Class clazz) { - return createEditor(clazz, floatEditor); + return createEditor(clazz, floatEditor, floatEditorClass); } /** @@ -163,7 +195,7 @@ public class ActionFactory { * @return 编辑器实例 */ public static QuickEditor getCellEditor(Class clazz) { - return createEditor(clazz, cellEditor); + return createEditor(clazz, cellEditor, cellEditorClass); } public static UpdateAction createAction(Class clazz) { @@ -299,17 +331,40 @@ public class ActionFactory { return actions.toArray(new UpdateAction[actions.size()]); } - private static QuickEditor createEditor(Class clazz, Map editorMap) { - QuickEditor c = findQuickEditorClass(clazz, editorMap); + private static QuickEditor createEditor(Class clazz, Map editorMap, Map> editorClassMap) { + QuickEditor c = findQuickEditor(clazz, editorMap); if (c == null) { - FRLogger.getLogger().error("No Such Editor"); + Class cClazz = findQuickEditorClass(clazz, editorClassMap); + if (cClazz == null) { + FRLogger.getLogger().error("No Such Editor"); + return null; + } + try { + Constructor constructor = cClazz.getDeclaredConstructor(); + constructor.setAccessible(true); + return constructor.newInstance(); + } catch (Exception e) { + FRContext.getLogger().error(e.getMessage(), e); + } return null; } return c; } - private static QuickEditor findQuickEditorClass(Class clazz, Map editorMap) { + private static QuickEditor findQuickEditor(Class clazz, Map editorMap) { QuickEditor c = editorMap.get(clazz); + if (c == null) { + Class superClazz = clazz.getSuperclass(); + if (superClazz == null) { + return null; + } + return findQuickEditor(superClazz, editorMap); + } + return c; + } + + private static Class findQuickEditorClass(Class clazz, Map> editorMap) { + Class c = editorMap.get(clazz); if (c == null) { Class superClazz = clazz.getSuperclass(); if (superClazz == null) { From 3ee3f35bffd0300c658928bb0b7a8c3e416c6f90 Mon Sep 17 00:00:00 2001 From: RichieJi Date: Wed, 22 Nov 2017 10:53:26 +0800 Subject: [PATCH 3/6] =?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 31d0050351..47f2b5293d 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 0cde114254..bbed62b646 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 26abebb96c..e5608bf896 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 a4501ea4db..bb5cfc1712 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 925a7779f7..d25124d98e 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 6590ed5838..f7b8d3a3cd 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 157d303519..42817879ea 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 From fb1f22eae842b50751fb22cd9cd6d3e184d6facb Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Wed, 22 Nov 2017 13:46:07 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E4=BC=98=E5=85=88=E5=A4=84=E7=90=86?= =?UTF-8?q?=E5=86=85=E5=AD=98=E9=87=8A=E6=94=BE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/module/DesignerModule.java | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/designer/src/com/fr/design/module/DesignerModule.java b/designer/src/com/fr/design/module/DesignerModule.java index 57b25b2b07..1ec15dabb8 100644 --- a/designer/src/com/fr/design/module/DesignerModule.java +++ b/designer/src/com/fr/design/module/DesignerModule.java @@ -141,22 +141,22 @@ public class DesignerModule extends DesignModule { */ private void registerCellEditor() { - ActionFactory.registerCellEditor(String.class, new CellStringQuickEditor()); - ActionFactory.registerCellEditor(Number.class, new CellStringQuickEditor()); - ActionFactory.registerCellEditor(BaseFormula.class, new CellFormulaQuickEditor()); - ActionFactory.registerCellEditor(SubReport.class, new CellSubReportEditor()); - ActionFactory.registerCellEditor(RichText.class, new CellRichTextEditor()); - ActionFactory.registerCellEditor(DSColumn.class, new CellDSColumnEditor()); - ActionFactory.registerCellEditor(Image.class, new CellImageQuickEditor()); - ActionFactory.registerCellEditor(BiasTextPainter.class, new CellBiasTextPainterEditor()); - ActionFactory.registerCellEditor(BufferedImage.class, new CellImageQuickEditor()); + ActionFactory.registerCellEditorClass(String.class, CellStringQuickEditor.class); + ActionFactory.registerCellEditorClass(Number.class, CellStringQuickEditor.class); + ActionFactory.registerCellEditorClass(BaseFormula.class, CellFormulaQuickEditor.class); + ActionFactory.registerCellEditorClass(SubReport.class, CellSubReportEditor.class); + ActionFactory.registerCellEditorClass(RichText.class, CellRichTextEditor.class); + ActionFactory.registerCellEditorClass(DSColumn.class, CellDSColumnEditor.class); + ActionFactory.registerCellEditorClass(Image.class, CellImageQuickEditor.class); + ActionFactory.registerCellEditorClass(BiasTextPainter.class, CellBiasTextPainterEditor.class); + ActionFactory.registerCellEditorClass(BufferedImage.class, CellImageQuickEditor.class); ActionFactory.registerChartCellEditorInEditor(BasicChartQuickEditor.class); Set providers = ExtraDesignClassManager.getInstance().getArray(ElementUIProvider.MARK_STRING); for (ElementUIProvider provider : providers) { try { - ActionFactory.registerCellEditor(provider.targetObjectClass(), provider.quickEditor().newInstance()); + ActionFactory.registerCellEditorClass(provider.targetObjectClass(), provider.quickEditor()); } catch (Exception e) { FRLogger.getLogger().error(e.getMessage(), e); } @@ -174,10 +174,10 @@ public class DesignerModule extends DesignModule { */ private void registerFloatEditor() { - ActionFactory.registerFloatEditor(String.class, new FloatStringQuickEditor()); - ActionFactory.registerFloatEditor(Formula.class, new FloatStringQuickEditor()); - ActionFactory.registerFloatEditor(Image.class, new FloatImageQuickEditor()); - ActionFactory.registerFloatEditor(BufferedImage.class, new FloatImageQuickEditor()); + ActionFactory.registerFloatEditorClass(String.class, FloatStringQuickEditor.class); + ActionFactory.registerFloatEditorClass(Formula.class, FloatStringQuickEditor.class); + ActionFactory.registerFloatEditorClass(Image.class, FloatImageQuickEditor.class); + ActionFactory.registerFloatEditorClass(BufferedImage.class, FloatImageQuickEditor.class); ActionFactory.registerChartFloatEditorInEditor(FloatChartQuickEditor.class); } From c1523ffdbfee7ace739e9e3b350fd8c4ee75f0a2 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Wed, 22 Nov 2017 11:52:01 +0800 Subject: [PATCH 5/6] =?UTF-8?q?QuickEditor=20=E5=86=85=E5=AD=98=E9=87=8A?= =?UTF-8?q?=E6=94=BE=E9=97=AE=E9=A2=98=E5=92=8C=E5=86=85=E5=AD=98=E6=BF=80?= =?UTF-8?q?=E5=A2=9E=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/dscolumn/DSColumnBasicPane.java | 55 ++++++------- .../SelectedConfirmedDataColumnPane.java | 4 +- .../dscolumn/SelectedDataColumnPane.java | 39 ++++++--- .../fr/design/mainframe/ElementCasePane.java | 80 ++++++++++++++++--- .../mainframe/ReportComponentComposite.java | 5 +- .../cell/AbstractDSCellEditorPane.java | 5 ++ .../com/fr/design/module/DesignerModule.java | 34 ++++---- .../com/fr/grid/selection/CellSelection.java | 58 +++++++++----- .../com/fr/grid/selection/FloatSelection.java | 29 ++++--- .../com/fr/quickeditor/FloatQuickEditor.java | 28 ++++--- .../cellquick/CellDSColumnEditor.java | 32 +++++--- .../cellquick/CellRichTextEditor.java | 5 ++ .../cellquick/CellStringQuickEditor.java | 2 - .../cellquick/CellSubReportEditor.java | 6 ++ .../floatquick/FloatImageQuickEditor.java | 8 +- .../floatquick/FloatStringQuickEditor.java | 66 ++++++++------- .../fr/design/actions/core/ActionFactory.java | 14 ++++ .../fr/design/file/MutilTempalteTabPane.java | 51 ++++++++---- .../fr/design/mainframe/DesignerFrame.java | 23 +++++- .../fr/design/mainframe/JFormSliderPane.java | 80 +++++++++++-------- .../com/fr/design/mainframe/JSliderPane.java | 79 +++++++++++------- .../com/fr/design/selection/QuickEditor.java | 9 ++- .../design/mainframe/WidgetToolBarPane.java | 2 +- 23 files changed, 468 insertions(+), 246 deletions(-) diff --git a/designer/src/com/fr/design/dscolumn/DSColumnBasicPane.java b/designer/src/com/fr/design/dscolumn/DSColumnBasicPane.java index 603356a882..45434fa82c 100644 --- a/designer/src/com/fr/design/dscolumn/DSColumnBasicPane.java +++ b/designer/src/com/fr/design/dscolumn/DSColumnBasicPane.java @@ -14,8 +14,9 @@ import com.fr.report.cell.CellElement; import com.fr.report.cell.TemplateCellElement; import com.fr.report.cell.cellattr.CellExpandAttr; -import javax.swing.*; -import java.awt.*; +import javax.swing.BorderFactory; +import java.awt.BorderLayout; +import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -27,6 +28,29 @@ public class DSColumnBasicPane extends BasicPane { private ExpandDirectionPane expandDirectionPane; private CellElement cellElement; + private ActionListener summaryDirectionActionlistener = new ActionListener() { + + public void actionPerformed(ActionEvent evt) { + if (expandDirectionPane != null) { + expandDirectionPane.setNoneRadioButtonSelected(true); + } + } + }; + private ActionListener othergroupDirectionActionlistener = new ActionListener() { + + public void actionPerformed(ActionEvent evt) { + if (expandDirectionPane != null) { + expandDirectionPane.setNoneRadioButtonSelected(false); + } + } + }; + private ActionListener sdcupdateActionlistener = new ActionListener() { + + public void actionPerformed(ActionEvent evt) { + selectDataColumnPane.update(cellElement); + } + }; + public DSColumnBasicPane() { this(DSColumnPane.SETTING_ALL); } @@ -78,7 +102,7 @@ public class DSColumnBasicPane extends BasicPane { this.add(TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize), BorderLayout.CENTER); - this.resultSetGroupPane.addListeners(summary_direction_ActionListener, otherGroup_direction_ActionListener, sdcUpdate_ActionListener); + this.resultSetGroupPane.addListeners(summaryDirectionActionlistener, othergroupDirectionActionlistener, sdcupdateActionlistener); } @Override @@ -93,7 +117,7 @@ public class DSColumnBasicPane extends BasicPane { this.cellElement = cellElement; - selectDataColumnPane.populate(source, cellElement); + selectDataColumnPane.populate(source, cellElement, null); CellExpandAttr cellExpandAttr = cellElement.getCellExpandAttr(); if (conditionParentPane != null) { @@ -134,29 +158,6 @@ public class DSColumnBasicPane extends BasicPane { resultSetGroupPane.update(); } - ActionListener summary_direction_ActionListener = new ActionListener() { - - public void actionPerformed(ActionEvent evt) { - if (expandDirectionPane != null) { - expandDirectionPane.setNoneRadioButtonSelected(true); - } - } - }; - ActionListener otherGroup_direction_ActionListener = new ActionListener() { - - public void actionPerformed(ActionEvent evt) { - if (expandDirectionPane != null) { - expandDirectionPane.setNoneRadioButtonSelected(false); - } - } - }; - ActionListener sdcUpdate_ActionListener = new ActionListener() { - - public void actionPerformed(ActionEvent evt) { - selectDataColumnPane.update(cellElement); - } - }; - public void putElementcase(ElementCasePane t) { if (conditionParentPane != null) { conditionParentPane.putElementcase(t); diff --git a/designer/src/com/fr/design/dscolumn/SelectedConfirmedDataColumnPane.java b/designer/src/com/fr/design/dscolumn/SelectedConfirmedDataColumnPane.java index e71f539ebb..9552f6ba95 100644 --- a/designer/src/com/fr/design/dscolumn/SelectedConfirmedDataColumnPane.java +++ b/designer/src/com/fr/design/dscolumn/SelectedConfirmedDataColumnPane.java @@ -6,7 +6,7 @@ import com.fr.design.data.tabledata.wrapper.TemplateTableDataWrapper; import com.fr.main.impl.WorkBook; import com.fr.report.cell.TemplateCellElement; -import java.awt.*; +import java.awt.Dimension; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.Iterator; @@ -32,7 +32,7 @@ public class SelectedConfirmedDataColumnPane extends SelectedDataColumnPane { tableNameComboBox.refresh(source); tableNameComboBox.setEditable(false); tableNameComboBox.setEnabled(false); - super.populate(source, cell); + super.populate(source, cell, null); try { Iterator it = source.getTableDataNameIterator(); String name = (String) it.next(); diff --git a/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java b/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java index 362c281667..bb52b766c3 100644 --- a/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java +++ b/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java @@ -26,8 +26,11 @@ import com.fr.report.cell.cellattr.core.group.DSColumn; import com.fr.stable.ParameterProvider; import com.fr.stable.StringUtils; -import javax.swing.*; -import java.awt.*; +import javax.swing.DefaultComboBoxModel; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; @@ -41,7 +44,7 @@ import java.util.regex.Pattern; * * @author yaoh.wu * @version 2017年8月3日 - * 复用对话框代码,保留对话框原始布局 + * 复用对话框代码,保留对话框原始布局 * @since 8.0 */ public class SelectedDataColumnPane extends BasicPane { @@ -53,19 +56,20 @@ public class SelectedDataColumnPane extends BasicPane { private ItemListener itemListener; private UIButton paramButton; + private ElementCasePane casePane; public SelectedDataColumnPane() { - this(true, false, null, null); + this(true, false, null); } public SelectedDataColumnPane(boolean showParameterButton) { - this(showParameterButton, false, null, null); + this(showParameterButton, false, null); } - public SelectedDataColumnPane(boolean showParameterButton, boolean verticalLayout, ElementCasePane casePane, TemplateCellElement cellElement) { + public SelectedDataColumnPane(boolean showParameterButton, boolean verticalLayout, TemplateCellElement cellElement) { if (verticalLayout) { - initComponentVerticalLayout(casePane, cellElement); + initComponentVerticalLayout(cellElement); } else { initComponent(showParameterButton); } @@ -119,9 +123,9 @@ public class SelectedDataColumnPane extends BasicPane { /** * 初始化竖直布局的组件 */ - public void initComponentVerticalLayout(ElementCasePane casePane, TemplateCellElement cellElement) { + private void initComponentVerticalLayout(TemplateCellElement cellElement) { initTableNameComboBox(); - initWithParameterButton(casePane, cellElement); + initWithParameterButton(cellElement); columnNameComboBox = new LazyComboBox() { @Override public Object[] load() { @@ -149,7 +153,9 @@ public class SelectedDataColumnPane extends BasicPane { } - public void populate(TableDataSource source, TemplateCellElement cellElement) { + public void populate(TableDataSource source, TemplateCellElement cellElement, ElementCasePane casePane) { + tableNameComboBox.refresh(source); + this.casePane = casePane; if (cellElement == null) { return; } @@ -191,6 +197,14 @@ public class SelectedDataColumnPane extends BasicPane { dsColumn.setParameters((ps != null && ps.length > 0) ? ps : null); } + /** + * 释放模板对象 + */ + public void release() { + this.casePane = null; + this.tableNameComboBox.setModel(new DefaultComboBoxModel()); + } + /** * 更新面板 * @@ -279,8 +293,7 @@ public class SelectedDataColumnPane extends BasicPane { }); } - private void initWithParameterButton(final ElementCasePane casePane, final TemplateCellElement cellElement) { - final SelectedDataColumnPane that = this; + private void initWithParameterButton(final TemplateCellElement cellElement) { editorPane = new UITableEditorPane(new ParameterTableModel()); paramButton = new UIButton(Inter.getLocText("FR-Designer-Basic_Dynamic_Parameter_Injection")); paramButton.addActionListener(new ActionListener() { @@ -290,7 +303,7 @@ public class SelectedDataColumnPane extends BasicPane { public void doOk() { List parameterList = editorPane.update(); ps = parameterList.toArray(new Parameter[parameterList.size()]); - that.update(cellElement); + update(cellElement); casePane.fireTargetModified(); } }); diff --git a/designer/src/com/fr/design/mainframe/ElementCasePane.java b/designer/src/com/fr/design/mainframe/ElementCasePane.java index 656d2ec93a..f65e660ac7 100644 --- a/designer/src/com/fr/design/mainframe/ElementCasePane.java +++ b/designer/src/com/fr/design/mainframe/ElementCasePane.java @@ -3,7 +3,13 @@ */ package com.fr.design.mainframe; -import com.fr.base.*; +import com.fr.base.BaseFormula; +import com.fr.base.BaseUtils; +import com.fr.base.DynamicUnitList; +import com.fr.base.FRContext; +import com.fr.base.Formula; +import com.fr.base.ScreenResolution; +import com.fr.base.Style; import com.fr.design.DesignState; import com.fr.design.DesignerEnvManager; import com.fr.design.ExtraDesignClassManager; @@ -12,8 +18,30 @@ import com.fr.design.actions.ExitAuthorityEditAction; import com.fr.design.actions.UpdateAction; import com.fr.design.actions.cell.BorderAction; import com.fr.design.actions.cell.CleanAuthorityAction; -import com.fr.design.actions.cell.style.*; -import com.fr.design.actions.columnrow.*; +import com.fr.design.actions.cell.style.AlignmentAction; +import com.fr.design.actions.cell.style.ReportFontBoldAction; +import com.fr.design.actions.cell.style.ReportFontForegroundAction; +import com.fr.design.actions.cell.style.ReportFontItalicAction; +import com.fr.design.actions.cell.style.ReportFontNameAction; +import com.fr.design.actions.cell.style.ReportFontSizeAction; +import com.fr.design.actions.cell.style.ReportFontUnderlineAction; +import com.fr.design.actions.cell.style.StyleBackgroundAction; +import com.fr.design.actions.columnrow.CancelColumnAction; +import com.fr.design.actions.columnrow.CancelRowAction; +import com.fr.design.actions.columnrow.ColumnHideAction; +import com.fr.design.actions.columnrow.ColumnWidthAction; +import com.fr.design.actions.columnrow.DeleteColumnAction; +import com.fr.design.actions.columnrow.DeleteRowAction; +import com.fr.design.actions.columnrow.FootColumnAction; +import com.fr.design.actions.columnrow.FootRowAction; +import com.fr.design.actions.columnrow.HeadColumnAction; +import com.fr.design.actions.columnrow.HeadRowAction; +import com.fr.design.actions.columnrow.InsertColumnAction; +import com.fr.design.actions.columnrow.InsertRowAction; +import com.fr.design.actions.columnrow.ResetColumnHideAction; +import com.fr.design.actions.columnrow.ResetRowHideAction; +import com.fr.design.actions.columnrow.RowHeightAction; +import com.fr.design.actions.columnrow.RowHideAction; import com.fr.design.actions.core.ActionFactory; import com.fr.design.actions.edit.CopyAction; import com.fr.design.actions.edit.CutAction; @@ -24,8 +52,17 @@ import com.fr.design.cell.bar.DynamicScrollBar; import com.fr.design.cell.clipboard.CellElementsClip; import com.fr.design.cell.clipboard.ElementsTransferable; import com.fr.design.cell.clipboard.FloatElementsClip; -import com.fr.design.cell.editor.*; +import com.fr.design.cell.editor.BiasTextPainterCellEditor; import com.fr.design.cell.editor.CellEditor; +import com.fr.design.cell.editor.ChartCellEditor; +import com.fr.design.cell.editor.ChartFloatEditor; +import com.fr.design.cell.editor.DSColumnCellEditor; +import com.fr.design.cell.editor.FormulaCellEditor; +import com.fr.design.cell.editor.FormulaFloatEditor; +import com.fr.design.cell.editor.ImageCellEditor; +import com.fr.design.cell.editor.ImageFloatEditor; +import com.fr.design.cell.editor.RichTextCellEditor; +import com.fr.design.cell.editor.SubReportCellEditor; import com.fr.design.constants.UIConstants; import com.fr.design.designer.EditingState; import com.fr.design.designer.TargetComponent; @@ -35,7 +72,11 @@ import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.imenu.UIPopupMenu; import com.fr.design.mainframe.cell.QuickEditorRegion; import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus; -import com.fr.design.menu.*; +import com.fr.design.menu.KeySetUtils; +import com.fr.design.menu.MenuDef; +import com.fr.design.menu.NameSeparator; +import com.fr.design.menu.ShortCut; +import com.fr.design.menu.ToolBarDef; import com.fr.design.selection.QuickEditor; import com.fr.design.selection.Selectedable; import com.fr.design.selection.SelectionEvent; @@ -43,7 +84,11 @@ import com.fr.design.selection.SelectionListener; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; import com.fr.general.Inter; -import com.fr.grid.*; +import com.fr.grid.Grid; +import com.fr.grid.GridColumn; +import com.fr.grid.GridCorner; +import com.fr.grid.GridRow; +import com.fr.grid.GridUtils; import com.fr.grid.dnd.ElementCasePaneDropTarget; import com.fr.grid.selection.CellSelection; import com.fr.grid.selection.Selection; @@ -65,12 +110,27 @@ import com.fr.stable.ArrayUtils; import com.fr.stable.ColumnRow; import com.fr.stable.unit.FU; -import javax.swing.*; -import java.awt.*; +import javax.swing.AbstractAction; +import javax.swing.ActionMap; +import javax.swing.InputMap; +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.JScrollBar; +import javax.swing.KeyStroke; +import java.awt.AWTEvent; +import java.awt.Adjustable; +import java.awt.Dimension; +import java.awt.Image; +import java.awt.Rectangle; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; -import java.awt.event.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.lang.reflect.Constructor; import java.util.Set; @@ -462,6 +522,8 @@ public abstract class ElementCasePane extends Tar * 因为这边判断selection是一个selection,所以不会触发fireSelectionChanged */ public void setSelection(Selection selection) { + //旧选中内容编辑器释放模板对象 + this.getCurrentEditor().release(); if (!ComparatorUtils.equals(this.selection, selection) || !ComparatorUtils.equals(EastRegionContainerPane.getInstance().getCellAttrPane(), CellElementPropertyPane.getInstance())) { this.selection = selection; diff --git a/designer/src/com/fr/design/mainframe/ReportComponentComposite.java b/designer/src/com/fr/design/mainframe/ReportComponentComposite.java index 6d6a9b9fcc..70b75e1576 100644 --- a/designer/src/com/fr/design/mainframe/ReportComponentComposite.java +++ b/designer/src/com/fr/design/mainframe/ReportComponentComposite.java @@ -127,9 +127,8 @@ public class ReportComponentComposite extends JComponent { templateStateList.add(null); } centerCardPane.editingComponet.setSelection(centerCardPane.editingComponet.getDefaultSelectElement()); - if (jSliderContainer != null){ - jSliderContainer.reset(); - } + jSliderContainer=JSliderPane.getInstance(); + jSliderContainer.reset(); } if (centerCardPane.editingComponet.elementCasePane == null) { diff --git a/designer/src/com/fr/design/mainframe/cell/AbstractDSCellEditorPane.java b/designer/src/com/fr/design/mainframe/cell/AbstractDSCellEditorPane.java index a56d251a7a..8a3b2ded4d 100644 --- a/designer/src/com/fr/design/mainframe/cell/AbstractDSCellEditorPane.java +++ b/designer/src/com/fr/design/mainframe/cell/AbstractDSCellEditorPane.java @@ -120,4 +120,9 @@ public abstract class AbstractDSCellEditorPane extends JPanel { scrollBar.setBlockIncrement(SCROLLBAR_WIDTH + CONTENT_PANE_WIDTH_GAP); scrollBar.setBorder(BorderFactory.createMatteBorder(0, CONTENT_PANE_WIDTH_GAP, 0, 0, this.getBackground())); } + + /** + * 释放tc + */ + protected abstract void release(); } diff --git a/designer/src/com/fr/design/module/DesignerModule.java b/designer/src/com/fr/design/module/DesignerModule.java index 1ec15dabb8..c87ef19875 100644 --- a/designer/src/com/fr/design/module/DesignerModule.java +++ b/designer/src/com/fr/design/module/DesignerModule.java @@ -140,23 +140,21 @@ public class DesignerModule extends DesignModule { * kunsnat:注册单元格选中Editor */ private void registerCellEditor() { - - ActionFactory.registerCellEditorClass(String.class, CellStringQuickEditor.class); - ActionFactory.registerCellEditorClass(Number.class, CellStringQuickEditor.class); - ActionFactory.registerCellEditorClass(BaseFormula.class, CellFormulaQuickEditor.class); - ActionFactory.registerCellEditorClass(SubReport.class, CellSubReportEditor.class); - ActionFactory.registerCellEditorClass(RichText.class, CellRichTextEditor.class); - ActionFactory.registerCellEditorClass(DSColumn.class, CellDSColumnEditor.class); - ActionFactory.registerCellEditorClass(Image.class, CellImageQuickEditor.class); - ActionFactory.registerCellEditorClass(BiasTextPainter.class, CellBiasTextPainterEditor.class); - ActionFactory.registerCellEditorClass(BufferedImage.class, CellImageQuickEditor.class); - + ActionFactory.registerCellEditor(String.class, new CellStringQuickEditor()); + ActionFactory.registerCellEditor(Number.class, new CellStringQuickEditor()); + ActionFactory.registerCellEditor(BaseFormula.class, new CellFormulaQuickEditor()); + ActionFactory.registerCellEditor(SubReport.class, new CellSubReportEditor()); + ActionFactory.registerCellEditor(RichText.class, new CellRichTextEditor()); + ActionFactory.registerCellEditor(DSColumn.class, new CellDSColumnEditor()); + ActionFactory.registerCellEditor(Image.class, new CellImageQuickEditor()); + ActionFactory.registerCellEditor(BiasTextPainter.class, new CellBiasTextPainterEditor()); + ActionFactory.registerCellEditor(BufferedImage.class, new CellImageQuickEditor()); + //todo 图表编辑器populate没能实现刷新面板显示 ActionFactory.registerChartCellEditorInEditor(BasicChartQuickEditor.class); - Set providers = ExtraDesignClassManager.getInstance().getArray(ElementUIProvider.MARK_STRING); for (ElementUIProvider provider : providers) { try { - ActionFactory.registerCellEditorClass(provider.targetObjectClass(), provider.quickEditor()); + ActionFactory.registerCellEditor(provider.targetObjectClass(), provider.quickEditor().newInstance()); } catch (Exception e) { FRLogger.getLogger().error(e.getMessage(), e); } @@ -174,11 +172,11 @@ public class DesignerModule extends DesignModule { */ private void registerFloatEditor() { - ActionFactory.registerFloatEditorClass(String.class, FloatStringQuickEditor.class); - ActionFactory.registerFloatEditorClass(Formula.class, FloatStringQuickEditor.class); - ActionFactory.registerFloatEditorClass(Image.class, FloatImageQuickEditor.class); - ActionFactory.registerFloatEditorClass(BufferedImage.class, FloatImageQuickEditor.class); - + ActionFactory.registerFloatEditor(String.class, new FloatStringQuickEditor()); + ActionFactory.registerFloatEditor(Formula.class, new FloatStringQuickEditor()); + ActionFactory.registerFloatEditor(Image.class, new FloatImageQuickEditor()); + ActionFactory.registerFloatEditor(BufferedImage.class, new FloatImageQuickEditor()); + //todo 图表编辑器populate没能实现刷新面板显示 ActionFactory.registerChartFloatEditorInEditor(FloatChartQuickEditor.class); } diff --git a/designer/src/com/fr/grid/selection/CellSelection.java b/designer/src/com/fr/grid/selection/CellSelection.java index c501efd265..3201c44344 100644 --- a/designer/src/com/fr/grid/selection/CellSelection.java +++ b/designer/src/com/fr/grid/selection/CellSelection.java @@ -49,8 +49,9 @@ import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.unit.FU; -import javax.swing.*; -import java.awt.*; +import javax.swing.JOptionPane; +import javax.swing.SwingUtilities; +import java.awt.Rectangle; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -114,6 +115,7 @@ public class CellSelection extends Selection { /** * 增加选中的区域 + * * @param cellRectangle 区域 */ public void addCellRectangle(Rectangle cellRectangle) { @@ -164,6 +166,7 @@ public class CellSelection extends Selection { /** * 清除区域块 + * * @param i 区域块 */ public void clearCellRectangles(int i) { @@ -172,8 +175,9 @@ public class CellSelection extends Selection { /** * 包含单元格 - * @param column 列 - * @param row 行 + * + * @param column 列 + * @param row 行 * @return 若不包含返回-1 */ public int containsCell(int column, int row) { @@ -205,6 +209,7 @@ public class CellSelection extends Selection { /** * 转换成矩形 + * * @return 矩形 */ public Rectangle toRectangle() { @@ -213,6 +218,7 @@ public class CellSelection extends Selection { /** * 是否选择一个单元格 + * * @param ePane 区域 * @return 是则返回rue */ @@ -239,8 +245,9 @@ public class CellSelection extends Selection { /** * 作为可传输的 + * * @param transferable 传输介质 - * @param ePane 区域 + * @param ePane 区域 */ public void asTransferable(ElementsTransferable transferable, ElementCasePane ePane) { java.util.List list = new java.util.ArrayList(); @@ -251,12 +258,12 @@ public class CellSelection extends Selection { TemplateCellElement cellElement = (TemplateCellElement) cells.next(); list.add((TemplateCellElement) cellElement.deriveCellElement(cellElement.getColumn() - column, cellElement.getRow() - row)); } - FU [] columnWidth = new FU[columnSpan]; - FU [] rowHeight = new FU[rowSpan]; - for (int i = 0; i < columnSpan; i++){ + FU[] columnWidth = new FU[columnSpan]; + FU[] rowHeight = new FU[rowSpan]; + for (int i = 0; i < columnSpan; i++) { columnWidth[i] = ec.getColumnWidth(this.column + i); } - for (int j = 0; j < rowSpan; j++){ + for (int j = 0; j < rowSpan; j++) { rowHeight[j] = ec.getRowHeight(this.row + j); } transferable.addObject(new CellElementsClip(this.columnSpan, this.rowSpan, columnWidth, rowHeight, list.toArray(new TemplateCellElement[list.size()]))); @@ -264,9 +271,10 @@ public class CellSelection extends Selection { /** * 黏贴单元格 + * * @param ceClip 单元格 - * @param ePane 区域 - * @return 成功返回true + * @param ePane 区域 + * @return 成功返回true */ @Override public boolean pasteCellElementsClip(CellElementsClip ceClip, ElementCasePane ePane) { @@ -281,8 +289,9 @@ public class CellSelection extends Selection { /** * 黏贴字符串 - * @param str 字符串 - * @param ePane 区域 + * + * @param str 字符串 + * @param ePane 区域 * @return 成功返回true */ @Override @@ -329,7 +338,8 @@ public class CellSelection extends Selection { /** * 黏贴其他 - * @param ob 要黏贴的东西 + * + * @param ob 要黏贴的东西 * @param ePane 区域 * @return 成功返回true */ @@ -352,6 +362,7 @@ public class CellSelection extends Selection { /** * 是否能合并单元格 + * * @param ePane 区域 * @return 是则返回true */ @@ -363,6 +374,7 @@ public class CellSelection extends Selection { /** * 合并单元格 + * * @param ePane 区域 * @return 成功返回true */ @@ -386,6 +398,7 @@ public class CellSelection extends Selection { /** * 是否撤销合并单元格 + * * @param ePane 区域 * @return 是则返回true */ @@ -407,6 +420,7 @@ public class CellSelection extends Selection { /** * 撤销合并单元格 + * * @param ePane 区域 * @return 成功返回true */ @@ -443,6 +457,7 @@ public class CellSelection extends Selection { /** * 创建弹出菜单 + * * @param ePane 区域 * @return 菜单 */ @@ -477,7 +492,7 @@ public class CellSelection extends Selection { popup.add(DeprecatedActionManager.getPresentMenu(ePane).createJMenu()); popup.add(new CellAttributeAction().createMenuItem()); JTemplate jTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); - if (jTemplate.isJWorkBook()){ //表单中报表块编辑屏蔽掉 控件设置 + if (jTemplate.isJWorkBook()) { //表单中报表块编辑屏蔽掉 控件设置 popup.add(new CellWidgetAttrAction().createMenuItem()); } popup.add(new ConditionAttributesAction().createMenuItem()); @@ -497,8 +512,9 @@ public class CellSelection extends Selection { /** * 清除 - * @param type 要清除的类型 - * @param ePane 区域 + * + * @param type 要清除的类型 + * @param ePane 区域 * @return 成功返回true */ @Override @@ -581,6 +597,7 @@ public class CellSelection extends Selection { /** * 向左移动 + * * @param ePane 区域 */ public void moveLeft(ElementCasePane ePane) { @@ -592,6 +609,7 @@ public class CellSelection extends Selection { /** * 向右移动 + * * @param ePane 区域 */ public void moveRight(ElementCasePane ePane) { @@ -600,6 +618,7 @@ public class CellSelection extends Selection { /** * 向上移动 + * * @param ePane 区域 */ public void moveUp(ElementCasePane ePane) { @@ -611,6 +630,7 @@ public class CellSelection extends Selection { /** * 向下移动 + * * @param ePane 区域 */ public void moveDown(ElementCasePane ePane) { @@ -626,6 +646,7 @@ public class CellSelection extends Selection { /** * 触发删除动作 + * * @param ePane 区域 * @return 成功返回true */ @@ -657,6 +678,7 @@ public class CellSelection extends Selection { /** * 包含行列 + * * @param cr 行列 * @return 包含返回true */ @@ -716,7 +738,7 @@ public class CellSelection extends Selection { CellElementPropertyPane.getInstance().reInit(ePane); } - public void populateWidgetPropertyPane(ElementCasePane ePane){ + public void populateWidgetPropertyPane(ElementCasePane ePane) { CellWidgetPropertyPane.getInstance().reInit(ePane); } diff --git a/designer/src/com/fr/grid/selection/FloatSelection.java b/designer/src/com/fr/grid/selection/FloatSelection.java index de44152f77..534312a0a3 100644 --- a/designer/src/com/fr/grid/selection/FloatSelection.java +++ b/designer/src/com/fr/grid/selection/FloatSelection.java @@ -1,34 +1,40 @@ package com.fr.grid.selection; -import java.awt.Toolkit; - -import javax.swing.JPopupMenu; - import com.fr.base.BaseUtils; import com.fr.base.FRContext; import com.fr.design.actions.cell.CleanAuthorityAction; import com.fr.design.actions.cell.FloatStyleAction; import com.fr.design.actions.core.ActionFactory; -import com.fr.design.actions.edit.*; +import com.fr.design.actions.edit.CopyAction; +import com.fr.design.actions.edit.CutAction; +import com.fr.design.actions.edit.DeleteAction; +import com.fr.design.actions.edit.EditFloatElementNameAction; +import com.fr.design.actions.edit.HyperlinkAction; +import com.fr.design.actions.edit.PasteAction; import com.fr.design.actions.utils.DeprecatedActionManager; import com.fr.design.cell.clipboard.CellElementsClip; import com.fr.design.cell.clipboard.ElementsTransferable; import com.fr.design.cell.clipboard.FloatElementsClip; import com.fr.design.designer.TargetComponent; import com.fr.design.mainframe.CellElementPropertyPane; -import com.fr.general.ComparatorUtils; -import com.fr.general.Inter; import com.fr.design.mainframe.ElementCasePane; import com.fr.design.mainframe.ElementCasePane.Clear; +import com.fr.design.selection.QuickEditor; +import com.fr.design.utils.DesignUtils; +import com.fr.general.ComparatorUtils; +import com.fr.general.Inter; import com.fr.report.cell.FloatElement; import com.fr.report.elementcase.TemplateElementCase; -import com.fr.design.selection.QuickEditor; import com.fr.stable.ColumnRow; import com.fr.stable.unit.FU; import com.fr.stable.unit.OLDPIX; -import com.fr.design.utils.DesignUtils; + +import javax.swing.JPopupMenu; +import java.awt.Toolkit; + /** * the float selection + * * @editor zhou * 2012-3-22下午2:09:20 */ @@ -209,6 +215,7 @@ public class FloatSelection extends Selection { public boolean isSelectedOneCell(ElementCasePane ePane) { return false; } + //TODO:august 这儿不比较FloatElement会不会有问题啊 @Override public boolean equals(Object obj) { @@ -232,8 +239,8 @@ public class FloatSelection extends Selection { CellElementPropertyPane.getInstance().removeAll(); } - public void populateWidgetPropertyPane(ElementCasePane ePane){ - return; + public void populateWidgetPropertyPane(ElementCasePane ePane) { + } } \ No newline at end of file diff --git a/designer/src/com/fr/quickeditor/FloatQuickEditor.java b/designer/src/com/fr/quickeditor/FloatQuickEditor.java index 6a9fa1475f..db24065a39 100644 --- a/designer/src/com/fr/quickeditor/FloatQuickEditor.java +++ b/designer/src/com/fr/quickeditor/FloatQuickEditor.java @@ -1,24 +1,32 @@ package com.fr.quickeditor; import com.fr.design.mainframe.ElementCasePane; +import com.fr.design.selection.QuickEditor; import com.fr.grid.selection.FloatSelection; import com.fr.report.cell.FloatElement; -import com.fr.design.selection.QuickEditor; /** - * * @author zhou * @since 2012-7-23下午5:17:23 */ public abstract class FloatQuickEditor extends QuickEditor { - protected FloatElement floatElement; + protected FloatElement floatElement; + + @Override + protected void refresh() { + FloatSelection fs = (FloatSelection) tc.getSelection(); + floatElement = tc.getEditingElementCase().getFloatElement(fs.getSelectedFloatName()); + refreshDetails(); + } - @Override - protected void refresh() { - FloatSelection fs = (FloatSelection)tc.getSelection(); - floatElement = tc.getEditingElementCase().getFloatElement(fs.getSelectedFloatName()); - refreshDetails(); - } + /** + * 刷新详细信息 + */ + protected abstract void refreshDetails(); - protected abstract void refreshDetails(); + @Override + public void release() { + super.release(); + floatElement = null; + } } \ No newline at end of file diff --git a/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java index 1ae401bc5e..ea872d01cf 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java @@ -141,17 +141,6 @@ public class CellDSColumnEditor extends CellQuickEditor { } - /** - * 关闭时候释放 - */ - @Override - public void release() { - super.release(); - dsColumnRegion = null; - centerPane = null; - } - - /** * 初始化基本和高级设置切换tab */ @@ -187,6 +176,12 @@ public class CellDSColumnEditor extends CellQuickEditor { paneList.add(cellDSColumnAdvancedPane); } + @Override + public void release() { + super.release(); + cellDSColumnBasicPane.release(); + cellDSColumnAdvancedPane.release(); + } /** * 单元格元素 数据列 高级设置内容面板 @@ -252,7 +247,7 @@ public class CellDSColumnEditor extends CellQuickEditor { }; DSColumnBasicEditorPane() { - dataPane = new SelectedDataColumnPane(true, true, tc, cellElement); + dataPane = new SelectedDataColumnPane(true, true, cellElement); groupPane = new ResultSetGroupDockingPane(); dataPane.addListener(dataListener); groupPane.setListener(groupListener); @@ -297,13 +292,19 @@ public class CellDSColumnEditor extends CellQuickEditor { @Override public void populate() { - dataPane.populate(null, cellElement); + dataPane.populate(DesignTableDataManager.getEditingTableDataSource(), cellElement, tc); groupPane.populate(cellElement); if (tc != null) { condition.setEditingComponent(tc); } } + @Override + protected void release() { + condition.setEditingComponent(null); + dataPane.release(); + } + /** * 创建有内容的面板显示信息 @@ -434,6 +435,11 @@ public class CellDSColumnEditor extends CellQuickEditor { } } + @Override + protected void release() { + + } + /** * 更新单元格扩展属性 */ diff --git a/designer/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java index 461dee3eee..29503d051f 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java @@ -58,4 +58,9 @@ public class CellRichTextEditor extends CellQuickEditor { return true; } + @Override + public void release() { + super.release(); + richTextButton.setAction(null); + } } \ No newline at end of file diff --git a/designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java index e8f79166ad..e90e277153 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java @@ -3,7 +3,6 @@ package com.fr.quickeditor.cellquick; import com.fr.base.BaseFormula; import com.fr.base.Style; import com.fr.base.TextFormat; -import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextarea.UITextArea; import com.fr.grid.GridKeyListener; import com.fr.grid.selection.CellSelection; @@ -18,7 +17,6 @@ import javax.swing.JPanel; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import java.awt.BorderLayout; -import java.awt.Dimension; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; diff --git a/designer/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java index cfa362cb38..b33deff88b 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java @@ -56,4 +56,10 @@ public class CellSubReportEditor extends CellQuickEditor { public boolean isScrollAll() { return true; } + + @Override + public void release() { + super.release(); + subReportButton.setAction(null); + } } \ No newline at end of file diff --git a/designer/src/com/fr/quickeditor/floatquick/FloatImageQuickEditor.java b/designer/src/com/fr/quickeditor/floatquick/FloatImageQuickEditor.java index 81507186ba..5d8a72e002 100644 --- a/designer/src/com/fr/quickeditor/floatquick/FloatImageQuickEditor.java +++ b/designer/src/com/fr/quickeditor/floatquick/FloatImageQuickEditor.java @@ -12,8 +12,10 @@ import com.fr.general.Inter; import com.fr.quickeditor.FloatQuickEditor; import com.fr.report.cell.cellattr.CellImage; -import javax.swing.*; -import java.awt.*; +import javax.swing.BorderFactory; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -70,8 +72,6 @@ public class FloatImageQuickEditor extends FloatQuickEditor { @Override protected void refreshDetails() { - // TODO Auto-generated method stub - } } \ No newline at end of file diff --git a/designer/src/com/fr/quickeditor/floatquick/FloatStringQuickEditor.java b/designer/src/com/fr/quickeditor/floatquick/FloatStringQuickEditor.java index 1f5718a9e9..eae3e81dc0 100644 --- a/designer/src/com/fr/quickeditor/floatquick/FloatStringQuickEditor.java +++ b/designer/src/com/fr/quickeditor/floatquick/FloatStringQuickEditor.java @@ -12,10 +12,16 @@ import com.fr.quickeditor.FloatQuickEditor; import com.fr.report.ReportHelper; import com.fr.stable.StringUtils; -import javax.swing.*; +import javax.swing.BorderFactory; +import javax.swing.JPanel; +import javax.swing.JTextArea; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; -import java.awt.*; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -27,6 +33,25 @@ public class FloatStringQuickEditor extends FloatQuickEditor { private boolean reserveInResult = false; private boolean reserveOnWriteOrAnaly = true; + private DocumentListener documentListener = new DocumentListener() { + + @Override + public void insertUpdate(DocumentEvent e) { + changeReportPaneCell(stringTextField.getText().trim()); + } + + @Override + public void removeUpdate(DocumentEvent e) { + changeReportPaneCell(stringTextField.getText().trim()); + } + + @Override + public void changedUpdate(DocumentEvent e) { + changeReportPaneCell(stringTextField.getText().trim()); + } + + }; + public FloatStringQuickEditor() { super(); stringTextField = new JTextArea(); @@ -34,11 +59,17 @@ public class FloatStringQuickEditor extends FloatQuickEditor { formulaButton = new UIButton(); formulaButton.setPreferredSize(new Dimension(25, 23)); formulaButton.setIcon(BaseUtils.readIcon("/com/fr/design/images/m_insert/formula.png")); + ActionListener getFormulaActionListener = new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + ((ElementCasePane) HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getCurrentElementCasePane()).getGrid().startEditing(); + } + }; formulaButton.addActionListener(getFormulaActionListener); JPanel pane = new JPanel(new BorderLayout(5, 0)); pane.add(stringTextField, BorderLayout.CENTER); pane.add(formulaButton, BorderLayout.EAST); - pane.setBorder(BorderFactory.createEmptyBorder(0,0,0,5)); + pane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5)); formulaButton.setVisible(false); this.setLayout(new BorderLayout()); this.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); @@ -55,16 +86,10 @@ public class FloatStringQuickEditor extends FloatQuickEditor { stringTextField.setBackground(Color.WHITE); } - ActionListener getFormulaActionListener = new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - ((ElementCasePane) HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getCurrentElementCasePane()).getGrid().startEditing(); - } - }; @Override protected void refreshDetails() { - String str = null; + String str; Object value = floatElement.getValue(); if (value == null) { str = StringUtils.EMPTY; @@ -89,26 +114,8 @@ public class FloatStringQuickEditor extends FloatQuickEditor { stringTextField.getDocument().addDocumentListener(documentListener); } - DocumentListener documentListener = new DocumentListener() { - - @Override - public void insertUpdate(DocumentEvent e) { - changeReportPaneCell(stringTextField.getText().trim()); - } - - @Override - public void removeUpdate(DocumentEvent e) { - changeReportPaneCell(stringTextField.getText().trim()); - } - - @Override - public void changedUpdate(DocumentEvent e) { - changeReportPaneCell(stringTextField.getText().trim()); - } - - }; - protected void changeReportPaneCell(String tmpText) { + private void changeReportPaneCell(String tmpText) { if (tmpText != null && (tmpText.length() > 0 && tmpText.charAt(0) == '=')) { BaseFormula textFormula = BaseFormula.createFormulaBuilder().build(tmpText); textFormula.setReserveInResult(reserveInResult); @@ -125,5 +132,4 @@ public class FloatStringQuickEditor extends FloatQuickEditor { fireTargetModified(); stringTextField.requestFocus(); } - } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/actions/core/ActionFactory.java b/designer_base/src/com/fr/design/actions/core/ActionFactory.java index 7bc73acbb6..e48caa0ac0 100644 --- a/designer_base/src/com/fr/design/actions/core/ActionFactory.java +++ b/designer_base/src/com/fr/design/actions/core/ActionFactory.java @@ -55,6 +55,20 @@ public class ActionFactory { private ActionFactory() { } + + /** + * 元素编辑器释放模板对象 + */ + public static void editorRelease() { + for (Map.Entry entry : cellEditor.entrySet()) { + entry.getValue().release(); + } + for (Map.Entry entry : floatEditor.entrySet()) { + entry.getValue().release(); + } + } + + /** * 注册无需每次实例化的单元格元素编辑器 * diff --git a/designer_base/src/com/fr/design/file/MutilTempalteTabPane.java b/designer_base/src/com/fr/design/file/MutilTempalteTabPane.java index a08fabc1cf..796071ce23 100644 --- a/designer_base/src/com/fr/design/file/MutilTempalteTabPane.java +++ b/designer_base/src/com/fr/design/file/MutilTempalteTabPane.java @@ -3,6 +3,7 @@ package com.fr.design.file; import com.fr.base.BaseUtils; import com.fr.base.GraphHelper; +import com.fr.design.actions.core.ActionFactory; import com.fr.design.constants.UIConstants; import com.fr.design.gui.imenu.UIMenuItem; import com.fr.design.gui.imenu.UIScrollPopUpMenu; @@ -19,11 +20,38 @@ import com.fr.stable.Constants; import com.fr.stable.ProductConstants; import com.fr.stable.project.ProjectConstants; -import javax.swing.*; +import javax.swing.Action; +import javax.swing.BorderFactory; +import javax.swing.ButtonModel; +import javax.swing.Icon; +import javax.swing.JComponent; +import javax.swing.JMenu; +import javax.swing.JMenuItem; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JSeparator; import javax.swing.plaf.basic.BasicMenuItemUI; -import java.awt.*; -import java.awt.event.*; -import java.awt.geom.*; +import java.awt.AWTEvent; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.GradientPaint; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.Toolkit; +import java.awt.event.AWTEventListener; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.MouseMotionListener; +import java.awt.geom.Arc2D; +import java.awt.geom.GeneralPath; +import java.awt.geom.Line2D; +import java.awt.geom.Path2D; +import java.awt.geom.RoundRectangle2D; import java.io.File; import java.util.logging.Level; @@ -711,21 +739,10 @@ public class MutilTempalteTabPane extends JComponent implements MouseListener, M if (returnVal == JOptionPane.YES_OPTION && specifiedTemplate.saveTemplate()) { specifiedTemplate.saveTemplate(); FRLogger.getLogger().log(Level.INFO, Inter.getLocText(new String[]{"Template", "already-saved"}, new String[]{specifiedTemplate.getEditingFILE().getName(), "."})); - HistoryTemplateListPane.getInstance().closeSelectedReport(specifiedTemplate); - activeTemplate(filename); - } else if (returnVal == JOptionPane.NO_OPTION) { - //不保存 - HistoryTemplateListPane.getInstance().closeSelectedReport(specifiedTemplate); - activeTemplate(filename); } - //若是点击取消关闭,则什么都不做 - } else { - //若是已经保存过了,则关闭即可 - HistoryTemplateListPane.getInstance().closeSelectedReport(specifiedTemplate); - activeTemplate(filename); } - - + HistoryTemplateListPane.getInstance().closeSelectedReport(specifiedTemplate); + activeTemplate(filename); } /** diff --git a/designer_base/src/com/fr/design/mainframe/DesignerFrame.java b/designer_base/src/com/fr/design/mainframe/DesignerFrame.java index b8dc09bab7..92489c598a 100644 --- a/designer_base/src/com/fr/design/mainframe/DesignerFrame.java +++ b/designer_base/src/com/fr/design/mainframe/DesignerFrame.java @@ -10,6 +10,7 @@ import com.fr.design.DesignModelAdapter; import com.fr.design.DesignState; import com.fr.design.DesignerEnvManager; import com.fr.design.ExtraDesignClassManager; +import com.fr.design.actions.core.ActionFactory; import com.fr.design.constants.UIConstants; import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.datapane.TableDataTreePane; @@ -53,9 +54,23 @@ import com.fr.stable.StableUtils; import com.fr.stable.image4j.codec.ico.ICODecoder; import com.fr.stable.project.ProjectConstants; -import javax.swing.*; +import javax.swing.Icon; +import javax.swing.JComponent; +import javax.swing.JFrame; +import javax.swing.JLayeredPane; +import javax.swing.JMenuBar; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.WindowConstants; import javax.swing.border.MatteBorder; -import java.awt.*; +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Graphics; +import java.awt.Insets; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.Toolkit; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.dnd.DnDConstants; @@ -749,6 +764,8 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * @param jt 添加的模板. */ public void addAndActivateJTemplate(JTemplate jt) { + //释放模板对象 + ActionFactory.editorRelease(); if (jt == null || jt.getEditingFILE() == null) { return; } @@ -765,6 +782,8 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * @param jt 模板 */ public void activateJTemplate(JTemplate jt) { + //释放模板对象 + ActionFactory.editorRelease(); if (jt == null || jt.getEditingFILE() == null) { return; } diff --git a/designer_base/src/com/fr/design/mainframe/JFormSliderPane.java b/designer_base/src/com/fr/design/mainframe/JFormSliderPane.java index 81a916637b..8a0ad05a42 100644 --- a/designer_base/src/com/fr/design/mainframe/JFormSliderPane.java +++ b/designer_base/src/com/fr/design/mainframe/JFormSliderPane.java @@ -14,13 +14,33 @@ import com.fr.design.layout.TableLayoutHelper; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.Inter; -import javax.swing.*; +import javax.swing.BorderFactory; +import javax.swing.ButtonGroup; +import javax.swing.JFormattedTextField; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.JRadioButton; +import javax.swing.JSeparator; +import javax.swing.JSpinner; +import javax.swing.SpinnerNumberModel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.text.DefaultFormatterFactory; import javax.swing.text.NumberFormatter; -import java.awt.*; -import java.awt.event.*; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.EventQueue; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.Point; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.awt.event.MouseEvent; import java.math.BigDecimal; /** @@ -51,7 +71,6 @@ public class JFormSliderPane extends JPanel { private static final Color BACK_COLOR = new Color(245, 245, 247); public int showValue = 100; public double resolutionTimes = 1.0; - private static JFormSliderPane THIS; private UITextField showVal; private JSpinner showValSpinner; private UISlider slider; @@ -62,7 +81,7 @@ public class JFormSliderPane extends JPanel { private UISliderButton showValButton; private UIRadioButton twoHundredButton; private UIRadioButton oneHundredButton; - private UIRadioButton SevenFiveButton; + private UIRadioButton sevenFiveButton; private UIRadioButton fiveTenButton; private UIRadioButton twoFiveButton; private UIRadioButton selfAdaptButton; @@ -83,7 +102,7 @@ public class JFormSliderPane extends JPanel { showValSpinner.setEditor(editor); JFormattedTextField textField = ((JSpinner.NumberEditor) showValSpinner.getEditor()).getTextField(); textField.setEditable(true); - DefaultFormatterFactory factory = (DefaultFormatterFactory) textField .getFormatterFactory(); + DefaultFormatterFactory factory = (DefaultFormatterFactory) textField.getFormatterFactory(); NumberFormatter formatter = (NumberFormatter) factory.getDefaultFormatter(); formatter.setAllowsInvalid(false); @@ -91,7 +110,7 @@ public class JFormSliderPane extends JPanel { initShowValButton(); initUIRadioButton(); initPane(); - JPanel panel = new JPanel(new FlowLayout(1, 0, 0)); + JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0)); panel.add(downButton); panel.add(slider); panel.add(upButton); @@ -100,17 +119,13 @@ public class JFormSliderPane extends JPanel { this.add(panel, BorderLayout.NORTH); } - public static final JFormSliderPane getInstance() { -// if (THIS == null) { -// THIS = new JSliderPane(); -// } - THIS = new JFormSliderPane(); - return THIS; + public static JFormSliderPane getInstance() { + return new JFormSliderPane(); } private void initSlider() { - slider = new UISlider(0, HUNDRED, HALF_HUNDRED){ - public Point getToolTipLocation(MouseEvent event){ + slider = new UISlider(0, HUNDRED, HALF_HUNDRED) { + public Point getToolTipLocation(MouseEvent event) { return new Point(event.getX(), event.getY() - TOOLTIP_Y); } }; @@ -123,8 +138,8 @@ public class JFormSliderPane extends JPanel { } private void initShowValSpinner() { - showValSpinner = new UIBasicSpinner(new SpinnerNumberModel(HUNDRED, 0, FOUR_HUNDRED, 1)){ - public Point getToolTipLocation(MouseEvent event){ + showValSpinner = new UIBasicSpinner(new SpinnerNumberModel(HUNDRED, 0, FOUR_HUNDRED, 1)) { + public Point getToolTipLocation(MouseEvent event) { return new Point(event.getX(), event.getY() - TOOLTIP_Y); } }; @@ -134,16 +149,16 @@ public class JFormSliderPane extends JPanel { } private void initDownUpButton() { - downButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/source/normalDown20.png"), BaseUtils.readIcon("com/fr/design/images/data/source/hoverDown20.png"), BaseUtils.readIcon("com/fr/design/images/data/source/hoverDown20.png")){ - public Point getToolTipLocation(MouseEvent event){ + downButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/source/normalDown20.png"), BaseUtils.readIcon("com/fr/design/images/data/source/hoverDown20.png"), BaseUtils.readIcon("com/fr/design/images/data/source/hoverDown20.png")) { + public Point getToolTipLocation(MouseEvent event) { return new Point(event.getX(), event.getY() - TOOLTIP_Y); } }; downButton.setOpaque(false); downButton.setBorderPainted(false); downButton.setToolTipText(Inter.getLocText("FR-Designer_Scale_Down")); - upButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/source/normalUp20.png"), BaseUtils.readIcon("com/fr/design/images/data/source/hoverUp20.png"), BaseUtils.readIcon("com/fr/design/images/data/source/hoverUp20.png")){ - public Point getToolTipLocation(MouseEvent event){ + upButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/source/normalUp20.png"), BaseUtils.readIcon("com/fr/design/images/data/source/hoverUp20.png"), BaseUtils.readIcon("com/fr/design/images/data/source/hoverUp20.png")) { + public Point getToolTipLocation(MouseEvent event) { return new Point(event.getX(), event.getY() - TOOLTIP_Y); } }; @@ -164,10 +179,11 @@ public class JFormSliderPane extends JPanel { showValButton.addActionListener(showValButtonActionListener); showValButton.setToolTipText(Inter.getLocText("FR-Designer_Scale_Grade")); } + private void initUIRadioButton() { twoHundredButton = new UIRadioButton("200%"); oneHundredButton = new UIRadioButton("100%"); - SevenFiveButton = new UIRadioButton("75%"); + sevenFiveButton = new UIRadioButton("75%"); fiveTenButton = new UIRadioButton("50%"); twoFiveButton = new UIRadioButton("25%"); selfAdaptButton = new UIRadioButton(Inter.getLocText("FR-Designer_Scale_selfAdaptButton")); @@ -176,7 +192,7 @@ public class JFormSliderPane extends JPanel { customButton.setFont(new Font("SimSun", Font.PLAIN, FONT_SIZE)); twoHundredButton.addItemListener(radioButtonItemListener); oneHundredButton.addItemListener(radioButtonItemListener); - SevenFiveButton.addItemListener(radioButtonItemListener); + sevenFiveButton.addItemListener(radioButtonItemListener); fiveTenButton.addItemListener(radioButtonItemListener); twoFiveButton.addItemListener(radioButtonItemListener); customButton.addItemListener(new ItemListener() { @@ -194,7 +210,7 @@ public class JFormSliderPane extends JPanel { ButtonGroup bg = new ButtonGroup();// 初始化按钮组 bg.add(twoHundredButton);// 加入按钮组 bg.add(oneHundredButton); - bg.add(SevenFiveButton); + bg.add(sevenFiveButton); bg.add(fiveTenButton); bg.add(twoFiveButton); bg.add(selfAdaptButton); @@ -217,7 +233,7 @@ public class JFormSliderPane extends JPanel { septPane.setBackground(BACK_COLOR); twoHundredButton.setBackground(BACK_COLOR); oneHundredButton.setBackground(BACK_COLOR); - SevenFiveButton.setBackground(BACK_COLOR); + sevenFiveButton.setBackground(BACK_COLOR); fiveTenButton.setBackground(BACK_COLOR); twoFiveButton.setBackground(BACK_COLOR); // selfAdaptButton.setBackground(BACK_COLOR); @@ -227,7 +243,7 @@ public class JFormSliderPane extends JPanel { new Component[]{septPane, null}, new Component[]{twoHundredButton, null}, new Component[]{oneHundredButton, null}, - new Component[]{SevenFiveButton, null}, + new Component[]{sevenFiveButton, null}, new Component[]{fiveTenButton, null}, new Component[]{twoFiveButton, null}, new Component[]{customButton, createSpinnerPanel()} @@ -247,14 +263,14 @@ public class JFormSliderPane extends JPanel { return spinnerPanel; } - ActionListener showValButtonActionListener = new ActionListener() { + private ActionListener showValButtonActionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { popupDialog(); } }; - ChangeListener showValSpinnerChangeListener = new ChangeListener() { + private ChangeListener showValSpinnerChangeListener = new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { int val = (int) ((UIBasicSpinner) e.getSource()).getValue(); @@ -277,7 +293,7 @@ public class JFormSliderPane extends JPanel { //定义一个监听器,用于监听所有滑动条 - ChangeListener listener = new ChangeListener() { + private ChangeListener listener = new ChangeListener() { public void stateChanged(ChangeEvent event) { //取出滑动条的值,并在文本中显示出来 if (!isButtonOrIsTxt) { @@ -296,7 +312,7 @@ public class JFormSliderPane extends JPanel { } }; - ItemListener radioButtonItemListener = new ItemListener() { + private ItemListener radioButtonItemListener = new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { JRadioButton temp = (JRadioButton) e.getSource(); @@ -312,7 +328,7 @@ public class JFormSliderPane extends JPanel { slider.setValue((int) (showValue + TWO_HUNDRED) / SIX); } else if (showValue < HUNDRED) { slider.setValue((int) ((showValue - TEN) / ONEPOINTEIGHT)); - } else if (showValue == HUNDRED) { + } else { slider.setValue(HALF_HUNDRED); } } @@ -336,7 +352,7 @@ public class JFormSliderPane extends JPanel { return b1.divide(b2, scale).doubleValue(); } - ActionListener buttonActionListener = new ActionListener() { + private ActionListener buttonActionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { showValue = (int) showValSpinner.getValue(); diff --git a/designer_base/src/com/fr/design/mainframe/JSliderPane.java b/designer_base/src/com/fr/design/mainframe/JSliderPane.java index d056551399..2562755e57 100644 --- a/designer_base/src/com/fr/design/mainframe/JSliderPane.java +++ b/designer_base/src/com/fr/design/mainframe/JSliderPane.java @@ -15,15 +15,38 @@ import com.fr.design.layout.TableLayoutHelper; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.Inter; -import javax.swing.*; +import javax.swing.BorderFactory; +import javax.swing.ButtonGroup; +import javax.swing.JButton; +import javax.swing.JFormattedTextField; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.JRadioButton; +import javax.swing.JSeparator; +import javax.swing.JSpinner; +import javax.swing.SpinnerNumberModel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.plaf.basic.BasicSliderUI; -import javax.swing.text.BadLocationException; import javax.swing.text.DefaultFormatterFactory; import javax.swing.text.NumberFormatter; -import java.awt.*; -import java.awt.event.*; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.EventQueue; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.awt.event.MouseEvent; import java.math.BigDecimal; /** @@ -55,7 +78,6 @@ public class JSliderPane extends JPanel { private static final Color BACK_COLOR = new Color(245, 245, 247); public int showValue = 100; public double resolutionTimes = 1.0; - private static JSliderPane THIS; private UITextField showVal; private JSpinner showValSpinner; private UISlider slider; @@ -66,12 +88,14 @@ public class JSliderPane extends JPanel { private UISliderButton showValButton; private UIRadioButton twoHundredButton; private UIRadioButton oneHundredButton; - private UIRadioButton SevenFiveButton; + private UIRadioButton sevenFiveButton; private UIRadioButton fiveTenButton; private UIRadioButton twoFiveButton; private UIRadioButton selfAdaptButton; private UIRadioButton customButton; - //拖动条处理和button、直接输入不一样 + /** + * 拖动条处理和button、直接输入不一样 + */ private boolean isButtonOrIsTxt = true; private PopupPane dialog; private int upButtonX; @@ -87,7 +111,7 @@ public class JSliderPane extends JPanel { showValSpinner.setEditor(editor); JFormattedTextField textField = ((JSpinner.NumberEditor) showValSpinner.getEditor()).getTextField(); textField.setEditable(true); - DefaultFormatterFactory factory = (DefaultFormatterFactory) textField .getFormatterFactory(); + DefaultFormatterFactory factory = (DefaultFormatterFactory) textField.getFormatterFactory(); NumberFormatter formatter = (NumberFormatter) factory.getDefaultFormatter(); formatter.setAllowsInvalid(false); @@ -95,7 +119,7 @@ public class JSliderPane extends JPanel { initShowValButton(); initUIRadioButton(); initPane(); - JPanel panel = new JPanel(new FlowLayout(1, 0, 0)); + JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0)); panel.add(downButton); panel.add(slider); panel.add(upButton); @@ -105,12 +129,8 @@ public class JSliderPane extends JPanel { } - public static final JSliderPane getInstance() { -// if (THIS == null) { -// THIS = new JSliderPane(); -// } - THIS = new JSliderPane(); - return THIS; + public static JSliderPane getInstance() { + return new JSliderPane(); } private void initSlider() { @@ -174,7 +194,7 @@ public class JSliderPane extends JPanel { private void initUIRadioButton() { twoHundredButton = new UIRadioButton("200%"); oneHundredButton = new UIRadioButton("100%"); - SevenFiveButton = new UIRadioButton("75%"); + sevenFiveButton = new UIRadioButton("75%"); fiveTenButton = new UIRadioButton("50%"); twoFiveButton = new UIRadioButton("25%"); selfAdaptButton = new UIRadioButton(Inter.getLocText("FR-Designer_Scale_selfAdaptButton")); @@ -183,7 +203,7 @@ public class JSliderPane extends JPanel { customButton.setFont(new Font("SimSun", Font.PLAIN, FONT_SIZE)); twoHundredButton.addItemListener(radioButtonItemListener); oneHundredButton.addItemListener(radioButtonItemListener); - SevenFiveButton.addItemListener(radioButtonItemListener); + sevenFiveButton.addItemListener(radioButtonItemListener); fiveTenButton.addItemListener(radioButtonItemListener); twoFiveButton.addItemListener(radioButtonItemListener); customButton.addItemListener(new ItemListener() { @@ -201,7 +221,7 @@ public class JSliderPane extends JPanel { ButtonGroup bg = new ButtonGroup();// 初始化按钮组 bg.add(twoHundredButton);// 加入按钮组 bg.add(oneHundredButton); - bg.add(SevenFiveButton); + bg.add(sevenFiveButton); bg.add(fiveTenButton); bg.add(twoFiveButton); bg.add(selfAdaptButton); @@ -224,7 +244,7 @@ public class JSliderPane extends JPanel { septPane.setBackground(BACK_COLOR); twoHundredButton.setBackground(BACK_COLOR); oneHundredButton.setBackground(BACK_COLOR); - SevenFiveButton.setBackground(BACK_COLOR); + sevenFiveButton.setBackground(BACK_COLOR); fiveTenButton.setBackground(BACK_COLOR); twoFiveButton.setBackground(BACK_COLOR); selfAdaptButton.setBackground(BACK_COLOR); @@ -234,7 +254,7 @@ public class JSliderPane extends JPanel { new Component[]{septPane, null}, new Component[]{twoHundredButton, null}, new Component[]{oneHundredButton, null}, - new Component[]{SevenFiveButton, null}, + new Component[]{sevenFiveButton, null}, new Component[]{fiveTenButton, null}, new Component[]{twoFiveButton, null}, new Component[]{selfAdaptButton, null}, @@ -255,14 +275,14 @@ public class JSliderPane extends JPanel { return spinnerPanel; } - ActionListener showValButtonActionListener = new ActionListener() { + private ActionListener showValButtonActionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { popupDialog(); } }; - ChangeListener showValSpinnerChangeListener = new ChangeListener() { + private ChangeListener showValSpinnerChangeListener = new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { int val = (int) ((UIBasicSpinner) e.getSource()).getValue(); @@ -285,7 +305,7 @@ public class JSliderPane extends JPanel { //定义一个监听器,用于监听所有滑动条 - ChangeListener listener = new ChangeListener() { + private ChangeListener listener = new ChangeListener() { public void stateChanged(ChangeEvent event) { //取出滑动条的值,并在文本中显示出来 if (!isButtonOrIsTxt) { @@ -305,7 +325,7 @@ public class JSliderPane extends JPanel { } }; - ItemListener radioButtonItemListener = new ItemListener() { + private ItemListener radioButtonItemListener = new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { JRadioButton temp = (JRadioButton) e.getSource(); @@ -321,7 +341,7 @@ public class JSliderPane extends JPanel { slider.setValue((int) (showValue + TWO_HUNDRED) / SIX); } else if (showValue < HUNDRED) { slider.setValue((int) ((showValue - TEN) / ONEPOINTEIGHT)); - } else if (showValue == HUNDRED) { + } else { slider.setValue(HALF_HUNDRED); } } @@ -339,7 +359,7 @@ public class JSliderPane extends JPanel { return this.showValue; } - public void reset(){ + public void reset() { this.showValSpinner.setValue(HUNDRED); } @@ -349,7 +369,7 @@ public class JSliderPane extends JPanel { return b1.divide(b2, scale).doubleValue(); } - ActionListener buttonActionListener = new ActionListener() { + private ActionListener buttonActionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { showValue = (int) showValSpinner.getValue(); @@ -386,7 +406,7 @@ public class JSliderPane extends JPanel { } else if (value < HALF_HUNDRED) { times = (int) Math.round(ONEPOINTEIGHT * value + TEN); } else { - times = (int) (SIX * value - TWO_HUNDRED); + times = SIX * value - TWO_HUNDRED; } } @@ -444,11 +464,9 @@ class JSliderPaneUI extends BasicSliderUI { super(b); } - /** */ /** * 绘制指示物 */ - public void paintThumb(Graphics g) { Rectangle knobBounds = thumbRect; int w = knobBounds.width; @@ -460,7 +478,6 @@ class JSliderPaneUI extends BasicSliderUI { g2d.fillRoundRect(0, SIX, FOUR, 9, 2, 2); } - /** */ /** * 绘制刻度轨迹 */ diff --git a/designer_base/src/com/fr/design/selection/QuickEditor.java b/designer_base/src/com/fr/design/selection/QuickEditor.java index d2e74da5cd..c3a0c043af 100644 --- a/designer_base/src/com/fr/design/selection/QuickEditor.java +++ b/designer_base/src/com/fr/design/selection/QuickEditor.java @@ -2,7 +2,7 @@ package com.fr.design.selection; import com.fr.design.designer.TargetComponent; -import javax.swing.*; +import javax.swing.JComponent; /** * 快速编辑区域 @@ -39,11 +39,15 @@ public abstract class QuickEditor extends JComponent tc.fireTargetModified(); } + /** + * 刷新面板 + */ protected abstract void refresh(); /** - * for 关闭时候释放 + * 关闭模板时释放模板对象 + * 所有持有tc的对象也必须置空或者丢弃对于tc的引用 */ public void release() { tc = null; @@ -53,7 +57,6 @@ public abstract class QuickEditor extends JComponent @Override protected void refresh() { - } }; diff --git a/designer_form/src/com/fr/design/mainframe/WidgetToolBarPane.java b/designer_form/src/com/fr/design/mainframe/WidgetToolBarPane.java index cac2354e98..e627de1397 100644 --- a/designer_form/src/com/fr/design/mainframe/WidgetToolBarPane.java +++ b/designer_form/src/com/fr/design/mainframe/WidgetToolBarPane.java @@ -47,7 +47,7 @@ public class WidgetToolBarPane extends BasicPane implements DesignToolbarProvide } public void refreshToolbar() { - reset(); + singleton.reset(); } public static void refresh() { From 81730387ce060f1c1864e2ff450e0ec807f4bc0f Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Fri, 24 Nov 2017 15:53:33 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E5=86=B3=E7=AD=96=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E6=8A=A5=E8=A1=A8=E5=9D=97=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/mainframe/ElementCasePane.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/designer/src/com/fr/design/mainframe/ElementCasePane.java b/designer/src/com/fr/design/mainframe/ElementCasePane.java index f65e660ac7..46c363c380 100644 --- a/designer/src/com/fr/design/mainframe/ElementCasePane.java +++ b/designer/src/com/fr/design/mainframe/ElementCasePane.java @@ -522,8 +522,13 @@ public abstract class ElementCasePane extends Tar * 因为这边判断selection是一个selection,所以不会触发fireSelectionChanged */ public void setSelection(Selection selection) { - //旧选中内容编辑器释放模板对象 - this.getCurrentEditor().release(); + try { + //旧选中内容编辑器释放模板对象 + this.getCurrentEditor().release(); + } catch (UnsupportedOperationException e) { + FRLogger.getLogger().info("Nothing to release"); + } + if (!ComparatorUtils.equals(this.selection, selection) || !ComparatorUtils.equals(EastRegionContainerPane.getInstance().getCellAttrPane(), CellElementPropertyPane.getInstance())) { this.selection = selection;