Browse Source

REPORT-144629 模板助手插件适配 改一波代码质量

fbp/feature
Leo.Qin 4 months ago
parent
commit
41fccc31be
  1. 55
      designer-base/src/main/java/com/fr/design/mainframe/shadow/agent/SCAgentBridge4Designer.java
  2. 4
      designer-realize/src/main/java/com/fr/design/mainframe/shadow/handler/impl/SCCellSCJumpHandler.java
  3. 64
      designer-realize/src/main/java/com/fr/design/mainframe/shadow/handler/impl/SCDataSourceRecordHandler.java
  4. 15
      designer-realize/src/main/java/com/fr/design/mainframe/shadow/handler/impl/SCGlobalParameterJumpHandler.java
  5. 31
      designer-realize/src/main/java/com/fr/design/mainframe/shadow/ui/component/LinePane.java
  6. 33
      designer-realize/src/main/java/com/fr/design/mainframe/shadow/ui/component/cell/AbstractCellPane.java
  7. 38
      designer-realize/src/main/java/com/fr/design/mainframe/shadow/ui/component/cell/JumpCellPane.java
  8. 2
      designer-realize/src/main/java/com/fr/design/mainframe/shadow/ui/detect/adapter/impl/SCDefaultSCDetectAdapter.java

55
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<Boolean, Void> swingWorker = new SwingWorker<Boolean, Void>() {
@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<Boolean, Void> swingWorker = createSwingWorker(jTemplate, workbookPath, tplHolder);
swingWorker.execute();
}
}
private static @NotNull SwingWorker<Boolean, Void> createSwingWorker(JTemplate<?, ?> jTemplate, String workbookPath, SCTemplateHolder tplHolder) {
return new SwingWorker<Boolean, Void>() {
@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);
}
};
}
}

4
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中有另外的处理,需要注意

64
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);
};
}
}

15
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);
};
}
/**

31
designer-realize/src/main/java/com/fr/design/mainframe/shadow/ui/component/LinePane.java

@ -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();
}
}

33
designer-realize/src/main/java/com/fr/design/mainframe/shadow/ui/component/cell/AbstractCellPane.java

@ -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)));
}
}

38
designer-realize/src/main/java/com/fr/design/mainframe/shadow/ui/component/cell/JumpCellPane.java

@ -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);
}
}

2
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<SCRecord> optimizeRecords = detectAndFilter0(jTemplate);
if (optimizeRecords != null && optimizeRecords.size() > 0) {
if (!optimizeRecords.isEmpty()) {
for (SCRecord scRecord :
optimizeRecords) {
SCRecordType type = scRecord.getType();

Loading…
Cancel
Save