From b3477fb7f88dae3ae559fd6d8385bd59709a00ae Mon Sep 17 00:00:00 2001 From: kerry Date: Thu, 16 Nov 2017 16:01:03 +0800 Subject: [PATCH 01/21] =?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 ff35558836e0804b32f691d048d148ee6dcbf461 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Thu, 16 Nov 2017 18:40:41 +0800 Subject: [PATCH 02/21] a --- .../cellquick/CellDSColumnEditor.java | 111 ++++++++++++------ 1 file changed, 74 insertions(+), 37 deletions(-) diff --git a/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java index 21383b73d1..b6681b316d 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java @@ -37,10 +37,18 @@ import com.fr.report.cell.cellattr.core.group.DSColumn; import com.fr.report.cell.cellattr.core.group.FilterTypeEnum; import com.fr.report.cell.cellattr.core.group.SelectCount; -import javax.swing.*; +import javax.swing.BorderFactory; +import javax.swing.Icon; +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.SwingUtilities; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; -import java.awt.*; +import java.awt.BorderLayout; +import java.awt.CardLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; @@ -71,15 +79,31 @@ public class CellDSColumnEditor extends CellQuickEditor { private JPanel dsColumnRegion; private JPanel centerPane; - // 基本和高级设置 + /** + * 基本和高级设置 + */ private ArrayList paneList; - // 基本和高级设置 卡片布局 + /** + * 基本和高级设置 卡片布局 + */ private CardLayout card; - // 基本和高级设置 容器面板 + /** + * 基本和高级设置 容器面板 + */ private JPanel cardContainer; - // 卡片布局TAB切换按钮 + /** + * 卡片布局TAB切换按钮 + */ private UIHeadGroup tabsHeaderIconPane; - // 数据列高级设置 + + + /** + * 数据列基本设置 + */ + private DSColumnBasicEditorPane cellDSColumnBasicPane; + /** + * 数据列高级设置 + */ private DSColumnAdvancedEditorPane cellDSColumnAdvancedPane; private CellDSColumnEditor() { @@ -109,22 +133,12 @@ public class CellDSColumnEditor extends CellQuickEditor { } /** - * 内容全部重新动态生成,不然容易出错 * 刷新详细信息面板 */ @Override protected void refreshDetails() { - this.createPanes(); - this.createSwitchTab(); - dsColumnRegion = new JPanel(new BorderLayout()); - dsColumnRegion.add(tabsHeaderIconPane, BorderLayout.NORTH); - dsColumnRegion.add(cardContainer, BorderLayout.CENTER); - //必须removeAll之后再添加;重新再实例化一个centerJPanel,因为对象变了会显示不出来 - centerPane.removeAll(); - centerPane.add(dsColumnRegion, BorderLayout.CENTER); - for (CellEditorPane cellEditorPane : paneList) { - cellEditorPane.populate(); - } + cellDSColumnBasicPane.populate(); + cellDSColumnAdvancedPane.populate(); this.validate(); } @@ -162,17 +176,15 @@ public class CellDSColumnEditor extends CellQuickEditor { } /** - * 刷新数据列基本和高级设置面板 + * 数据列基本和高级设置面板 */ private void createPanes() { paneList = new ArrayList<>(); /*基本设置面板*/ - DSColumnBasicEditorPane cellDSColumnBasicPane = new DSColumnBasicEditorPane(); - + cellDSColumnBasicPane = new DSColumnBasicEditorPane(); paneList.add(cellDSColumnBasicPane); /*高级设置面板*/ cellDSColumnAdvancedPane = new DSColumnAdvancedEditorPane(); - paneList.add(cellDSColumnAdvancedPane); } @@ -186,14 +198,22 @@ public class CellDSColumnEditor extends CellQuickEditor { */ class DSColumnBasicEditorPane extends CellEditorPane { - //数据集和数据列 + /** + * 数据集和数据列 + */ private SelectedDataColumnPane dataPane; - //数据分组设置 + /** + * 数据分组设置 + */ private ResultSetGroupDockingPane groupPane; - //条件过滤按钮面板 + /** + * 条件过滤按钮面板 + */ private JPanel conditionPane; - // 分组设置监听器 + /** + * 分组设置监听器 + */ private ItemListener groupListener = new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { @@ -209,7 +229,9 @@ public class CellDSColumnEditor extends CellQuickEditor { } } }; - //数据集列设置监听器 + /** + * 数据集列设置监听器 + */ private ItemListener dataListener = new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { @@ -296,21 +318,37 @@ public class CellDSColumnEditor extends CellQuickEditor { class DSColumnAdvancedEditorPane extends CellEditorPane { - //排列顺序 + /** + * 排列顺序 + */ private ResultSetSortConfigPane sortPane; - //结果集筛选 + /** + * 结果集筛选 + */ private ResultSetFilterConfigPane filterPane; - //自定义值显示 + /** + * 自定义值显示 + */ private CustomValuePane valuePane; - //横向可扩展性 + /** + * 横向可扩展性 + */ private UICheckBox heCheckBox; - //纵向可扩展性 + /** + * 纵向可扩展性 + */ private UICheckBox veCheckBox; - //补充空白数据 + /** + * 补充空白数据 + */ private UICheckBox useMultiplyNumCheckBox; - //补充空白数据数目输入框 + /** + * 补充空白数据数目输入框 + */ private UISpinner multiNumSpinner; - //补充空白数据数目面板 可隐藏 + /** + * 补充空白数据数目面板 可隐藏 + */ private JPanel multiPane; @@ -548,7 +586,6 @@ public class CellDSColumnEditor extends CellQuickEditor { public class ResultSetSortConfigPane extends JPanel { private static final String DEFAULT_VALUE = "="; private JPanel contentPane; - //面板 private UIButtonGroup sortTypePane; private JFormulaField formulaField; private CardLayout cardLayout; From 237666902f9a1175326a461e6e514c588a691e0b Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Fri, 17 Nov 2017 13:58:36 +0800 Subject: [PATCH 03/21] =?UTF-8?q?REPORT-5668=20=E5=8D=95=E5=85=83=E6=A0=BC?= =?UTF-8?q?=E5=85=83=E7=B4=A0=E5=92=8C=E6=82=AC=E6=B5=AE=E5=85=83=E7=B4=A0?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=99=A8=E9=A2=91=E7=B9=81=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E5=AF=BC=E8=87=B4=E7=9A=84=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 --- .../cell/AbstractCellElementAction.java | 162 +++++++++-------- .../columnrow/DSColumnConditionAction.java | 20 +- ...ane.java => AbstractDSCellEditorPane.java} | 14 +- .../com/fr/design/module/DesignerModule.java | 86 ++++++--- .../com/fr/quickeditor/CellQuickEditor.java | 97 +++++++--- .../cellquick/CellBiasTextPainterEditor.java | 9 +- .../cellquick/CellDSColumnEditor.java | 48 +++-- .../cellquick/CellFormulaQuickEditor.java | 11 +- .../cellquick/CellImageQuickEditor.java | 10 +- .../cellquick/CellRichTextEditor.java | 10 +- .../cellquick/CellStringQuickEditor.java | 9 +- .../cellquick/CellSubReportEditor.java | 8 +- .../{ => layout}/CellElementBarLayout.java | 2 +- .../fr/design/actions/core/ActionFactory.java | 172 ++++++++++-------- 14 files changed, 414 insertions(+), 244 deletions(-) rename designer/src/com/fr/design/mainframe/cell/{CellEditorPane.java => AbstractDSCellEditorPane.java} (93%) rename designer/src/com/fr/quickeditor/cellquick/{ => layout}/CellElementBarLayout.java (95%) diff --git a/designer/src/com/fr/design/actions/cell/AbstractCellElementAction.java b/designer/src/com/fr/design/actions/cell/AbstractCellElementAction.java index 49eab99114..457c5bf725 100644 --- a/designer/src/com/fr/design/actions/cell/AbstractCellElementAction.java +++ b/designer/src/com/fr/design/actions/cell/AbstractCellElementAction.java @@ -1,10 +1,10 @@ package com.fr.design.actions.cell; import com.fr.design.actions.CellSelectionAction; -import com.fr.design.mainframe.DesignerContext; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.ElementCasePane; import com.fr.grid.GridUtils; import com.fr.grid.selection.CellSelection; @@ -14,87 +14,93 @@ import com.fr.report.core.SheetUtils; import com.fr.report.elementcase.TemplateElementCase; import com.fr.report.stable.ReportConstants; -// TODO ALEX_SEP 这个类与AbstractCellAction有什么关系? +/** + * TODO ALEX_SEP 这个类与AbstractCellAction有什么关系? + * + * @author null + */ public abstract class AbstractCellElementAction extends CellSelectionAction { - protected AbstractCellElementAction(ElementCasePane t) { - super(t); - } - - @Override - protected boolean executeActionReturnUndoRecordNeededWithCellSelection(CellSelection cs) { - final ElementCasePane ePane = this.getEditingComponent(); - final TemplateElementCase tplEC = ePane.getEditingElementCase(); - TemplateCellElement editCellElement = tplEC.getTemplateCellElement(cs.getColumn(), cs.getRow()); - if (editCellElement == null) { - editCellElement = new DefaultTemplateCellElement(cs.getColumn(), cs.getRow()); - tplEC.addCellElement(editCellElement); - } - if (tplEC != null) { - SheetUtils.calculateDefaultParent(tplEC); - } - final CellSelection finalCS = cs; - final BasicPane bp = populateBasicPane(editCellElement); - BasicDialog dialog = bp.showWindow(DesignerContext.getDesignerFrame()); - dialog.addDialogActionListener(new DialogActionAdapter() { - @Override - public void doOk() { - // 需要先行后列地增加新元素。 - for (int j = 0; j < finalCS.getRowSpan(); j++) { - for (int i = 0; i < finalCS.getColumnSpan(); i++) { - int column = i + finalCS.getColumn(); - int row = j + finalCS.getRow(); - TemplateCellElement editCellElement = tplEC.getTemplateCellElement(column, row); - if (editCellElement == null) { - editCellElement = new DefaultTemplateCellElement(column, row); - tplEC.addCellElement(editCellElement); - } - // alex:不加这一句话会导致跨行跨列的格子被多次update - if (editCellElement.getColumn() != column || editCellElement.getRow() != row) { - continue; - } - updateBasicPane(bp, editCellElement); - // update cell attributes - if (isNeedShinkToFit()) { - // shink to fit.(如果value是String) - Object editElementValue = editCellElement.getValue(); - if (editElementValue != null && (editElementValue instanceof String || editElementValue instanceof Number)) { - // TODO ALEX_SEP 暂时用FIT_DEFAULT替代,不取reportsetting里面的设置,因为也不知道是应该放在report里面还是elementcase里面 - GridUtils.shrinkToFit(ReportConstants.AUTO_SHRINK_TO_FIT_DEFAULT, tplEC, editCellElement); - } - } - } - } - ePane.fireTargetModified(); - } - }); + + protected AbstractCellElementAction() { + super(); + } + + protected AbstractCellElementAction(ElementCasePane t) { + super(t); + } + + @Override + protected boolean executeActionReturnUndoRecordNeededWithCellSelection(CellSelection cs) { + final ElementCasePane ePane = this.getEditingComponent(); + final TemplateElementCase tplEC = ePane.getEditingElementCase(); + TemplateCellElement editCellElement = tplEC.getTemplateCellElement(cs.getColumn(), cs.getRow()); + if (editCellElement == null) { + editCellElement = new DefaultTemplateCellElement(cs.getColumn(), cs.getRow()); + tplEC.addCellElement(editCellElement); + } + SheetUtils.calculateDefaultParent(tplEC); + final CellSelection finalCS = cs; + final BasicPane bp = populateBasicPane(editCellElement); + BasicDialog dialog = bp.showWindow(DesignerContext.getDesignerFrame()); + dialog.addDialogActionListener(new DialogActionAdapter() { + @Override + public void doOk() { + // 需要先行后列地增加新元素。 + for (int j = 0; j < finalCS.getRowSpan(); j++) { + for (int i = 0; i < finalCS.getColumnSpan(); i++) { + int column = i + finalCS.getColumn(); + int row = j + finalCS.getRow(); + TemplateCellElement editCellElement = tplEC.getTemplateCellElement(column, row); + if (editCellElement == null) { + editCellElement = new DefaultTemplateCellElement(column, row); + tplEC.addCellElement(editCellElement); + } + // alex:不加这一句话会导致跨行跨列的格子被多次update + if (editCellElement.getColumn() != column || editCellElement.getRow() != row) { + continue; + } + updateBasicPane(bp, editCellElement); + // update cell attributes + if (isNeedShinkToFit()) { + // shink to fit.(如果value是String) + Object editElementValue = editCellElement.getValue(); + if (editElementValue != null && (editElementValue instanceof String || editElementValue instanceof Number)) { + // TODO ALEX_SEP 暂时用FIT_DEFAULT替代,不取reportsetting里面的设置,因为也不知道是应该放在report里面还是elementcase里面 + GridUtils.shrinkToFit(ReportConstants.AUTO_SHRINK_TO_FIT_DEFAULT, tplEC, editCellElement); + } + } + } + } + ePane.fireTargetModified(); + } + }); //控件设置记住dlg,提交入库智能添加单元格后可以show出来 DesignerContext.setReportWritePane(dialog); - dialog.setVisible(true); - return false; - } + dialog.setVisible(true); + return false; + } - /** - * 初始化对话框 - * - * @param cellElement - * @return - */ - protected abstract BasicPane populateBasicPane(TemplateCellElement cellElement); + /** + * 初始化对话框 + * + * @param cellElement 单元格 + * @return 对话框 + */ + protected abstract BasicPane populateBasicPane(TemplateCellElement cellElement); - /** - * 更新对话框之后,改变值 - * - * @param cellElement - * @return - */ - protected abstract void updateBasicPane(BasicPane basicPane, TemplateCellElement cellElement); + /** + * 更新对话框之后,改变值 + * + * @param cellElement 单元格 + */ + protected abstract void updateBasicPane(BasicPane basicPane, TemplateCellElement cellElement); - /** - * if isNeedShinkToFit,please override this method - * - * @return isNeedShinkToFit - */ - protected boolean isNeedShinkToFit() { - return false; - } + /** + * if isNeedShinkToFit,please override this method + * + * @return isNeedShinkToFit + */ + protected boolean isNeedShinkToFit() { + return false; + } } \ No newline at end of file diff --git a/designer/src/com/fr/design/actions/columnrow/DSColumnConditionAction.java b/designer/src/com/fr/design/actions/columnrow/DSColumnConditionAction.java index 8143409cfe..55c5f95ab2 100644 --- a/designer/src/com/fr/design/actions/columnrow/DSColumnConditionAction.java +++ b/designer/src/com/fr/design/actions/columnrow/DSColumnConditionAction.java @@ -9,16 +9,34 @@ import com.fr.design.mainframe.ElementCasePane; import com.fr.general.Inter; import com.fr.report.cell.TemplateCellElement; +/** + * 数据列过滤条件Action + * + * @author null + * @version 2017年11月17日15点11分 + * @since 8.0 + */ public class DSColumnConditionAction extends AbstractCellElementAction { + public DSColumnConditionAction() { + super(); + this.setName(Inter.getLocText("Filter")); + this.setMnemonic('E'); + this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/expand/cellAttr.gif")); + } + public DSColumnConditionAction(ElementCasePane t) { super(t); - this.setName(Inter.getLocText("Filter")); this.setMnemonic('E'); this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/expand/cellAttr.gif")); } + @Override + public void setEditingComponent(ElementCasePane casePane) { + super.setEditingComponent(casePane); + } + @Override protected BasicPane populateBasicPane(TemplateCellElement cellElement) { DSColumnConditionsPane dSColumnConditionsPane = new DSColumnConditionsPane(); diff --git a/designer/src/com/fr/design/mainframe/cell/CellEditorPane.java b/designer/src/com/fr/design/mainframe/cell/AbstractDSCellEditorPane.java similarity index 93% rename from designer/src/com/fr/design/mainframe/cell/CellEditorPane.java rename to designer/src/com/fr/design/mainframe/cell/AbstractDSCellEditorPane.java index 6fbf73dc0f..a56d251a7a 100644 --- a/designer/src/com/fr/design/mainframe/cell/CellEditorPane.java +++ b/designer/src/com/fr/design/mainframe/cell/AbstractDSCellEditorPane.java @@ -2,10 +2,12 @@ package com.fr.design.mainframe.cell; import com.fr.design.gui.iscrollbar.UIScrollBar; import com.fr.design.mainframe.CellElementPropertyPane; -import com.fr.quickeditor.cellquick.CellElementBarLayout; +import com.fr.quickeditor.cellquick.layout.CellElementBarLayout; -import javax.swing.*; -import java.awt.*; +import javax.swing.BorderFactory; +import javax.swing.JPanel; +import java.awt.Container; +import java.awt.Dimension; import java.awt.event.AdjustmentEvent; import java.awt.event.AdjustmentListener; import java.awt.event.MouseWheelEvent; @@ -18,9 +20,11 @@ import java.awt.event.MouseWheelListener; * @version 2017年7月25日 * @since 9.0 */ -public abstract class CellEditorPane extends JPanel { +public abstract class AbstractDSCellEditorPane extends JPanel { - /*滚动条相关配置*/ + /** + * 滚动条相关配置 + */ private static final int MAXVALUE = 100; private static final int TITLE_HEIGHT = 95; private static final int CONTENT_PANE_WIDTH_GAP = 3; diff --git a/designer/src/com/fr/design/module/DesignerModule.java b/designer/src/com/fr/design/module/DesignerModule.java index ba10f42259..e3fc7b6162 100644 --- a/designer/src/com/fr/design/module/DesignerModule.java +++ b/designer/src/com/fr/design/module/DesignerModule.java @@ -1,13 +1,27 @@ package com.fr.design.module; -import com.fr.base.*; +import com.fr.base.BaseFormula; +import com.fr.base.BaseUtils; +import com.fr.base.ConfigManager; +import com.fr.base.FRContext; +import com.fr.base.Formula; +import com.fr.base.MultiFieldParameter; +import com.fr.base.Style; +import com.fr.base.TempNameStyle; import com.fr.base.io.XMLEncryptUtils; import com.fr.base.process.ProcessOperator; import com.fr.base.remote.RemoteDeziConstants; import com.fr.design.DesignerEnvManager; import com.fr.design.ExtraDesignClassManager; import com.fr.design.actions.core.ActionFactory; -import com.fr.design.actions.insert.cell.*; +import com.fr.design.actions.insert.cell.BiasCellAction; +import com.fr.design.actions.insert.cell.ChartCellAction; +import com.fr.design.actions.insert.cell.DSColumnCellAction; +import com.fr.design.actions.insert.cell.FormulaCellAction; +import com.fr.design.actions.insert.cell.GeneralCellAction; +import com.fr.design.actions.insert.cell.ImageCellAction; +import com.fr.design.actions.insert.cell.RichTextCellAction; +import com.fr.design.actions.insert.cell.SubReportCellAction; import com.fr.design.actions.insert.flot.ChartFloatAction; import com.fr.design.actions.insert.flot.FormulaFloatAction; import com.fr.design.actions.insert.flot.ImageFloatAction; @@ -17,7 +31,11 @@ import com.fr.design.fun.ElementUIProvider; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ilable.UILabel; import com.fr.design.javascript.ProcessTransitionAdapter; -import com.fr.design.mainframe.*; +import com.fr.design.mainframe.App; +import com.fr.design.mainframe.DecodeDialog; +import com.fr.design.mainframe.InformationCollector; +import com.fr.design.mainframe.JTemplate; +import com.fr.design.mainframe.JWorkBook; import com.fr.design.mainframe.bbs.BBSGuestPane; import com.fr.design.mainframe.form.FormECCompositeProvider; import com.fr.design.mainframe.form.FormECDesignerProvider; @@ -27,14 +45,24 @@ import com.fr.design.mainframe.loghandler.DesignerLogImpl; import com.fr.design.parameter.WorkBookParameterReader; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.file.FILE; -import com.fr.general.*; +import com.fr.general.ComparatorUtils; +import com.fr.general.FRLogger; +import com.fr.general.IOUtils; +import com.fr.general.Inter; +import com.fr.general.ModuleContext; import com.fr.general.xml.GeneralXMLTools; import com.fr.io.importer.Excel2007ReportImporter; import com.fr.io.importer.ExcelReportImporter; import com.fr.main.impl.WorkBook; +import com.fr.quickeditor.cellquick.CellBiasTextPainterEditor; +import com.fr.quickeditor.cellquick.CellDSColumnEditor; +import com.fr.quickeditor.cellquick.CellFormulaQuickEditor; +import com.fr.quickeditor.cellquick.CellImageQuickEditor; +import com.fr.quickeditor.cellquick.CellRichTextEditor; +import com.fr.quickeditor.cellquick.CellStringQuickEditor; +import com.fr.quickeditor.cellquick.CellSubReportEditor; import com.fr.quickeditor.chartquick.BasicChartQuickEditor; import com.fr.quickeditor.chartquick.FloatChartQuickEditor; -import com.fr.quickeditor.cellquick.*; import com.fr.quickeditor.floatquick.FloatImageQuickEditor; import com.fr.quickeditor.floatquick.FloatStringQuickEditor; import com.fr.report.cell.CellElementValueConverter; @@ -56,8 +84,11 @@ import com.fr.stable.xml.ObjectXMLWriterFinder; import com.fr.start.BBSGuestPaneProvider; import com.fr.xml.ReportXMLUtils; -import javax.swing.*; -import java.awt.*; +import javax.swing.JDialog; +import javax.swing.JPanel; +import javax.swing.SwingConstants; +import java.awt.BorderLayout; +import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; @@ -108,23 +139,27 @@ public class DesignerModule extends DesignModule { /** * kunsnat:注册单元格选中Editor */ - private void registerCellEditor() { - ActionFactory.registerCellEditor(String.class, CellStringQuickEditor.class); - ActionFactory.registerCellEditor(Number.class, CellStringQuickEditor.class); - ActionFactory.registerCellEditor(BaseFormula.class, CellFormulaQuickEditor.class); - ActionFactory.registerCellEditor(SubReport.class, CellSubReportEditor.class); - ActionFactory.registerCellEditor(RichText.class, CellRichTextEditor.class); - ActionFactory.registerCellEditor(DSColumn.class, CellDSColumnEditor.class); - ActionFactory.registerCellEditor(Image.class, CellImageQuickEditor.class); - ActionFactory.registerCellEditor(BiasTextPainter.class, CellBiasTextPainterEditor.class); - ActionFactory.registerCellEditor(BufferedImage.class, CellImageQuickEditor.class); - - ActionFactory.registerChartCellEditorInEditor(BasicChartQuickEditor.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()); + + ActionFactory.registerChartCellEditorInEditor(new BasicChartQuickEditor()); Set providers = ExtraDesignClassManager.getInstance().getArray(ElementUIProvider.MARK_STRING); for (ElementUIProvider provider : providers) { - ActionFactory.registerCellEditor(provider.targetObjectClass(), provider.quickEditor()); + try { + ActionFactory.registerCellEditor(provider.targetObjectClass(), provider.quickEditor().newInstance()); + } catch (Exception e) { + FRLogger.getLogger().error(e.getMessage(), e); + } } } @@ -138,12 +173,13 @@ public class DesignerModule extends DesignModule { * kunnat: 注册悬浮选中Editor */ private void registerFloatEditor() { - ActionFactory.registerFloatEditor(String.class, FloatStringQuickEditor.class); - ActionFactory.registerFloatEditor(Formula.class, FloatStringQuickEditor.class); - ActionFactory.registerFloatEditor(Image.class, FloatImageQuickEditor.class); - ActionFactory.registerFloatEditor(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()); - ActionFactory.registerChartFloatEditorInEditor(FloatChartQuickEditor.class); + ActionFactory.registerChartFloatEditorInEditor(new FloatChartQuickEditor()); } /** diff --git a/designer/src/com/fr/quickeditor/CellQuickEditor.java b/designer/src/com/fr/quickeditor/CellQuickEditor.java index c218d93979..de1f9d0175 100644 --- a/designer/src/com/fr/quickeditor/CellQuickEditor.java +++ b/designer/src/com/fr/quickeditor/CellQuickEditor.java @@ -18,13 +18,25 @@ import com.fr.design.menu.ShortCut; import com.fr.design.selection.QuickEditor; import com.fr.general.Inter; import com.fr.grid.selection.CellSelection; -import com.fr.quickeditor.cellquick.CellElementBarLayout; +import com.fr.quickeditor.cellquick.layout.CellElementBarLayout; import com.fr.report.cell.TemplateCellElement; import com.fr.stable.ColumnRow; -import javax.swing.*; -import java.awt.*; -import java.awt.event.*; +import javax.swing.BorderFactory; +import javax.swing.JComponent; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JScrollBar; +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.AdjustmentEvent; +import java.awt.event.AdjustmentListener; +import java.awt.event.MouseWheelEvent; +import java.awt.event.MouseWheelListener; import java.util.ArrayList; /** @@ -35,19 +47,22 @@ import java.util.ArrayList; public abstract class CellQuickEditor extends QuickEditor { - /*面板配置*/ + /** + * 面板配置 + */ protected UITextField columnRowTextField; protected TemplateCellElement cellElement; - /*占位label*/ - protected static final Dimension LABEL_DIMENSION = new Dimension(60, 20); - protected static final UILabel EMPTY_LABEL = new UILabel(); + /** + * 占位label + */ + protected final Dimension LABEL_DIMENSION = new Dimension(60, 20); + protected final UILabel EMPTY_LABEL = new UILabel(); protected static final int VGAP = 10, HGAP = 8, VGAP_INNER = 3; - static { - EMPTY_LABEL.setPreferredSize(LABEL_DIMENSION); - } - /*滚动条相关配置*/ + /** + * 滚动条相关配置 + */ private static final int MAXVALUE = 100; private static final int CONTENT_PANE_WIDTH_GAP = 3; private static final int MOUSE_WHEEL_SPEED = 5; @@ -61,8 +76,10 @@ public abstract class CellQuickEditor extends QuickEditor { private int currentSelectedIndex; private JPanel leftContentPane; private UIScrollBar scrollBar; + private ActionListener comboBoxActionListener; public CellQuickEditor() { + EMPTY_LABEL.setPreferredSize(LABEL_DIMENSION); double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double[] columnSize = {p, f}; @@ -147,7 +164,39 @@ public abstract class CellQuickEditor extends QuickEditor { ColumnRow columnRow = ColumnRow.valueOf(cs.getColumn(), cs.getRow()); columnRowTextField.setText(columnRow.toString()); cellElement = tc.getEditingElementCase().getTemplateCellElement(cs.getColumn(), cs.getRow()); + + comboBox.removeActionListener(comboBoxActionListener); + comboBox.removeAllItems(); + JTemplate jTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); + if (jTemplate != null) { + String[] items = getDefaultComboBoxItems(); + for (String item : items) { + comboBox.addItem(item); + } + } + Object comboBoxSelected = getComboBoxSelected(); + if (comboBoxSelected != null) { + comboBox.setSelectedItem(((ShortCut) comboBoxSelected).getMenuKeySet().getMenuKeySetName()); + } else { + comboBox.setSelectedIndex(1); + } + currentSelectedIndex = comboBox.getSelectedIndex(); + comboBoxActionListener = new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + cellInsertActions = ActionFactory.createCellInsertAction(ElementCasePane.class, tc); + selectedIndex = comboBox.getSelectedIndex(); + comboBox.setPopupVisible(false); + comboBox.repaint(); + if (selectedIndex < cellInsertActions.length) { + cellInsertActions[selectedIndex].actionPerformed(e); + } + comboBox.setSelectedIndex(currentSelectedIndex); + } + }; + comboBox.addActionListener(comboBoxActionListener); refreshDetails(); + } /** @@ -165,10 +214,10 @@ public abstract class CellQuickEditor extends QuickEditor { cellLabel.setPreferredSize(LABEL_DIMENSION); UILabel insertContentLabel = new UILabel(Inter.getLocText("FR-Designer_Insert_Cell_Element")); insertContentLabel.setPreferredSize(LABEL_DIMENSION); - UIComboBox cellElementEditComboBox = initCellElementEditComboBox(); + initCellElementEditComboBox(); Component[][] components = new Component[][]{ new Component[]{cellLabel, columnRowTextField = initColumnRowTextField()}, - new Component[]{insertContentLabel, cellElementEditComboBox}, + new Component[]{insertContentLabel, comboBox}, }; return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, HGAP, VGAP); } @@ -214,13 +263,12 @@ public abstract class CellQuickEditor extends QuickEditor { /** * 初始化添加按钮 - * - * @return UIButton */ - private UIComboBox initCellElementEditComboBox() { + private void initCellElementEditComboBox() { JTemplate jTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); if (jTemplate == null) { - return comboBox = new UIComboBox(); + comboBox = new UIComboBox(); + return; } final String[] items = getDefaultComboBoxItems(); comboBox = new UIComboBox(items); @@ -231,18 +279,7 @@ public abstract class CellQuickEditor extends QuickEditor { comboBox.setSelectedIndex(1); } currentSelectedIndex = comboBox.getSelectedIndex(); - comboBox.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - cellInsertActions = ActionFactory.createCellInsertAction(ElementCasePane.class, tc); - selectedIndex = comboBox.getSelectedIndex(); - comboBox.setPopupVisible(false); - comboBox.repaint(); - cellInsertActions[selectedIndex].actionPerformed(e); - comboBox.setSelectedIndex(currentSelectedIndex); - } - }); - return comboBox; + comboBox.addActionListener(comboBoxActionListener); } private String[] getDefaultComboBoxItems() { diff --git a/designer/src/com/fr/quickeditor/cellquick/CellBiasTextPainterEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellBiasTextPainterEditor.java index 8347f6d0d9..aa1a26542a 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellBiasTextPainterEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellBiasTextPainterEditor.java @@ -13,8 +13,10 @@ import com.fr.general.Inter; import com.fr.quickeditor.CellQuickEditor; import com.fr.report.cell.painter.BiasTextPainter; -import javax.swing.*; -import java.awt.*; +import javax.swing.JComponent; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -22,6 +24,9 @@ import java.awt.event.ActionListener; * 单元格元素斜线编辑器 */ public class CellBiasTextPainterEditor extends CellQuickEditor { + public CellBiasTextPainterEditor() { + super(); + } @Override public JComponent createCenterBody() { diff --git a/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java index b6681b316d..1ae401bc5e 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java @@ -1,7 +1,6 @@ package com.fr.quickeditor.cellquick; import com.fr.base.BaseFormula; -import com.fr.design.actions.UpdateAction; import com.fr.design.actions.columnrow.DSColumnConditionAction; import com.fr.design.actions.core.ActionFactory; import com.fr.design.actions.insert.cell.DSColumnCellAction; @@ -26,7 +25,7 @@ import com.fr.design.gui.itextfield.UITextField; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; -import com.fr.design.mainframe.cell.CellEditorPane; +import com.fr.design.mainframe.cell.AbstractDSCellEditorPane; import com.fr.general.IOUtils; import com.fr.general.Inter; import com.fr.quickeditor.CellQuickEditor; @@ -71,7 +70,6 @@ import static com.fr.report.cell.cellattr.core.group.FilterTypeEnum.UNDEFINE; * @since 9.0 */ public class CellDSColumnEditor extends CellQuickEditor { - private static final double P = TableLayout.PREFERRED, F = TableLayout.FILL; private static final Color TIP_FONT_COLOR = new Color(0x7F333334, true); @@ -82,7 +80,7 @@ public class CellDSColumnEditor extends CellQuickEditor { /** * 基本和高级设置 */ - private ArrayList paneList; + private ArrayList paneList; /** * 基本和高级设置 卡片布局 */ @@ -106,7 +104,7 @@ public class CellDSColumnEditor extends CellQuickEditor { */ private DSColumnAdvancedEditorPane cellDSColumnAdvancedPane; - private CellDSColumnEditor() { + public CellDSColumnEditor() { super(); } @@ -146,6 +144,7 @@ public class CellDSColumnEditor extends CellQuickEditor { /** * 关闭时候释放 */ + @Override public void release() { super.release(); dsColumnRegion = null; @@ -161,7 +160,7 @@ public class CellDSColumnEditor extends CellQuickEditor { card = new CardLayout(); cardContainer = new JPanel(card); for (int i = 0; i < paneList.size(); i++) { - CellEditorPane pane = paneList.get(i); + AbstractDSCellEditorPane pane = paneList.get(i); iconArray[i] = pane.getIconPath(); cardContainer.add(pane, pane.title4PopupWindow()); } @@ -196,7 +195,7 @@ public class CellDSColumnEditor extends CellQuickEditor { * @version 2017年7月25日 * @since 9.0 */ - class DSColumnBasicEditorPane extends CellEditorPane { + class DSColumnBasicEditorPane extends AbstractDSCellEditorPane { /** * 数据集和数据列 @@ -211,6 +210,16 @@ public class CellDSColumnEditor extends CellQuickEditor { */ private JPanel conditionPane; + /** + * 条件过滤按钮触发动作 + */ + private DSColumnConditionAction condition; + + /** + * 条件过滤按钮 + */ + private UIButton conditionUIButton; + /** * 分组设置监听器 */ @@ -251,17 +260,16 @@ public class CellDSColumnEditor extends CellQuickEditor { double[] rowSize = {P}, columnSize = {P, F}; UILabel uiLabel = new UILabel(Inter.getLocText("FR-Designer_Filter_Conditions")); uiLabel.setPreferredSize(LABEL_DIMENSION); - UIButton uiButton = new UIButton(); + condition = new DSColumnConditionAction(); if (tc != null) { - //第一次初始化时tc为空,会引发NullPointerException - UpdateAction condition = new DSColumnConditionAction(tc); - //丢掉icon,修改按钮名称为编辑 - condition.setSmallIcon(null); - condition.setName(Inter.getLocText("FR-Designer_Edit")); - uiButton = new UIButton(condition); + condition.setEditingComponent(tc); } + //丢掉icon,修改按钮名称为编辑 + condition.setSmallIcon(null); + condition.setName(Inter.getLocText("FR-Designer_Edit")); + conditionUIButton = new UIButton(condition); Component[][] components = new Component[][]{ - new Component[]{uiLabel, uiButton} + new Component[]{uiLabel, conditionUIButton} }; conditionPane = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, HGAP, VGAP); this.createScrollPane(); @@ -291,6 +299,9 @@ public class CellDSColumnEditor extends CellQuickEditor { public void populate() { dataPane.populate(null, cellElement); groupPane.populate(cellElement); + if (tc != null) { + condition.setEditingComponent(tc); + } } @@ -299,6 +310,7 @@ public class CellDSColumnEditor extends CellQuickEditor { * * @return content JPanel */ + @Override protected JPanel createContentPane() { double[] columnSize = {F}; @@ -316,7 +328,7 @@ public class CellDSColumnEditor extends CellQuickEditor { } - class DSColumnAdvancedEditorPane extends CellEditorPane { + class DSColumnAdvancedEditorPane extends AbstractDSCellEditorPane { /** * 排列顺序 @@ -464,6 +476,7 @@ public class CellDSColumnEditor extends CellQuickEditor { * * @return 内容面板 */ + @Override protected JPanel createContentPane() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); //结果集排序 @@ -539,6 +552,7 @@ public class CellDSColumnEditor extends CellQuickEditor { multiPane.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 0)); multiNumPane.add(multiPane); useMultiplyNumCheckBox.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { checkButtonEnabled(); cellDSColumnAdvancedPane.updateMultipleConfig(); @@ -712,6 +726,7 @@ public class CellDSColumnEditor extends CellQuickEditor { private JFormulaField bottomFormulaPane; private ActionListener actionListener = new ActionListener() { + @Override public void actionPerformed(ActionEvent evt) { int selectIndex = rsComboBox.getSelectedIndex(); CardLayout setCardPaneLayout = (CardLayout) setCardPane.getLayout(); @@ -1015,6 +1030,7 @@ public class CellDSColumnEditor extends CellQuickEditor { } private ActionListener formulaButtonActionListener = new ActionListener() { + @Override public void actionPerformed(ActionEvent evt) { BaseFormula valueFormula = BaseFormula.createFormulaBuilder().build(); String text = formulaTextField.getText(); diff --git a/designer/src/com/fr/quickeditor/cellquick/CellFormulaQuickEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellFormulaQuickEditor.java index 695410cb0d..96f92d58b5 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellFormulaQuickEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellFormulaQuickEditor.java @@ -9,6 +9,7 @@ import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.formula.FormulaFactory; import com.fr.design.formula.UIFormula; import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; @@ -22,10 +23,14 @@ import com.fr.report.cell.DefaultTemplateCellElement; import com.fr.stable.ColumnRow; import com.fr.stable.StringUtils; -import javax.swing.*; +import javax.swing.BorderFactory; +import javax.swing.JComponent; +import javax.swing.JPanel; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; -import java.awt.*; +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.KeyAdapter; @@ -69,7 +74,7 @@ public class CellFormulaQuickEditor extends CellQuickEditor { }; - private CellFormulaQuickEditor() { + public CellFormulaQuickEditor() { super(); } diff --git a/designer/src/com/fr/quickeditor/cellquick/CellImageQuickEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellImageQuickEditor.java index d33ff1828d..c799d6e2aa 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellImageQuickEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellImageQuickEditor.java @@ -5,6 +5,7 @@ import com.fr.design.actions.core.ActionFactory; import com.fr.design.actions.insert.cell.ImageCellAction; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.DesignerContext; @@ -14,8 +15,11 @@ import com.fr.general.Inter; import com.fr.quickeditor.CellQuickEditor; import com.fr.report.cell.cellattr.CellImage; -import javax.swing.*; -import java.awt.*; +import javax.swing.JComponent; +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; @@ -27,7 +31,7 @@ import java.awt.event.ActionListener; */ public class CellImageQuickEditor extends CellQuickEditor { - private CellImageQuickEditor() { + public CellImageQuickEditor() { super(); } diff --git a/designer/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java index 1c0bdd04da..461dee3eee 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java @@ -3,13 +3,17 @@ package com.fr.quickeditor.cellquick; import com.fr.design.actions.core.ActionFactory; import com.fr.design.actions.insert.cell.RichTextCellAction; import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.general.Inter; import com.fr.quickeditor.CellQuickEditor; -import javax.swing.*; -import java.awt.*; +import javax.swing.JComponent; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dimension; /** * 单元格元素富文本编辑器 @@ -20,7 +24,7 @@ import java.awt.*; public class CellRichTextEditor extends CellQuickEditor { private UIButton richTextButton; - private CellRichTextEditor() { + public CellRichTextEditor() { super(); } diff --git a/designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java index 5f335ffb76..e8f79166ad 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java @@ -3,6 +3,7 @@ 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; @@ -12,10 +13,12 @@ import com.fr.report.cell.DefaultTemplateCellElement; import com.fr.stable.ColumnRow; import com.fr.stable.StringUtils; -import javax.swing.*; +import javax.swing.JComponent; +import javax.swing.JPanel; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; -import java.awt.*; +import java.awt.BorderLayout; +import java.awt.Dimension; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; @@ -50,7 +53,7 @@ public class CellStringQuickEditor extends CellQuickEditor { }; - private CellStringQuickEditor() { + public CellStringQuickEditor() { super(); } diff --git a/designer/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java index be34789f9b..cfa362cb38 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java @@ -8,8 +8,10 @@ import com.fr.design.layout.TableLayoutHelper; import com.fr.general.Inter; import com.fr.quickeditor.CellQuickEditor; -import javax.swing.*; -import java.awt.*; +import javax.swing.JComponent; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.Component; /** * 单元格元素子报表编辑器 @@ -21,7 +23,7 @@ public class CellSubReportEditor extends CellQuickEditor { private UIButton subReportButton; - private CellSubReportEditor() { + public CellSubReportEditor() { super(); } diff --git a/designer/src/com/fr/quickeditor/cellquick/CellElementBarLayout.java b/designer/src/com/fr/quickeditor/cellquick/layout/CellElementBarLayout.java similarity index 95% rename from designer/src/com/fr/quickeditor/cellquick/CellElementBarLayout.java rename to designer/src/com/fr/quickeditor/cellquick/layout/CellElementBarLayout.java index c9714bc465..56bb83cc22 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellElementBarLayout.java +++ b/designer/src/com/fr/quickeditor/cellquick/layout/CellElementBarLayout.java @@ -1,4 +1,4 @@ -package com.fr.quickeditor.cellquick; +package com.fr.quickeditor.cellquick.layout; import javax.swing.*; import java.awt.*; 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 8f0213562c..38f27ca061 100644 --- a/designer_base/src/com/fr/design/actions/core/ActionFactory.java +++ b/designer_base/src/com/fr/design/actions/core/ActionFactory.java @@ -7,68 +7,72 @@ import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.mainframe.JTemplate; import com.fr.design.menu.MenuKeySet; import com.fr.design.selection.QuickEditor; +import com.fr.general.FRLogger; -import javax.swing.*; +import javax.swing.Action; +import javax.swing.KeyStroke; import java.awt.event.KeyEvent; import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; /** * 插入单元格元素和插入悬浮元素的一些集合方法 + * + * @author null + * @version 2017年11月17日14点39分 */ public class ActionFactory { private static LinkedHashSet> actionClasses = new LinkedHashSet<>(); private static LinkedHashSet> floatActionClasses = new LinkedHashSet<>(); - - private ActionFactory() { - } - - private static Map> floatEditor = new HashMap<>(); - + /** + * 悬浮元素编辑器 + */ + private static ConcurrentMap floatEditor = new ConcurrentHashMap<>(); private static Class chartCollectionClass = null; - - private static Map> cellEditor = new HashMap<>(); - + /** + * 单元格元素编辑器 + */ + private static ConcurrentMap cellEditor = new ConcurrentHashMap<>(); private static UpdateAction chartPreStyleAction = null; - private static UpdateAction chartMapEditorAction = null; + private ActionFactory() { + } + /** - * 待说明 + * 注册单元格编辑器 * - * @param clazz 待说明 - * @param editor 待说明 + * @param clazz 单元格属性类型 + * @param editor 单元格编辑器实例 */ - public static void registerCellEditor(Class clazz, Class editor) { + public static void registerCellEditor(Class clazz, QuickEditor editor) { cellEditor.put(clazz, editor); } /** - * 待说明 + * 注册悬浮元素编辑器 * - * @param clazz 待说明 - * @param editor 待说明 + * @param clazz 悬浮元素类型 + * @param editor 悬浮元素编辑器实例 */ - public static void registerFloatEditor(Class clazz, Class editor) { + public static void registerFloatEditor(Class clazz, QuickEditor editor) { floatEditor.put(clazz, editor); } /** - * 注册图表的 预定义样式. + * kunsnat: 图表注册 悬浮元素编辑器 , 因为ChartCollecion和ChartQuickEditor一个在Chart,一个在Designer, 所以分开注册. * - * @param action 注册的图表预定义样式action - */ - public static void registerChartPreStyleAction(UpdateAction action) { - chartPreStyleAction = action; - } - - /** - * 返回 图表预定义样式Action + * @param clazz 待说明 */ - public static UpdateAction getChartPreStyleAction() { - return chartPreStyleAction; + public static void registerChartCollection(Class clazz) { + chartCollectionClass = clazz; } /** @@ -80,21 +84,14 @@ public class ActionFactory { chartMapEditorAction = action; } - public static UpdateAction getChartMapEditorAction() { - return chartMapEditorAction; - } /** - * kunsnat: 图表注册 悬浮元素编辑器 , 因为ChartCollecion和ChartQuickEditor一个在Chart,一个在Designer, 所以分开注册. + * 注册图表的 预定义样式. * - * @param clazz 待说明 + * @param action 注册的图表预定义样式action */ - public static void registerChartCollection(Class clazz) { - chartCollectionClass = clazz; - } - - public static Class getChartCollectionClass() { - return chartCollectionClass; + public static void registerChartPreStyleAction(UpdateAction action) { + chartPreStyleAction = action; } /** @@ -102,7 +99,7 @@ public class ActionFactory { * * @param editor 待说明 */ - public static void registerChartFloatEditorInEditor(Class editor) { + public static void registerChartFloatEditorInEditor(QuickEditor editor) { if (chartCollectionClass != null) { floatEditor.put(chartCollectionClass, editor); } @@ -113,46 +110,58 @@ public class ActionFactory { * * @param editor 待说明 */ - public static void registerChartCellEditorInEditor(Class editor) { + public static void registerChartCellEditorInEditor(QuickEditor editor) { if (chartCollectionClass != null) { cellEditor.put(chartCollectionClass, editor); } } /** - * 返回 悬浮元素选中的Editor + * 图表预定义样式Action + * + * @return 图表预定义样式Action */ - public static QuickEditor getFloatEditor(Class clazz) { - return createEditor(clazz, floatEditor); + public static UpdateAction getChartPreStyleAction() { + return chartPreStyleAction; } - private static QuickEditor createEditor(Class clazz, Map> editorMap) { - Class c = findQuickEditorClass(clazz, editorMap); - if (c == null) { - return null; - } - try { - Constructor constructor = c.getDeclaredConstructor(); - constructor.setAccessible(true); - return constructor.newInstance(); - } catch (Exception e) { - FRContext.getLogger().error(e.getMessage(), e); - } - return null; + + /** + * 图表编辑器Action + * + * @return 图表编辑器Action + */ + public static UpdateAction getChartMapEditorAction() { + return chartMapEditorAction; } - private static Class findQuickEditorClass(Class clazz, Map> editorMap) { - Class c = editorMap.get(clazz); - if (c == null) { - Class superClazz = clazz.getSuperclass(); - if (superClazz == null) { - return null; - } - return findQuickEditorClass(superClazz, editorMap); - } - return c; + + /** + * 获取图表集合类 + * + * @return 获取图表集合类 + */ + public static Class getChartCollectionClass() { + return chartCollectionClass; } + + /** + * 选中的悬浮元素的编辑器 + * + * @param clazz 选中的悬浮元素类型 + * @return 编辑器实例 + */ + public static QuickEditor getFloatEditor(Class clazz) { + return createEditor(clazz, floatEditor); + } + + /** + * 选中的单元格元素编辑器 + * + * @param clazz 选中的单元格元素类型 + * @return 编辑器实例 + */ public static QuickEditor getCellEditor(Class clazz) { return createEditor(clazz, cellEditor); } @@ -289,4 +298,25 @@ public class ActionFactory { } return actions.toArray(new UpdateAction[actions.size()]); } + + private static QuickEditor createEditor(Class clazz, Map editorMap) { + QuickEditor c = findQuickEditorClass(clazz, editorMap); + if (c == null) { + FRLogger.getLogger().error("No Such Editor"); + return null; + } + return c; + } + + private static QuickEditor findQuickEditorClass(Class clazz, Map editorMap) { + QuickEditor c = editorMap.get(clazz); + if (c == null) { + Class superClazz = clazz.getSuperclass(); + if (superClazz == null) { + return null; + } + return findQuickEditorClass(superClazz, editorMap); + } + return c; + } } \ No newline at end of file From 3cbb7ba376ccc971e8f56f53cf078a0d0201e0b6 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Mon, 20 Nov 2017 13:38:43 +0800 Subject: [PATCH 04/21] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/quickeditor/CellQuickEditor.java | 47 +++++++++---------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/designer/src/com/fr/quickeditor/CellQuickEditor.java b/designer/src/com/fr/quickeditor/CellQuickEditor.java index de1f9d0175..a6fc57ca88 100644 --- a/designer/src/com/fr/quickeditor/CellQuickEditor.java +++ b/designer/src/com/fr/quickeditor/CellQuickEditor.java @@ -165,38 +165,37 @@ public abstract class CellQuickEditor extends QuickEditor { columnRowTextField.setText(columnRow.toString()); cellElement = tc.getEditingElementCase().getTemplateCellElement(cs.getColumn(), cs.getRow()); - comboBox.removeActionListener(comboBoxActionListener); - comboBox.removeAllItems(); JTemplate jTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); if (jTemplate != null) { + comboBox.removeActionListener(comboBoxActionListener); + comboBox.removeAllItems(); String[] items = getDefaultComboBoxItems(); for (String item : items) { comboBox.addItem(item); } - } - Object comboBoxSelected = getComboBoxSelected(); - if (comboBoxSelected != null) { - comboBox.setSelectedItem(((ShortCut) comboBoxSelected).getMenuKeySet().getMenuKeySetName()); - } else { - comboBox.setSelectedIndex(1); - } - currentSelectedIndex = comboBox.getSelectedIndex(); - comboBoxActionListener = new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - cellInsertActions = ActionFactory.createCellInsertAction(ElementCasePane.class, tc); - selectedIndex = comboBox.getSelectedIndex(); - comboBox.setPopupVisible(false); - comboBox.repaint(); - if (selectedIndex < cellInsertActions.length) { - cellInsertActions[selectedIndex].actionPerformed(e); - } - comboBox.setSelectedIndex(currentSelectedIndex); + Object comboBoxSelected = getComboBoxSelected(); + if (comboBoxSelected != null) { + comboBox.setSelectedItem(((ShortCut) comboBoxSelected).getMenuKeySet().getMenuKeySetName()); + } else { + comboBox.setSelectedIndex(1); } - }; - comboBox.addActionListener(comboBoxActionListener); + currentSelectedIndex = comboBox.getSelectedIndex(); + comboBoxActionListener = new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + cellInsertActions = ActionFactory.createCellInsertAction(ElementCasePane.class, tc); + selectedIndex = comboBox.getSelectedIndex(); + comboBox.setPopupVisible(false); + comboBox.repaint(); + if (selectedIndex < cellInsertActions.length) { + cellInsertActions[selectedIndex].actionPerformed(e); + } + comboBox.setSelectedIndex(currentSelectedIndex); + } + }; + comboBox.addActionListener(comboBoxActionListener); + } refreshDetails(); - } /** From 6579331b5eaac9513bdaa1321e00bacfda877c9b Mon Sep 17 00:00:00 2001 From: XiaXiang Date: Mon, 20 Nov 2017 17:09:52 +0800 Subject: [PATCH 05/21] =?UTF-8?q?REPORT-5262=20alphafine=20=E8=BF=9C?= =?UTF-8?q?=E7=A8=8B=E8=AE=BE=E8=AE=A1=E6=90=9C=E7=B4=A2=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E9=80=9F=E5=BA=A6=E6=85=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/alphafine/search/manager/FileSearchManager.java | 1 + 1 file changed, 1 insertion(+) diff --git a/designer/src/com/fr/design/mainframe/alphafine/search/manager/FileSearchManager.java b/designer/src/com/fr/design/mainframe/alphafine/search/manager/FileSearchManager.java index 76cc8a6351..8704e17767 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/search/manager/FileSearchManager.java +++ b/designer/src/com/fr/design/mainframe/alphafine/search/manager/FileSearchManager.java @@ -88,6 +88,7 @@ public class FileSearchManager implements AlphaFineSearchProcessor { Env env = FRContext.getCurrentEnv(); fileNodes = new ArrayList<>(); fileNodes = listTpl(env, ProjectConstants.REPORTLETS_NAME, true); + AlphaFineHelper.checkCancel(); isContainCpt = true; isContainFrm = true; for (FileNode node : fileNodes) { From 4e3448c9d4af174a89587914ed6ca2ea103b733f Mon Sep 17 00:00:00 2001 From: hzzz Date: Tue, 21 Nov 2017 10:24:42 +0800 Subject: [PATCH 06/21] =?UTF-8?q?REPORT-5700=20=E8=AE=BE=E8=AE=A1=E5=99=A8?= =?UTF-8?q?=E5=9B=BE=E6=A0=87=E8=A1=A5=E5=85=85=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/images/buttonicon/prewidget.png | Bin 396 -> 450 bytes .../com/fr/design/images/m_format/modified.png | Bin 363 -> 256 bytes .../com/fr/design/images/m_insert/hyperLink.png | Bin 740 -> 610 bytes .../com/fr/design/form/images/install icon.png | Bin 453 -> 564 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/designer_base/src/com/fr/design/images/buttonicon/prewidget.png b/designer_base/src/com/fr/design/images/buttonicon/prewidget.png index 39fcf2318bcb181221a3a8c31c2e2c499909f2e6..ab0a9a244d5ebe7852325cd7482fbe407449ff59 100644 GIT binary patch literal 450 zcmV;z0X_bSP)Px$d`Uz>R7ef&R69{5DgWgpx^|+ z9g+=nDJWub1tN+Fk!40=l=awaTMJNDHyif?WH)5cgEw7 zmndp&O9K2KTxgwiWt@DkVphXNS=BIXG*&~z*E29yLM|_yNJB@sClD2sk#rtm0Ql&U2}@*zndNFY%74^ zWHfqv$H`3g)LBG@XRXB(9=~E^Q~Yi>q`s_#1o#eDSzRut sb!!)|$W@XgTe)OGfUZ+P_>YFZ0h)J-7LJP+K>z>%07*qoM6N<$g8enV#sB~S literal 396 zcmV;70dxL|P)9v-V$5TOJz}g82nTv}-u0oxWm&El#qJ%E+jGvHAsvBIjhX|9 zwI5po*_87&SubRrMIhaPSlfezEL)j2jlGxDD$&vr(dU(zdqHgy)K>>3Eo2*w0=Z!x zA7 q$SpHJh|Ozjn^URr7aN-Y_xcUU0*B`{LTjb~0000yKr=I)nfaPy%d?0aMbgF2FVZc> z=>QU%$8n6yhJ5e6HzH4C@nVc&Wd-UW)CwHng$4M+Xi#qzxKU;pTxt<(IM=`)tgtYD z>i>3(9>TN-qY!AtsPU=1h1%yI`eM}hz5+UmUSO@osPQSku+S6ZJ3dv|e0>4yb7@q0 S0n0J~0000%hoxj>)`Re#M@(m)W~tAKb&Akf8F zrfWJ51Tt}#KWMd@hb#&N+RSnM3S&;ENs=_mvOHfdf8LDg-UNb8K<@|6h~Tm)idXM$ z1KLd{87sN82%&_0sJMKfo(RiFa?X*anFuWtWXBMqrzPx%97#k$R5%f(lfQ4%P!PxOrD-UnY)ExVS1f3XM4LpZl_g9J2|^T6GSGn~GdoL0 zm|5tA1PllP0l^=T0V%B#7X(|~Arh4d5&}i4f!c8%-><6_kdmoyu;0DA@8|B`50N7d zHPmM^%Xy{3d$5Gy%9|7|D{Bjr$-XS0m(HmNeiTSKj>c#YQ zveIZY`lG~Li}3^TUHk&2#A>(O7e!KMV822o*Y@_jr^RA1&bUz{0>H7v%&k`I1A`KY zZ&O%W6;X9UJkPr|O3by0%$_kfEz3F{hT(}I=y#QR|5|I~rcz(m27_a7#{nkjn43Et zN8i`cN?Pm1CrWh}m{}?B9PB%`UGEhNg;~QeDyC_E>~uPZ8yf+t)oROeoCUB}M7sDJ zYX@Sz0$4hgD%Zo%tpK_n1VI{*mqSPdz%FYp(uuu*=;vom-aP$`L(=Ee zMF6%zA|d^Lu&edd8Ng+`?4E76=f|F}@B1Z`{{VY(3GLiSBtD&NHk;p>B%94{3e&|+-KH2|9Q#DUwl_A% wRzLvXK)GC6#lyM{v&XU_##=cMGv>(S4@wFKpB7^o{{R3007*qoM6N<$g2Ox%8~^|S literal 740 zcmVPx%o=HSOR5%f>Q%!3VQ51b|Vq$2GA~wMgOxxh5h;A~$l7hPm+HMqL7eYa-KS1b4 zcl`&taiP(LU;}1b4cI_~hz&_*rB+w@C>XRLhS*>}=XuT~8ER=)`pBJo-o59(oOkDr z5dUe(gU*RWBIlG6OR&pAs9>KXx1|(sVDWrD|7m}nV{af9i@8QdMjtAro=GVuQFKB| zZ3TD(_$s(l$Snr~0pHBbOnPf;t2eB-74eW_v7ACd6iU819CFb#)rvQGS150yz)t3361| zsMTs0s@3XiV4?BR?}=IfOrZEXdXP3v5s^}DGS5ZK7<1$xvWjaiu-3}+5e`Ql;Gd2F zj)CMtPkt(8-hc;J9kqy3wtx}RUc#RQzlHb@Sf^0P-?bEBGYdNd!ZjX#5onPDSP8=#PA;l{kw%Yikw|J?y4ddOmr6`-te#QtqR?5-j zA!y)6C^R`YoZ5p<;+Ie=m6kCTY{{&ph(spfdc|U?=J6c!W14rvVcotOIeV936ePYk zPqW#o0^7Z`Il3N6V_NSG4z}a_0rR@9-v@u4Ia|??7>!2959$#W>{IwxkB0UC?Ee7f Wx-kBTvzX^xKuIQQNq&GIlMf~<7gel? zAho#h54iCk2nsHA;ieR%NTFSa?n)P_(SnIO$&7-aNEhxhuEd4OCX>0>_Xvq*AkoX?_@5{WTPv5#H-Fw-@)d6|6bfBSDT9ph zZJ$rkIp+sL$irkZ`Ocf$21un+I=;SKE>{Z#x@I|-i;ad@GR@Lgzu)&BkX@*IwlN#Z#p>Z0}_4+!31NqzbHA1#om6%X0vt5k&^dtE}quS8v3`6K+}dl zZ&~GCO#P#j=RMn`k z?TXdhX?q7WFvi3ebo&W$$M`FN&fr#73x&dcCX*Sc*MFTnj`|7jVvitg01D{3-s?E- z0ze5!rWx4)0TP%Y2(EGvHU>wKwR;v{wCguAnLmfZs6FB66cjiw3VzGFCWPgH1#elI%lphp{V#3H= ze$1$YpxR85WD2f=4=l^FO$K`+lW5|_#|T+5k~Y@}_$!RZ*>NR5i z8L^0>qZ|8FSgtWKNYnchM|uGa3GXy?#CNEa?6{ZkJy1%$a*-|yF-T^3tPXrLTv%(H zYd9}}$-;y|9Y@4HZ8eWI^$`PCo Date: Tue, 21 Nov 2017 15:27:41 +0800 Subject: [PATCH 07/21] =?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 08/21] =?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 0423b1f21f57f50636c90baef3163252fdf146cc Mon Sep 17 00:00:00 2001 From: MoMeak Date: Wed, 22 Nov 2017 11:48:24 +0800 Subject: [PATCH 09/21] =?UTF-8?q?REPORT-5661=20mac=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E6=89=93=E5=BC=80=E6=9C=80=E8=BF=91=E7=9A=84=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=EF=BC=8C=E6=8F=90=E7=A4=BA=E6=A8=A1=E6=9D=BF=E4=B8=8D?= =?UTF-8?q?=E5=AD=98=E5=9C=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/mainframe/JTemplate.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/mainframe/JTemplate.java b/designer_base/src/com/fr/design/mainframe/JTemplate.java index fc46ab33f1..5705f784d5 100644 --- a/designer_base/src/com/fr/design/mainframe/JTemplate.java +++ b/designer_base/src/com/fr/design/mainframe/JTemplate.java @@ -45,6 +45,7 @@ import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.stable.ArrayUtils; +import com.fr.stable.OperatingSystem; import com.fr.stable.ProductConstants; import com.fr.stable.StringUtils; import com.fr.stable.core.UUID; @@ -196,7 +197,11 @@ public abstract class JTemplate> ex if (editingFileName.startsWith(ProjectConstants.REPORTLETS_NAME)) { editingFileName = ((FileNodeFILE) getEditingFILE()).getEnvPath() + File.separator + editingFileName; } - return editingFileName.replaceAll("/", "\\\\"); + if (!OperatingSystem.isMacOS()) { + return editingFileName.replaceAll("/", "\\\\"); + } else { + return editingFileName.replaceAll("\\\\", "/"); + } } protected abstract JComponent createCenterPane(); From fb1f22eae842b50751fb22cd9cd6d3e184d6facb Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Wed, 22 Nov 2017 13:46:07 +0800 Subject: [PATCH 10/21] =?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 cd63a0a43931b8e610b0febfaa5cc1f9a857915e Mon Sep 17 00:00:00 2001 From: MoMeak Date: Wed, 22 Nov 2017 14:04:37 +0800 Subject: [PATCH 11/21] =?UTF-8?q?REPORT-5661=20=E5=8C=BA=E5=88=86mac?= =?UTF-8?q?=E5=92=8Cwindows?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/mainframe/DesignerFrame.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/mainframe/DesignerFrame.java b/designer_base/src/com/fr/design/mainframe/DesignerFrame.java index 1881bd02c0..f6c2b2c404 100644 --- a/designer_base/src/com/fr/design/mainframe/DesignerFrame.java +++ b/designer_base/src/com/fr/design/mainframe/DesignerFrame.java @@ -918,7 +918,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta if (tplFile instanceof FileFILE) { fullName = tplFile.getPath(); } - fullName = fullName.replaceAll("/", "\\\\"); + fullName = OperatingSystem.isMacOS() ? fullName.replaceAll("\\\\", "/") : fullName.replaceAll("/", "\\\\"); int index = HistoryTemplateListPane.getInstance().contains(fullName); if (index != -1) { this.activateJTemplate(HistoryTemplateListPane.getInstance().getHistoryList().get(index)); From bee302560185dbef05914b0704506ef454ff3cc6 Mon Sep 17 00:00:00 2001 From: MoMeak Date: Wed, 22 Nov 2017 15:04:49 +0800 Subject: [PATCH 12/21] =?UTF-8?q?REPORT-5661=20mac=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E6=89=93=E5=BC=80=E6=9C=80=E8=BF=91=E7=9A=84=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=EF=BC=8C=E6=8F=90=E7=A4=BA=E6=A8=A1=E6=9D=BF=E4=B8=8D?= =?UTF-8?q?=E5=AD=98=E5=9C=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/mainframe/DesignerFrame.java | 2 +- designer_base/src/com/fr/design/mainframe/JTemplate.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/DesignerFrame.java b/designer_base/src/com/fr/design/mainframe/DesignerFrame.java index f6c2b2c404..b8dc09bab7 100644 --- a/designer_base/src/com/fr/design/mainframe/DesignerFrame.java +++ b/designer_base/src/com/fr/design/mainframe/DesignerFrame.java @@ -918,7 +918,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta if (tplFile instanceof FileFILE) { fullName = tplFile.getPath(); } - fullName = OperatingSystem.isMacOS() ? fullName.replaceAll("\\\\", "/") : fullName.replaceAll("/", "\\\\"); + fullName = OperatingSystem.isWindows() ? fullName.replaceAll("/", "\\\\") : fullName.replaceAll("\\\\", "/"); int index = HistoryTemplateListPane.getInstance().contains(fullName); if (index != -1) { this.activateJTemplate(HistoryTemplateListPane.getInstance().getHistoryList().get(index)); diff --git a/designer_base/src/com/fr/design/mainframe/JTemplate.java b/designer_base/src/com/fr/design/mainframe/JTemplate.java index 5705f784d5..e7be23efd3 100644 --- a/designer_base/src/com/fr/design/mainframe/JTemplate.java +++ b/designer_base/src/com/fr/design/mainframe/JTemplate.java @@ -197,7 +197,7 @@ public abstract class JTemplate> ex if (editingFileName.startsWith(ProjectConstants.REPORTLETS_NAME)) { editingFileName = ((FileNodeFILE) getEditingFILE()).getEnvPath() + File.separator + editingFileName; } - if (!OperatingSystem.isMacOS()) { + if (OperatingSystem.isWindows()) { return editingFileName.replaceAll("/", "\\\\"); } else { return editingFileName.replaceAll("\\\\", "/"); From c1523ffdbfee7ace739e9e3b350fd8c4ee75f0a2 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Wed, 22 Nov 2017 11:52:01 +0800 Subject: [PATCH 13/21] =?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 382656018e40c5c4c19742c25722a8f04305bb14 Mon Sep 17 00:00:00 2001 From: MoMeak Date: Thu, 23 Nov 2017 14:50:21 +0800 Subject: [PATCH 14/21] =?UTF-8?q?REPORT-5313=209.0[8.0]=E6=96=B0=E5=BB=BA?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=EF=BC=8C=E5=8D=95=E5=85=83=E6=A0=BC=E5=B1=9E?= =?UTF-8?q?=E6=80=A7=E8=AE=BE=E7=BD=AE=E6=A0=B7=E5=BC=8F=EF=BC=8C=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E5=88=B0=E9=A2=84=E5=AE=9A=E4=B9=89=E6=A0=B7=E5=BC=8F?= =?UTF-8?q?=E5=86=8D=E5=88=87=E6=8D=A2=E5=9B=9E=E6=9D=A5=EF=BC=8C=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E5=99=A8=E7=95=8C=E9=9D=A2=E9=94=99=E4=B9=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../style/background/gradient/GradientBar.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/designer_base/src/com/fr/design/style/background/gradient/GradientBar.java b/designer_base/src/com/fr/design/style/background/gradient/GradientBar.java index 36aab678b4..01894aa065 100644 --- a/designer_base/src/com/fr/design/style/background/gradient/GradientBar.java +++ b/designer_base/src/com/fr/design/style/background/gradient/GradientBar.java @@ -182,6 +182,7 @@ public class GradientBar extends JComponent implements UIObserver,ColorSelectabl for (int i = 0; i < list.size(); i++) { dist[i] = (float) ((list.get(i).getX() - 4) / (max - 4)); } + dist = correctDist(dist); LinearGradientPaint paint = new LinearGradientPaint(start, end, dist, c); g2.setPaint(paint); @@ -193,6 +194,17 @@ public class GradientBar extends JComponent implements UIObserver,ColorSelectabl } } + /** + * 确保dist在0-1之间 + */ + public float[] correctDist(float[] dist){ + if (dist.length == 2) { + dist[0] = dist[0] < 0 ? 0 : dist[0]; + dist[1] = dist[1] > 1 ? 1 : dist[1]; + } + return dist; + } + /** * 状态改变 */ From fbfd2dd25946c0a4023a68308f63bc3b2c0b3b4d Mon Sep 17 00:00:00 2001 From: MoMeak Date: Thu, 23 Nov 2017 15:47:47 +0800 Subject: [PATCH 15/21] =?UTF-8?q?REPORT-5313=209.0[8.0]=E6=96=B0=E5=BB=BA?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=EF=BC=8C=E5=8D=95=E5=85=83=E6=A0=BC=E5=B1=9E?= =?UTF-8?q?=E6=80=A7=E8=AE=BE=E7=BD=AE=E6=A0=B7=E5=BC=8F=EF=BC=8C=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E5=88=B0=E9=A2=84=E5=AE=9A=E4=B9=89=E6=A0=B7=E5=BC=8F?= =?UTF-8?q?=E5=86=8D=E5=88=87=E6=8D=A2=E5=9B=9E=E6=9D=A5=EF=BC=8C=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E5=99=A8=E7=95=8C=E9=9D=A2=E9=94=99=E4=B9=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../background/gradient/GradientBar.java | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/designer_base/src/com/fr/design/style/background/gradient/GradientBar.java b/designer_base/src/com/fr/design/style/background/gradient/GradientBar.java index 01894aa065..e9e6d092a9 100644 --- a/designer_base/src/com/fr/design/style/background/gradient/GradientBar.java +++ b/designer_base/src/com/fr/design/style/background/gradient/GradientBar.java @@ -180,9 +180,13 @@ public class GradientBar extends JComponent implements UIObserver,ColorSelectabl } float[] dist = new float[list.size()]; for (int i = 0; i < list.size(); i++) { - dist[i] = (float) ((list.get(i).getX() - 4) / (max - 4)); + float value = (float) ((list.get(i).getX() - 4) / (max - 4)); + if (0 <= value && value <= 1) { + dist[i] = value; + } else { + dist[i] = value < 0 ? 0 : 1; + } } - dist = correctDist(dist); LinearGradientPaint paint = new LinearGradientPaint(start, end, dist, c); g2.setPaint(paint); @@ -194,17 +198,6 @@ public class GradientBar extends JComponent implements UIObserver,ColorSelectabl } } - /** - * 确保dist在0-1之间 - */ - public float[] correctDist(float[] dist){ - if (dist.length == 2) { - dist[0] = dist[0] < 0 ? 0 : dist[0]; - dist[1] = dist[1] > 1 ? 1 : dist[1]; - } - return dist; - } - /** * 状态改变 */ From 3c7c15566f175bad330e56d11333c5fc8cf2cc22 Mon Sep 17 00:00:00 2001 From: MoMeak Date: Thu, 23 Nov 2017 16:14:59 +0800 Subject: [PATCH 16/21] =?UTF-8?q?PMD=E3=80=82=E3=80=82=E3=80=82=E3=80=82?= =?UTF-8?q?=E3=80=82=E3=80=82=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/style/background/gradient/GradientBar.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/designer_base/src/com/fr/design/style/background/gradient/GradientBar.java b/designer_base/src/com/fr/design/style/background/gradient/GradientBar.java index e9e6d092a9..cf27b6acd2 100644 --- a/designer_base/src/com/fr/design/style/background/gradient/GradientBar.java +++ b/designer_base/src/com/fr/design/style/background/gradient/GradientBar.java @@ -181,11 +181,7 @@ public class GradientBar extends JComponent implements UIObserver,ColorSelectabl float[] dist = new float[list.size()]; for (int i = 0; i < list.size(); i++) { float value = (float) ((list.get(i).getX() - 4) / (max - 4)); - if (0 <= value && value <= 1) { - dist[i] = value; - } else { - dist[i] = value < 0 ? 0 : 1; - } + dist[i] = Math.min(Math.max(0, value), 1); } LinearGradientPaint paint = new LinearGradientPaint(start, end, dist, c); From 81730387ce060f1c1864e2ff450e0ec807f4bc0f Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Fri, 24 Nov 2017 15:53:33 +0800 Subject: [PATCH 17/21] =?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; From 842ece0e82725ecbf2fc78041ee25d38302d3edc Mon Sep 17 00:00:00 2001 From: kerry Date: Tue, 28 Nov 2017 13:47:03 +0800 Subject: [PATCH 18/21] =?UTF-8?q?=E6=97=A0jira=E4=BB=BB=E5=8A=A1=EF=BC=8C?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=97=A0=E7=94=A8import?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/widget/component/BackgroundCompPane.java | 1 - .../widget/component/NumberEditorValidatePane.java | 9 +++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/designer_base/src/com/fr/design/widget/component/BackgroundCompPane.java b/designer_base/src/com/fr/design/widget/component/BackgroundCompPane.java index e534521706..fa0f4a6f9b 100644 --- a/designer_base/src/com/fr/design/widget/component/BackgroundCompPane.java +++ b/designer_base/src/com/fr/design/widget/component/BackgroundCompPane.java @@ -10,7 +10,6 @@ import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.widget.accessibles.AccessibleImgBackgroundEditor; import com.fr.form.ui.Widget; import com.fr.general.Inter; -import com.vividsolutions.jts.index.bintree.Interval; import javax.swing.*; import java.awt.*; diff --git a/designer_base/src/com/fr/design/widget/component/NumberEditorValidatePane.java b/designer_base/src/com/fr/design/widget/component/NumberEditorValidatePane.java index feaaf67dc1..4aedc2c57c 100644 --- a/designer_base/src/com/fr/design/widget/component/NumberEditorValidatePane.java +++ b/designer_base/src/com/fr/design/widget/component/NumberEditorValidatePane.java @@ -3,7 +3,6 @@ package com.fr.design.widget.component; import com.fr.design.designer.IntervalConstants; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.gui.ispinner.UIBasicSpinner; import com.fr.design.gui.ispinner.UISpinner; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.layout.FRGUIPaneFactory; @@ -13,11 +12,13 @@ import com.fr.form.ui.NumberEditor; import com.fr.general.Inter; import com.fr.stable.StringUtils; -import javax.swing.*; +import javax.swing.BorderFactory; +import javax.swing.JPanel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; -import javax.swing.text.DefaultFormatter; -import java.awt.*; +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; From 988689ad4e60a06feccbf26294a8084232549c2e Mon Sep 17 00:00:00 2001 From: MoMeak Date: Tue, 28 Nov 2017 13:57:13 +0800 Subject: [PATCH 19/21] =?UTF-8?q?REPORT-5840=20=E6=8E=A7=E4=BB=B6=E7=94=9F?= =?UTF-8?q?=E6=88=90=E5=92=8C=E4=BD=BF=E7=94=A8=E5=A1=AB=E6=8A=A5=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/present/ConditionAttributesGroupPane.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/designer/src/com/fr/design/present/ConditionAttributesGroupPane.java b/designer/src/com/fr/design/present/ConditionAttributesGroupPane.java index 6eac1c5710..5aafd01edb 100644 --- a/designer/src/com/fr/design/present/ConditionAttributesGroupPane.java +++ b/designer/src/com/fr/design/present/ConditionAttributesGroupPane.java @@ -16,6 +16,7 @@ import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.general.Inter; import com.fr.grid.selection.CellSelection; +import com.fr.grid.selection.Selection; import com.fr.report.cell.CellElement; import com.fr.report.cell.DefaultTemplateCellElement; import com.fr.report.cell.TemplateCellElement; @@ -29,6 +30,7 @@ import com.fr.stable.Nameable; public class ConditionAttributesGroupPane extends UIListControlPane { private static ConditionAttributesGroupPane singleton; private TemplateCellElement editCellElement; // 当前单元格对象 + private Selection editSelection; // 当前编辑对象 private ElementCasePane ePane; private ConditionAttributesGroupPane() { @@ -52,10 +54,8 @@ public class ConditionAttributesGroupPane extends UIListControlPane { if (isPopulating) { return; } - final CellSelection finalCS = (CellSelection) ePane.getSelection(); final TemplateElementCase tplEC = ePane.getEditingElementCase(); - - ReportActionUtils.actionIterateWithCellSelection(finalCS, tplEC, new ReportActionUtils.IterAction() { + ReportActionUtils.actionIterateWithCellSelection((CellSelection) editSelection, tplEC, new ReportActionUtils.IterAction() { public void dealWith(CellElement editCellElement) { ((TemplateCellElement)editCellElement).setHighlightGroup(updateHighlightGroup()); } @@ -75,6 +75,7 @@ public class ConditionAttributesGroupPane extends UIListControlPane { public void populate(ElementCasePane ePane) { this.ePane = ePane; + this.editSelection = ePane.getSelection(); CellSelection cs = (CellSelection) ePane.getSelection(); final TemplateElementCase tplEC = ePane.getEditingElementCase(); editCellElement = tplEC.getTemplateCellElement(cs.getColumn(), cs.getRow()); From 04e2b236c43a7a641e6b64a3f9a160776e37b17f Mon Sep 17 00:00:00 2001 From: ju Date: Wed, 29 Nov 2017 11:35:16 +0800 Subject: [PATCH 20/21] =?UTF-8?q?REPORT-5894=20=E8=AE=BE=E8=AE=A1=E5=99=A8?= =?UTF-8?q?=E6=89=93=E5=BC=80=E5=A4=A7=E9=87=8F=E5=B8=A6=E8=83=8C=E6=99=AF?= =?UTF-8?q?=E7=9A=84=E6=A8=A1=E6=9D=BF=E5=90=8E,=20=E5=85=B3=E9=97=AD,=20G?= =?UTF-8?q?C=E5=90=8E=E5=86=85=E5=AD=98=E6=B2=A1=E6=9C=89=E6=94=BE?= =?UTF-8?q?=E6=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/toolbar/ToolBarMenuDock.java | 52 ++++++++++++------- 1 file changed, 34 insertions(+), 18 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java index f43419d47f..fba7d9945e 100644 --- a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java +++ b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java @@ -58,7 +58,6 @@ import com.fr.plugin.observer.PluginEvent; import com.fr.plugin.observer.PluginEventListener; import com.fr.plugin.observer.PluginEventType; import com.fr.stable.ArrayUtils; -import com.fr.stable.ProductConstants; import com.fr.stable.StringUtils; import javax.swing.*; @@ -132,6 +131,9 @@ public abstract class ToolBarMenuDock { }; private static final String FINEREPORT = "FineReport"; private static final int MENUBAR_HEIGHT = 22; + + private static final List PLUGIN_LISTENERS = new ArrayList<>(); + private MenuDef[] menus; private ToolBarDef toolBarDef; private List shortCutsList; @@ -177,7 +179,6 @@ public abstract class ToolBarMenuDock { return dim; } }; - this.menus = menus(plus); for (int i = 0; i < menus.length; i++) { UIMenu subMenu = menus[i].createJMenu(); @@ -201,6 +202,8 @@ public abstract class ToolBarMenuDock { } public MenuDef[] menus(final ToolBarMenuDockPlus plus) { + //删除之前创建的插件菜单监听 + clearPluginListeners(); java.util.List menuList = new java.util.ArrayList(); // 添加文件菜单 menuList.add(createFileMenuDef(plus)); @@ -230,7 +233,14 @@ public abstract class ToolBarMenuDock { return menuList.toArray(new MenuDef[menuList.size()]); } - + + private static synchronized void clearPluginListeners() { + + for (PluginEventListener listener : PLUGIN_LISTENERS) { + GeneralContext.stopListenPlugin(listener); + } + } + /** * 获取所有actionmodel * @@ -602,9 +612,9 @@ public abstract class ToolBarMenuDock { addExtraMenus(menuDef, anchor, action, set); } - - private void listenPluginMenuChange(final MenuDef menuDef, final String anchor, final ShortCutMethodAction action) { - + + private static synchronized void listenPluginMenuChange(final MenuDef menuDef, final String anchor, final ShortCutMethodAction action) { + PluginFilter filter = new PluginFilter() { @Override @@ -613,29 +623,35 @@ public abstract class ToolBarMenuDock { return context.contain(MenuHandler.MARK_STRING); } }; - - GeneralContext.listenPlugin(PluginEventType.BeforeStop, new PluginEventListener() { - + + PluginEventListener beforeStop = new PluginEventListener() { + @Override public void on(PluginEvent event) { PluginRuntime runtime = event.getContext().getRuntime(); Set menuHandlers = runtime.get(MenuHandler.MARK_STRING); removeExtraMenus(menuDef, anchor, action, menuHandlers); } - }, filter); - GeneralContext.listenPlugin(PluginEventType.AfterRun, new PluginEventListener() { - + }; + + PluginEventListener afterRun = new PluginEventListener() { + @Override public void on(PluginEvent event) { - + PluginRuntime runtime = event.getContext().getRuntime(); Set menuHandlers = runtime.get(MenuHandler.MARK_STRING); addExtraMenus(menuDef, anchor, action, menuHandlers); } - }, filter); + }; + + GeneralContext.listenPlugin(PluginEventType.BeforeStop, beforeStop, filter); + GeneralContext.listenPlugin(PluginEventType.AfterRun, afterRun, filter); + PLUGIN_LISTENERS.add(afterRun); + PLUGIN_LISTENERS.add(beforeStop); } - - private void removeExtraMenus(MenuDef menuDef, String anchor, ShortCutMethodAction action, Set set) { + + private static void removeExtraMenus(MenuDef menuDef, String anchor, ShortCutMethodAction action, Set set) { List target = new ArrayList<>(); @@ -657,8 +673,8 @@ public abstract class ToolBarMenuDock { menuDef.removeShortCut(shortCut); } } - - private void addExtraMenus(MenuDef menuDef, String anchor, ShortCutMethodAction action, Set set) { + + private static void addExtraMenus(MenuDef menuDef, String anchor, ShortCutMethodAction action, Set set) { List target = new ArrayList<>(); for (MenuHandler handler : set) { From f26cf271f0428d39270949866290e4a5bfcec7a2 Mon Sep 17 00:00:00 2001 From: ju Date: Wed, 29 Nov 2017 11:41:45 +0800 Subject: [PATCH 21/21] =?UTF-8?q?REPORT-5894=20=E8=AE=BE=E8=AE=A1=E5=99=A8?= =?UTF-8?q?=E6=89=93=E5=BC=80=E5=A4=A7=E9=87=8F=E5=B8=A6=E8=83=8C=E6=99=AF?= =?UTF-8?q?=E7=9A=84=E6=A8=A1=E6=9D=BF=E5=90=8E,=20=E5=85=B3=E9=97=AD,=20G?= =?UTF-8?q?C=E5=90=8E=E5=86=85=E5=AD=98=E6=B2=A1=E6=9C=89=E6=94=BE?= =?UTF-8?q?=E6=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java | 1 + 1 file changed, 1 insertion(+) diff --git a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java index fba7d9945e..c8a4d25766 100644 --- a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java +++ b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java @@ -239,6 +239,7 @@ public abstract class ToolBarMenuDock { for (PluginEventListener listener : PLUGIN_LISTENERS) { GeneralContext.stopListenPlugin(listener); } + PLUGIN_LISTENERS.clear(); } /**