From 41fccc31be988e59650dff5cc7a2e45741ad71fd Mon Sep 17 00:00:00 2001 From: "Leo.Qin" Date: Fri, 17 Jan 2025 16:46:07 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-144629=20=E6=A8=A1=E6=9D=BF=E5=8A=A9?= =?UTF-8?q?=E6=89=8B=E6=8F=92=E4=BB=B6=E9=80=82=E9=85=8D=20=E6=94=B9?= =?UTF-8?q?=E4=B8=80=E6=B3=A2=E4=BB=A3=E7=A0=81=E8=B4=A8=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shadow/agent/SCAgentBridge4Designer.java | 55 ++++++++-------- .../handler/impl/SCCellSCJumpHandler.java | 4 ++ .../impl/SCDataSourceRecordHandler.java | 64 +++++++++++-------- .../impl/SCGlobalParameterJumpHandler.java | 15 +++-- .../shadow/ui/component/LinePane.java | 31 --------- .../ui/component/cell/AbstractCellPane.java | 33 ---------- .../ui/component/cell/JumpCellPane.java | 38 ----------- .../impl/SCDefaultSCDetectAdapter.java | 2 +- 8 files changed, 81 insertions(+), 161 deletions(-) delete mode 100644 designer-realize/src/main/java/com/fr/design/mainframe/shadow/ui/component/LinePane.java delete mode 100644 designer-realize/src/main/java/com/fr/design/mainframe/shadow/ui/component/cell/AbstractCellPane.java delete mode 100644 designer-realize/src/main/java/com/fr/design/mainframe/shadow/ui/component/cell/JumpCellPane.java diff --git a/designer-base/src/main/java/com/fr/design/mainframe/shadow/agent/SCAgentBridge4Designer.java b/designer-base/src/main/java/com/fr/design/mainframe/shadow/agent/SCAgentBridge4Designer.java index 40daf590a4..b9f3e07775 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/shadow/agent/SCAgentBridge4Designer.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/shadow/agent/SCAgentBridge4Designer.java @@ -9,6 +9,7 @@ import com.fr.nx.analyze.shadow.manager.SCManagerFactory; import com.fr.nx.analyze.shadow.metric.recorder.impl.SCDesignerMetricRecorder; import com.fr.nx.analyze.shadow.template.SCTemplateHolder; import com.fr.stable.project.ProjectConstants; +import org.jetbrains.annotations.NotNull; import javax.swing.SwingWorker; @@ -44,32 +45,36 @@ public class SCAgentBridge4Designer { return; } // 另开线程执行编译优化(这是一个一次性线程,只会存在很短时间,是为了不阻塞设计器 UI) - SwingWorker swingWorker = new SwingWorker() { - @Override - protected Boolean doInBackground() throws Exception { - SCManager scManager = SCManagerFactory.sharedManager(); - boolean existHistory = !scManager.hasHistoryShadowTemplate(workbookPath); - scManager.acquireShadowTemplate( - workbookPath, - tplHolder, - SCDesignerMetricRecorder.createOnSaveRecorder() - ).get(); - return existHistory; - } - - @Override - protected void done() { - try { - //返回值代表是否是首次保存,目前没有用到,先记录一下,以免误解 - get(); - } catch (Exception e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); - } - //在新的Thread线程中,refreshToolArea操作不能在edt线程中执行,会出现未知的错误。 - DesignerContext.getDesignerFrame().resetToolkitByPlus(jTemplate); - } - }; + SwingWorker swingWorker = createSwingWorker(jTemplate, workbookPath, tplHolder); swingWorker.execute(); } } + + private static @NotNull SwingWorker createSwingWorker(JTemplate jTemplate, String workbookPath, SCTemplateHolder tplHolder) { + return new SwingWorker() { + @Override + protected Boolean doInBackground() throws Exception { + SCManager scManager = SCManagerFactory.sharedManager(); + boolean existHistory = !scManager.hasHistoryShadowTemplate(workbookPath); + scManager.acquireShadowTemplate( + workbookPath, + tplHolder, + SCDesignerMetricRecorder.createOnSaveRecorder() + ).get(); + return existHistory; + } + + @Override + protected void done() { + try { + //返回值代表是否是首次保存,目前没有用到,先记录一下,以免误解 + get(); + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + //在新的Thread线程中,refreshToolArea操作不能在edt线程中执行,会出现未知的错误。 + DesignerContext.getDesignerFrame().resetToolkitByPlus(jTemplate); + } + }; + } } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/shadow/handler/impl/SCCellSCJumpHandler.java b/designer-realize/src/main/java/com/fr/design/mainframe/shadow/handler/impl/SCCellSCJumpHandler.java index e8228f4126..00f513b5f5 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/shadow/handler/impl/SCCellSCJumpHandler.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/shadow/handler/impl/SCCellSCJumpHandler.java @@ -128,6 +128,10 @@ public class SCCellSCJumpHandler implements SCJumpHandler { } grid.setEditingColumn(column); grid.setEditingRow(row); + modifyGridAttr(grid, type, report, column, row); + } + + private static void modifyGridAttr(Grid grid, Class type, TemplateElementCase report, int column, int row) { TemplateCellElement editingCellElement = report.getTemplateCellElement(column, row); if (editingCellElement == null) { //为null返回,在fr11中有另外的处理,需要注意 diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/shadow/handler/impl/SCDataSourceRecordHandler.java b/designer-realize/src/main/java/com/fr/design/mainframe/shadow/handler/impl/SCDataSourceRecordHandler.java index 1e148b16a7..e4c63dcd19 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/shadow/handler/impl/SCDataSourceRecordHandler.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/shadow/handler/impl/SCDataSourceRecordHandler.java @@ -21,6 +21,7 @@ import com.fr.general.NameObject; import com.fr.nx.analyze.shadow.record.jumper.SCRecordJumper; import com.fr.nx.analyze.shadow.record.jumper.impl.SCTableDataJumper; import com.fr.stable.core.PropertyChangeAdapter; +import org.jetbrains.annotations.NotNull; import org.jooq.tools.reflect.Reflect; import javax.swing.SwingUtilities; @@ -67,38 +68,37 @@ public class SCDataSourceRecordHandler implements SCJumpHandler { * 标识一下复用了TableDataTreePane#dgEdit方法(目的是为了mac中数据集设置面板弹窗默认在最顶层) * 改行为新添加非复用代码:dg.setAlwaysOnTop(true) */ - private void showTableDataPane(final AbstractTableDataPane uPanel, String originalName, TableDataTreePane tableDataTreePane) { - uPanel.addStoreProcedureWorkerListener(new StoreProcedureWorkerListener() { - @Override - public void fireDoneAction() { - TableDataTree dataTree = tableDataTreePane.getDataTree(); - if (dataTree.getSelectionPath() == null) { - dataTree.refresh(); - } else { - Object object = dataTree.getSelectionPath().getLastPathComponent(); - int[] rows = dataTree.getSelectionRows(); - dataTree.refreshChildByName(object.toString()); - dataTree.setSelectionRows(rows); - } + private void showTableDataPane(final AbstractTableDataPane tableDataPane, String originalName, TableDataTreePane tableDataTreePane) { + tableDataPane.addStoreProcedureWorkerListener(createStoreProcedureWorkerListener(tableDataTreePane)); - } - }); - final BasicPane.NamePane nPanel = uPanel.asNamePane(); - nPanel.setObjectName(originalName); + final BasicPane.NamePane namePane = tableDataPane.asNamePane(); + namePane.setObjectName(originalName); DesignModelAdapter tc = Reflect.on(tableDataTreePane).get("tc"); Reflect.on(tableDataTreePane).set("allDSNames", DesignTableDataManager.getAllDSNames(tc.getBook())); - final BasicDialog dg = nPanel.showLargeWindow(SwingUtilities.getWindowAncestor(tableDataTreePane), new DialogActionAdapter() { + + final BasicDialog dg = namePane.showLargeWindow(SwingUtilities.getWindowAncestor(tableDataTreePane), createActionAdapter(tableDataPane, originalName, tableDataTreePane, tc, namePane)); + namePane.addPropertyChangeListener(new PropertyChangeAdapter() { + public void propertyChange() { + Reflect.on(tableDataTreePane).call("doPropertyChange", dg, namePane, originalName); + } + }); + dg.setAlwaysOnTop(true); + dg.setVisible(true); + } + + private static @NotNull DialogActionAdapter createActionAdapter(AbstractTableDataPane tableDataPane, String originalName, TableDataTreePane tableDataTreePane, DesignModelAdapter tc, BasicPane.NamePane namePane) { + return new DialogActionAdapter() { @Override public void doOk() { DesignTableDataManager.setThreadLocal(DesignTableDataManager.NO_PARAMETER); - tc.renameTableData(originalName, nPanel.getObjectName(), false); + tc.renameTableData(originalName, namePane.getObjectName(), false); TableDataSource tds = tc.getBook(); - TableData td = (TableData) uPanel.updateBean(); + TableData td = tableDataPane.updateBean(); if (td instanceof TableDataSourceDependent) { ((TableDataSourceDependent) td).setTableDataSource(tds); } - String tdName = nPanel.getObjectName(); + String tdName = namePane.getObjectName(); tds.putTableData(tdName, td); Map map = new HashMap(); if (!ComparatorUtils.equals(originalName, tdName)) { @@ -113,13 +113,21 @@ public class SCDataSourceRecordHandler implements SCJumpHandler { dataTree.refreshChildByName(tdName); dataTree.setSelectionRows(rows); } - }); - nPanel.addPropertyChangeListener(new PropertyChangeAdapter() { - public void propertyChange() { - Reflect.on(tableDataTreePane).call("doPropertyChange", dg, nPanel, originalName); + }; + } + + private static @NotNull StoreProcedureWorkerListener createStoreProcedureWorkerListener(TableDataTreePane tableDataTreePane) { + return () -> { + TableDataTree dataTree = tableDataTreePane.getDataTree(); + if (dataTree.getSelectionPath() == null) { + dataTree.refresh(); + } else { + Object object = dataTree.getSelectionPath().getLastPathComponent(); + int[] rows = dataTree.getSelectionRows(); + dataTree.refreshChildByName(object.toString()); + dataTree.setSelectionRows(rows); } - }); - dg.setAlwaysOnTop(true); - dg.setVisible(true); + + }; } } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/shadow/handler/impl/SCGlobalParameterJumpHandler.java b/designer-realize/src/main/java/com/fr/design/mainframe/shadow/handler/impl/SCGlobalParameterJumpHandler.java index 9eba73b767..8550c165fa 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/shadow/handler/impl/SCGlobalParameterJumpHandler.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/shadow/handler/impl/SCGlobalParameterJumpHandler.java @@ -16,6 +16,7 @@ import com.fr.transaction.CallBackAdaptor; import com.fr.transaction.Configurations; import com.fr.transaction.WorkerFacade; import com.fr.workspace.WorkContext; +import org.jetbrains.annotations.NotNull; import javax.swing.JOptionPane; import javax.swing.UIManager; @@ -44,7 +45,14 @@ public class SCGlobalParameterJumpHandler implements SCJumpHandler { BasicDialog parameterManagerDialog = parameterManagerPane.showWindow(designerFrame); //marks:读取服务器配置信息 parameterManagerPane.populate(ParameterConfig.getInstance().getGlobalParameters()); - parameterManagerDialog.addDialogActionListener(new DialogActionAdapter() { + parameterManagerDialog.addDialogActionListener(createActionListener(parameterManagerPane, parameterManagerDialog)); + parameterManagerDialog.setModal(true); + parameterManagerDialog.setAlwaysOnTop(true); + parameterManagerDialog.setVisible(true); + } + + private static @NotNull DialogActionAdapter createActionListener(ParameterManagerPane parameterManagerPane, BasicDialog parameterManagerDialog) { + return new DialogActionAdapter() { public void doOk() { Configurations.modify(new WorkerFacade(ServerPreferenceConfig.class) { @Override @@ -63,10 +71,7 @@ public class SCGlobalParameterJumpHandler implements SCJumpHandler { })); } - }); - parameterManagerDialog.setModal(true); - parameterManagerDialog.setAlwaysOnTop(true); - parameterManagerDialog.setVisible(true); + }; } /** diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/shadow/ui/component/LinePane.java b/designer-realize/src/main/java/com/fr/design/mainframe/shadow/ui/component/LinePane.java deleted file mode 100644 index 83beb7b252..0000000000 --- a/designer-realize/src/main/java/com/fr/design/mainframe/shadow/ui/component/LinePane.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.fr.design.mainframe.shadow.ui.component; - -import javax.swing.JPanel; -import java.awt.Color; -import java.awt.Dimension; -import java.awt.Graphics; -import java.awt.Graphics2D; - -/** - * @author fly.li - * @since 10.0 - * Created on 2021/11/11 - * 线条相关的面板 - */ -public class LinePane extends JPanel { - - private final int WIDTH = 615; - - public LinePane() { - this.setPreferredSize(new Dimension(WIDTH, 2)); - } - - @Override - protected void paintComponent(Graphics g) { - super.paintComponent(g); - Graphics2D graphics2D = (Graphics2D) g.create(); - graphics2D.setColor(new Color(220, 220, 220)); - graphics2D.drawLine(0, 0, WIDTH, 0); - this.repaint(); - } -} diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/shadow/ui/component/cell/AbstractCellPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/shadow/ui/component/cell/AbstractCellPane.java deleted file mode 100644 index 51c60277ed..0000000000 --- a/designer-realize/src/main/java/com/fr/design/mainframe/shadow/ui/component/cell/AbstractCellPane.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.fr.design.mainframe.shadow.ui.component.cell; - -import javax.swing.BorderFactory; -import javax.swing.JPanel; -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Dimension; - -/** - * 单元格面板 - * - * @author fly.li - * @since 10.0 - * Created on 2021/09/16 - */ -public abstract class AbstractCellPane extends JPanel { - private final int HEIGHT = 20; - - public AbstractCellPane() { - - } - - public AbstractCellPane(int columnWidth) { - defaultInit(columnWidth); - } - - private void defaultInit(int columnWidth) { - this.setLayout(new BorderLayout()); - this.setPreferredSize(new Dimension(columnWidth, HEIGHT)); - this.setBackground(Color.WHITE); - this.setBorder(BorderFactory.createLineBorder(new Color(245, 245, 245))); - } -} diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/shadow/ui/component/cell/JumpCellPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/shadow/ui/component/cell/JumpCellPane.java deleted file mode 100644 index bed255f20b..0000000000 --- a/designer-realize/src/main/java/com/fr/design/mainframe/shadow/ui/component/cell/JumpCellPane.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.fr.design.mainframe.shadow.ui.component.cell; - -import com.fr.design.i18n.Toolkit; -import com.fr.general.IOUtils; - -import javax.swing.Icon; -import javax.swing.JLabel; -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.event.MouseAdapter; - -/** - * @author fly.li - * @since 10.0 - * Created on 2021/09/16 - * <>相比普通单元格面板多了跳转标记 - */ -public class JumpCellPane extends AbstractCellPane { - - private static Icon icon = IOUtils.readIcon("com/fr/nx/analyze/shadow/jump.png"); - - public JumpCellPane() { - - } - - public JumpCellPane(int width, String value, MouseAdapter mouseAdapter) { - super(width); - JLabel showResultLabel = new JLabel(value); - this.add(showResultLabel, BorderLayout.WEST); - showResultLabel.setToolTipText(value); - JLabel jumpIconLabel = new JLabel(); - jumpIconLabel.setPreferredSize(new Dimension(15, 20)); - jumpIconLabel.setToolTipText(Toolkit.i18nText("Fine-Design_Template_Assistant_Jump_Information")); - jumpIconLabel.setIcon(icon); - this.add(jumpIconLabel, BorderLayout.EAST); - jumpIconLabel.addMouseListener(mouseAdapter); - } -} diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/shadow/ui/detect/adapter/impl/SCDefaultSCDetectAdapter.java b/designer-realize/src/main/java/com/fr/design/mainframe/shadow/ui/detect/adapter/impl/SCDefaultSCDetectAdapter.java index 4dc954d3c8..b010bba9cb 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/shadow/ui/detect/adapter/impl/SCDefaultSCDetectAdapter.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/shadow/ui/detect/adapter/impl/SCDefaultSCDetectAdapter.java @@ -56,7 +56,7 @@ public class SCDefaultSCDetectAdapter implements SCDetectAdapter { public int detectAndAddResult2Data(TemplateDetectResultData templateDetectResultData, JTemplate jTemplate) { //动态检测没有检测信息(失败还是成功),以静态检测为准 List optimizeRecords = detectAndFilter0(jTemplate); - if (optimizeRecords != null && optimizeRecords.size() > 0) { + if (!optimizeRecords.isEmpty()) { for (SCRecord scRecord : optimizeRecords) { SCRecordType type = scRecord.getType();