From 03b3a474a1557ef5cfd99c15e8ae91ad11d323bf Mon Sep 17 00:00:00 2001 From: Yvan Date: Wed, 14 Oct 2020 10:01:15 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-41135=20=E3=80=90=E5=86=92=E7=83=9F?= =?UTF-8?q?=E3=80=91=E7=AC=AC=E4=B8=80=E6=AC=A1=E9=A2=84=E8=A7=88=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=A8=A1=E6=9D=BF=E6=95=B0=E6=8D=AE=E9=9B=86=EF=BC=8C?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E5=BC=B9=E7=AA=97=E4=B8=8D=E6=B6=88=E5=A4=B1?= =?UTF-8?q?=20=E3=80=90=E9=97=AE=E9=A2=98=E5=8E=9F=E5=9B=A0=E3=80=91?= =?UTF-8?q?=E8=BF=99=E4=B8=AA=E5=8A=A0=E8=BD=BD=E5=BC=B9=E7=AA=97=E6=98=AF?= =?UTF-8?q?=E4=B8=AAAutoProgressBar=E8=BF=9B=E5=BA=A6=E6=9D=A1=EF=BC=8C?= =?UTF-8?q?=E4=B9=8B=E5=89=8D=E7=9A=84=E9=80=BB=E8=BE=91=E4=B8=AD=EF=BC=8C?= =?UTF-8?q?=E8=BF=9B=E5=BA=A6=E6=9D=A1=E5=9C=A8SwingWorker=E7=BA=BF?= =?UTF-8?q?=E7=A8=8B=E4=B8=ADstart=E5=B9=B6=E4=B8=94close=EF=BC=8C?= =?UTF-8?q?=E8=80=8C=E4=B8=8E=E8=BF=9B=E5=BA=A6=E6=9D=A1=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=9B=B8=E5=85=B3=E7=9A=84=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E5=9C=A8EDT=E4=B8=AD=EF=BC=8C=E6=89=80=E4=BB=A5=E6=9C=89?= =?UTF-8?q?=E6=97=B6=E5=80=99=E4=BC=9A=E5=87=BA=E7=8E=B0SwingWorker?= =?UTF-8?q?=E4=B8=ADAutoProgressBar=E5=85=88close=E6=8E=89=E4=BA=86?= =?UTF-8?q?=EF=BC=8C=E4=BD=86=E6=98=AFAutoProgressBar=E4=B8=AD=E8=BF=98?= =?UTF-8?q?=E5=9C=A8=E7=BB=A7=E7=BB=AD=E5=AF=B9=E8=BF=9B=E5=BA=A6=E6=9D=A1?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E8=B5=8B=E5=80=BC=E6=93=8D=E4=BD=9C=EF=BC=8C?= =?UTF-8?q?=E5=8F=88=E5=9B=A0=E4=B8=BA=E6=B2=A1=E6=9C=89=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?ProgressMonitor=E7=9A=84millsToDecideToPopup=EF=BC=8C=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E8=B5=8B=E5=80=BC=E6=93=8D=E4=BD=9C=E4=BC=9A=E8=BF=9B?= =?UTF-8?q?=E5=85=A5=E6=9F=90=E4=B8=AA=E5=88=A4=E6=96=AD=E5=88=86=E6=94=AF?= =?UTF-8?q?=E5=B9=B6=E4=BD=BF=E5=BC=B9=E7=AA=97=E5=86=8D=E5=BA=A6=E5=BC=B9?= =?UTF-8?q?=E5=87=BA=EF=BC=8C=E5=BC=B9=E5=87=BA=E5=90=8E=E5=B0=B1=E4=B8=8D?= =?UTF-8?q?=E4=BC=9A=E8=87=AA=E5=8A=A8=E5=85=B3=E9=97=AD=E4=BA=86=20?= =?UTF-8?q?=E3=80=90=E6=94=B9=E5=8A=A8=E6=96=B9=E6=A1=88=E3=80=91=E5=B0=86?= =?UTF-8?q?close=E6=93=8D=E4=BD=9C=E6=94=BE=E5=85=A5EDT=E7=BA=BF=E7=A8=8B?= =?UTF-8?q?=E4=B8=AD=E6=89=A7=E8=A1=8C(=E9=A1=BA=E4=BE=BF=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E4=B8=80=E4=BA=9B=E5=AF=BC=E5=8C=85=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=B8=8E=E8=BF=87=E6=97=B6=E6=96=B9=E6=B3=95)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datapane/preview/PreviewTablePane.java | 46 ++++++++++++------- 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/preview/PreviewTablePane.java b/designer-base/src/main/java/com/fr/design/data/datapane/preview/PreviewTablePane.java index 8749153fdf..d3881bcd12 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/preview/PreviewTablePane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/preview/PreviewTablePane.java @@ -15,20 +15,31 @@ import com.fr.design.data.DesignTableDataManager; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.FineJOptionPane; -import com.fr.design.file.HistoryTemplateListPane; +import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.gui.frpane.UITabbedPane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.iprogressbar.AutoProgressBar; import com.fr.design.gui.itable.SortableJTable; import com.fr.design.gui.itable.TableSorter; import com.fr.design.gui.itextfield.UINumberField; +import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; +import com.fr.design.ui.util.UIUtil; import com.fr.function.TIME; import com.fr.general.FRFont; import com.fr.log.FineLoggerFactory; -import javax.swing.*; +import javax.swing.BorderFactory; +import javax.swing.Icon; +import javax.swing.JComponent; +import javax.swing.JFrame; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.SwingWorker; +import javax.swing.UIManager; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableColumn; import javax.swing.table.TableModel; @@ -81,7 +92,7 @@ public class PreviewTablePane extends BasicPane { JPanel currentPreviewPanel = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); previewNumberPanel.add(currentPreviewPanel); - currentPreviewPanel.add(new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Current_Preview_Rows") + ":")); + currentPreviewPanel.add(new UILabel(Toolkit.i18nText("Fine-Design_Basic_Current_Preview_Rows") + ":")); currentRowsField = new UINumberField(); currentPreviewPanel.add(currentRowsField); @@ -91,7 +102,7 @@ public class PreviewTablePane extends BasicPane { JPanel maxPanel = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); previewNumberPanel.add(maxPanel); - maxPanel.add(new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Datasource_Maximum_Number_of_Preview_Rows") + ":")); + maxPanel.add(new UILabel(Toolkit.i18nText("Fine-Design_Basic_Datasource_Maximum_Number_of_Preview_Rows") + ":")); maxPreviewNumberField = new UINumberField(); maxPanel.add(maxPreviewNumberField); @@ -158,7 +169,7 @@ public class PreviewTablePane extends BasicPane { if (this.dialog == null) { this.dialog = this.showWindow(new JFrame()); } - progressBar = new AutoProgressBar(this, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Loading_Data"), "", 0, 100) { + progressBar = new AutoProgressBar(this, Toolkit.i18nText("Fine-Design_Basic_Loading_Data"), "", 0, 100) { public void doMonitorCanceled() { if (getWorker() != null) { getWorker().cancel(true); @@ -174,7 +185,7 @@ public class PreviewTablePane extends BasicPane { @Override protected String title4PopupWindow() { - return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Preview"); + return Toolkit.i18nText("Fine-Design_Basic_Preview"); } private void addLoadedListener(LoadedEventListener l) { @@ -268,7 +279,7 @@ public class PreviewTablePane extends BasicPane { */ public static EmbeddedTableData previewTableData(TableData tableData, final int keyIndex, final int valueIndex) { PreviewTablePane previewTablePane = new PreviewTablePane(); - previewTablePane.setBorder(BorderFactory.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Data"))); + previewTablePane.setBorder(BorderFactory.createTitledBorder(Toolkit.i18nText("Fine-Design_Basic_Data"))); try { previewTablePane.populate(tableData); previewTablePane.resetPreviewTableColumnColor(); @@ -298,13 +309,13 @@ public class PreviewTablePane extends BasicPane { try { int choiceColumn = Integer.parseInt(columnErrMessage.trim()); int tatalColumn = Integer.parseInt(tatolColumnErrMessage.trim()); - columnErrMessage = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Preview_Warn_Text", choiceColumn + 1, tatalColumn); + columnErrMessage = Toolkit.i18nText("Fine-Design_Basic_Tabledata_Preview_Warn_Text", choiceColumn + 1, tatalColumn); } catch (Exception e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); return; } FineLoggerFactory.getLogger().error(exp.getMessage(), exp); - FineJOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), columnErrMessage, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Error"), JOptionPane.ERROR_MESSAGE); + FineJOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), columnErrMessage, Toolkit.i18nText("Fine-Design_Basic_Error"), JOptionPane.ERROR_MESSAGE); } private void populate(TableData tableData) throws Exception { @@ -317,7 +328,7 @@ public class PreviewTablePane extends BasicPane { } private void previewTableDataSQL() throws Exception { - connectionBar = new AutoProgressBar(this, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Utils_Now_Create_Connection"), "", 0, 100) { + connectionBar = new AutoProgressBar(this, Toolkit.i18nText("Fine-Design_Basic_Utils_Now_Create_Connection"), "", 0, 100) { public void doMonitorCanceled() { getWorker().cancel(true); getDialog().setVisible(false); @@ -365,13 +376,14 @@ public class PreviewTablePane extends BasicPane { if (tableData instanceof DBTableData) { boolean status = DataOperator.getInstance().testConnection(((DBTableData) tableData).getDatabase()); if (!status) { - throw new Exception(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Database_Connection_Failed")); + throw new Exception(Toolkit.i18nText("Fine-Design_Basic_Database_Connection_Failed")); } } } finally { - connectionBar.close(); + // 将close操作放到EDT线程中 + UIUtil.invokeLaterIfNeeded(() -> connectionBar.close()); } - TableDataSource dataSource = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getTarget(); + TableDataSource dataSource = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getTarget(); previewTableData = DesignTableDataManager.previewTableDataNeedInputParameters(dataSource, tableData, (int) maxPreviewNumberField.getValue(), true, progressBar); // parameterInputDialog // update之后的parameters,转成一个parameterMap,用于预览TableData @@ -396,7 +408,7 @@ public class PreviewTablePane extends BasicPane { if (!(e instanceof CancellationException)) { FineLoggerFactory.getLogger().error(e.getMessage(), e); FineJOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), e.getMessage(), - com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Error"), JOptionPane.ERROR_MESSAGE, UIManager.getIcon("OptionPane.errorIcon")); + Toolkit.i18nText("Fine-Design_Basic_Error"), JOptionPane.ERROR_MESSAGE, UIManager.getIcon("OptionPane.errorIcon")); } dialog.setVisible(false); } finally { @@ -425,7 +437,7 @@ public class PreviewTablePane extends BasicPane { public static void previewStoreData(final ProcedureDataModel storeProcedureDataModel, final int keyIndex, final int valueIndex) { final PreviewTablePane previewTablePane = new PreviewTablePane(); previewTablePane.storeProcedureDataModel = storeProcedureDataModel; - previewTablePane.setBorder(BorderFactory.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Data"))); + previewTablePane.setBorder(BorderFactory.createTitledBorder(Toolkit.i18nText("Fine-Design_Basic_Data"))); try { previewTablePane.populateStoreDataSQL(); @@ -456,7 +468,7 @@ public class PreviewTablePane extends BasicPane { for (int i = 0; i < tableSize; i++) { PreviewTablePane previewTablePane = new PreviewTablePane(); previewTablePane.storeProcedureDataModel = storeProcedureDataModels[i]; - previewTablePane.setBorder(BorderFactory.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Data"))); + previewTablePane.setBorder(BorderFactory.createTitledBorder(Toolkit.i18nText("Fine-Design_Basic_Data"))); try { previewTablePane.populateStoreDataSQL(); } catch (Exception e) { @@ -469,7 +481,7 @@ public class PreviewTablePane extends BasicPane { @Override protected String title4PopupWindow() { - return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Preview"); + return Toolkit.i18nText("Fine-Design_Basic_Preview"); } };