From 49cbdffd4356fc62cbc273a24d7fd72695ee5da9 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 18 Jul 2023 14:26:50 +0800 Subject: [PATCH 01/11] =?UTF-8?q?REPORT-91839=20=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E7=AE=A1=E7=90=86=E4=BA=8C=E6=9C=9F=20bug?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/actions/file/PreferencePane.java | 50 ++++++++++------- .../design/actions/file/SwitchExistEnv.java | 5 ++ .../itableeditorpane/UITableModelAdapter.java | 13 +++++ .../fr/design/mainframe/DesignerFrame.java | 5 ++ .../design/mainframe/vcs/RecycleAction.java | 2 +- .../design/mainframe/vcs/VcsMoveChecker.java | 54 +++++++++++++++++++ .../ui/AbstractSupportSelectTablePane.java | 11 +++- .../mainframe/vcs/ui/VcsCenterPane.java | 5 ++ .../design/mainframe/vcs/ui/VcsMovePanel.java | 33 ++++++++---- 9 files changed, 148 insertions(+), 30 deletions(-) create mode 100644 designer-base/src/main/java/com/fr/design/mainframe/vcs/VcsMoveChecker.java diff --git a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java index fcaaccfc20..1b75688b6a 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java @@ -50,9 +50,12 @@ import com.fr.io.attr.ImageExportAttr; import com.fr.locale.InterProviderFactory; import com.fr.log.FineLoggerFactory; import com.fr.report.ReportConfigManager; +import com.fr.scheduler.tool.FineScheduler; import com.fr.stable.Constants; import com.fr.stable.os.OperatingSystem; import com.fr.third.apache.logging.log4j.Level; +import com.fr.third.guava.collect.BiMap; +import com.fr.third.guava.collect.HashBiMap; import com.fr.transaction.Configurations; import com.fr.transaction.Worker; import com.fr.transaction.WorkerAdaptor; @@ -92,6 +95,7 @@ import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; import java.text.DecimalFormat; +import java.util.HashMap; import java.util.Locale; import java.util.Map; import java.util.concurrent.ExecutionException; @@ -224,6 +228,8 @@ public class PreferencePane extends BasicPane { private JPanel saveIntervalPane; private JPanel autoCleanPane; + + private JPanel gcControlPane; private UICheckBox startupPageEnabledCheckBox; private IntegerEditor saveIntervalEditor; private UICheckBox gcEnableCheckBox; @@ -245,7 +251,15 @@ public class PreferencePane extends BasicPane { private UIRadioButton previewRenderQuality; private static final int DPI_SCALE_S = 1; private static final int DPI_SCALE_M = 2; - + private static final BiMap INDEX_DAY_MAP = HashBiMap.create(new HashMap() { + { + put(ONE_DAY_INDEX, ONE_DAY_INT); + put(ONE_WEEK_INDEX, ONE_WEEK_INT); + put(ONE_MONTH_INDEX, ONE_MONTH_INT); + put(SIX_MONTH_INDEX, SIX_MONTH_INT); + put(THREE_MONTH_INDEX, THREE_MONTH_INT); + } + }); public PreferencePane() { this.initComponents(); } @@ -418,7 +432,7 @@ public class PreferencePane extends BasicPane { savePane.add(saveIntervalPane); //gc面板 - JPanel gcControlPane = createGcControlPane(); + gcControlPane = createGcControlPane(); JPanel enableVcsPanel = new JPanel(FRGUIPaneFactory.createLeftZeroLayout()); enableVcsPanel.add(remindVcsLabel); @@ -470,9 +484,14 @@ public class PreferencePane extends BasicPane { private VcsMovePanel createMovePane(CardLayout cardLayout, JPanel parentPane) { return new VcsMovePanel(cardLayout, parentPane, new VcsMovePanel.MoveCallBack(){ @Override - public void doCallBack(boolean visible) { - saveIntervalPane.setVisible(visible); - autoCleanPane.setVisible(visible); + public void doCallBack(boolean useV2) { + saveIntervalPane.setVisible(useV2); + autoCleanPane.setVisible(useV2); + useVcsAutoCleanScheduleCheckBox.setSelected(useV2); + useVcsAutoSaveScheduleCheckBox.setSelected(useV2); + gcControlPane.setVisible(!useV2); + useVcsAutoCleanScheduleCheckBox.setEnabled(useV2 && FineScheduler.getInstance().isStarted()); + useVcsAutoSaveScheduleCheckBox.setEnabled(useV2); } }); }; @@ -490,7 +509,7 @@ public class PreferencePane extends BasicPane { autoCleanPane.add(new UILabel(i18nText("Fine-Design_Vcs_Auto_Clean_Content"))); autoCleanPane.add(autoCleanRetainIntervalComboBox); autoCleanPane.add(new UILabel(i18nText("Fine-Design_Vcs_Auto_Clean_Last"))); - useVcsAutoCleanScheduleCheckBox.setEnabled(!VcsHelper.getInstance().isLegacyMode()); + useVcsAutoCleanScheduleCheckBox.setEnabled(!VcsHelper.getInstance().isLegacyMode() && FineScheduler.getInstance().isStarted()); autoCleanPane.setVisible(false); return autoCleanPane; } @@ -916,6 +935,8 @@ public class PreferencePane extends BasicPane { useVcsAutoSaveScheduleCheckBox.setSelected(vcsConfigManager.isUseAutoSave()); useVcsAutoCleanScheduleCheckBox.setSelected(VcsConfig.getInstance().isUseV2AutoClean()); autoSaveIntervalEditor.setValue(vcsConfigManager.getAutoSaveInterval()); + autoCleanIntervalComboBox.setSelectedIndex(getIndex(VcsConfig.getInstance().getV2CleanInterval())); + autoCleanRetainIntervalComboBox.setSelectedIndex(getIndex(VcsConfig.getInstance().getV2RetainInterval())); gridLineColorTBButton.setColor(designerEnvManager.getGridLineColor()); paginationLineColorTBButton.setColor(designerEnvManager.getPaginationLineColor()); @@ -1005,18 +1026,11 @@ public class PreferencePane extends BasicPane { } private int getDay(int dateIndex) { - switch (dateIndex) { - case ONE_DAY_INDEX: - return ONE_DAY_INT; - case ONE_WEEK_INDEX: - return ONE_WEEK_INT; - case ONE_MONTH_INDEX: - return ONE_MONTH_INT; - case SIX_MONTH_INDEX: - return SIX_MONTH_INT; - default: - return THREE_MONTH_INT; - } + return INDEX_DAY_MAP.getOrDefault(dateIndex, THREE_MONTH_INT); + } + + private int getIndex(int day) { + return INDEX_DAY_MAP.inverse().getOrDefault(day, THREE_MONTH_INDEX); } /** diff --git a/designer-base/src/main/java/com/fr/design/actions/file/SwitchExistEnv.java b/designer-base/src/main/java/com/fr/design/actions/file/SwitchExistEnv.java index e38a39895a..ffd0cd94d6 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/SwitchExistEnv.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/SwitchExistEnv.java @@ -7,6 +7,7 @@ import com.fr.design.env.DesignerWorkspaceInfo; import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.file.SaveSomeTemplatePane; import com.fr.design.mainframe.JTemplate; +import com.fr.design.mainframe.vcs.VcsMoveChecker; import com.fr.design.menu.KeySetUtils; import com.fr.design.menu.MenuDef; import com.fr.design.menu.SeparatorDef; @@ -60,6 +61,10 @@ public class SwitchExistEnv extends MenuDef { * @param e 事件 */ public void actionPerformed(ActionEvent e) { + // 检查是否正在迁移 + if (!VcsMoveChecker.checkSwitch()) { + return; + } final String envName = getName(); DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); DesignerWorkspaceInfo selectedEnv = envManager.getWorkspaceInfo(envName); diff --git a/designer-base/src/main/java/com/fr/design/gui/itableeditorpane/UITableModelAdapter.java b/designer-base/src/main/java/com/fr/design/gui/itableeditorpane/UITableModelAdapter.java index 87e21c75be..63d651bb52 100644 --- a/designer-base/src/main/java/com/fr/design/gui/itableeditorpane/UITableModelAdapter.java +++ b/designer-base/src/main/java/com/fr/design/gui/itableeditorpane/UITableModelAdapter.java @@ -64,6 +64,19 @@ public abstract class UITableModelAdapter extends AbstractTableModel implemen return null; } + /** + * 获取映射后的值 + * + * @param row 行 + * @return 值 + */ + public T getConvertRowSelectedValue(int row) { + if (table.getSelectedRow() >= 0) { + return list.get(table.convertRowIndexToModel(row)); + } + return null; + } + public void setColumnClass(Class[] classes) { this.classes = classes; } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java index 150c4302f4..43a4199254 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java @@ -33,6 +33,7 @@ import com.fr.design.lock.LockInfoDialog; import com.fr.design.mainframe.share.mini.MiniShopDisposingChecker; import com.fr.design.mainframe.toolbar.ToolBarMenuDock; import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus; +import com.fr.design.mainframe.vcs.VcsMoveChecker; import com.fr.design.mainframe.vcs.common.VcsHelper; import com.fr.design.menu.ShortCut; import com.fr.design.os.impl.MacOsAddListenerAction; @@ -161,6 +162,10 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta @Override public void windowClosing(WindowEvent e) { + // 检查是否正在迁移 + if (!VcsMoveChecker.checkClose()) { + return; + } // 检查mini商城是否存在未结束的后台任务 if (!MiniShopDisposingChecker.check()) { return; diff --git a/designer-base/src/main/java/com/fr/design/mainframe/vcs/RecycleAction.java b/designer-base/src/main/java/com/fr/design/mainframe/vcs/RecycleAction.java index aa43ed5b91..b074f17f8f 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/vcs/RecycleAction.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/vcs/RecycleAction.java @@ -18,7 +18,7 @@ import java.awt.event.ActionEvent; public class RecycleAction extends UpdateAction { public RecycleAction() { - this.setSmallIcon("/com/fr/design/standard/vcslist/vcs_recycle"); + this.setSmallIcon("/com/fr/design/standard/vcslist/vcs_recycle", false); this.setName(Toolkit.i18nText("Fine-Design_Vcs_Recycle")); } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/vcs/VcsMoveChecker.java b/designer-base/src/main/java/com/fr/design/mainframe/vcs/VcsMoveChecker.java new file mode 100644 index 0000000000..441b2505dc --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/mainframe/vcs/VcsMoveChecker.java @@ -0,0 +1,54 @@ +package com.fr.design.mainframe.vcs; + +import com.fr.design.dialog.FineJOptionPane; +import com.fr.design.i18n.Toolkit; +import com.fr.design.mainframe.DesignerContext; +import com.fr.workspace.server.vcs.v2.move.VcsMoveService; + +import javax.swing.JOptionPane; + +/** + * 版本管理迁移检查 + * + * @author Destiny.Lin + * @since 11.0 + * Created on 2023/7/18 + */ +public class VcsMoveChecker { + + + /** + * 关闭前的检查 + * + * @return + */ + public static boolean checkClose() { + return check(Toolkit.i18nText("Fine-Design_Vcs_Close_Tips")); + } + + + /** + * 切换环境前的检查 + * + * @return + */ + public static boolean checkSwitch() { + return check(Toolkit.i18nText("Fine-Design_Vcs_Switch_Tips")); + } + + private static boolean check(String msg) { + if (VcsMoveService.getInstance().isMoving()) { + int result = FineJOptionPane.showConfirmDialog( + DesignerContext.getDesignerFrame(), + msg, + Toolkit.i18nText("Fine-Design_Basic_Tool_Tips"), + FineJOptionPane.YES_NO_OPTION + ); + return result == JOptionPane.YES_OPTION; + } + return true; + } + + + +} diff --git a/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/AbstractSupportSelectTablePane.java b/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/AbstractSupportSelectTablePane.java index eaa63b1ccd..7c2d56b509 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/AbstractSupportSelectTablePane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/AbstractSupportSelectTablePane.java @@ -19,6 +19,7 @@ import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTable; +import javax.swing.RowSorter; import javax.swing.SwingConstants; import javax.swing.SwingWorker; import javax.swing.UIManager; @@ -26,6 +27,7 @@ import javax.swing.plaf.ColorUIResource; import javax.swing.plaf.UIResource; import javax.swing.table.JTableHeader; import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableRowSorter; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; @@ -151,6 +153,13 @@ public abstract class AbstractSupportSelectTablePane exte tablePane.add(tableTopPane, BorderLayout.NORTH); tablePane.add(tableContentPane, BorderLayout.CENTER); tableContentPane.getEditTable().getColumnModel().getColumn(0).setMaxWidth(50); + RowSorter> sorter = new TableRowSorter>(model) { + @Override + public boolean isSortable(int column) { + return column != 0; + } + }; + tableContentPane.getEditTable().setRowSorter(sorter); return tablePane; } @@ -171,7 +180,7 @@ public abstract class AbstractSupportSelectTablePane exte int row = ((JTable) e.getSource()).rowAtPoint(e.getPoint()); int col = ((JTable) e.getSource()).columnAtPoint(e.getPoint()); if (col == 0) { - T entity = model.getSelectedValue(); + T entity = model.getConvertRowSelectedValue(row); //改变面板的各个状态 changeComponentStatus(entity, row, col, table); } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsCenterPane.java b/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsCenterPane.java index 6d927b8376..0da23fa3dd 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsCenterPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsCenterPane.java @@ -189,4 +189,9 @@ public class VcsCenterPane extends VcsNewPane { protected boolean isNeedRestore() { return false; } + + @Override + protected boolean isNeedSearch() { + return true; + } } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsMovePanel.java b/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsMovePanel.java index a8a719a188..1cce88efd5 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsMovePanel.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsMovePanel.java @@ -197,8 +197,14 @@ public class VcsMovePanel extends BasicPane { private void initTipDesc() { UILabel descLabel = FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Vcs_Move_Desc")); + UILabel firstLabel = FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Vcs_Move_Tips_First")); + UILabel secondLabel = FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Vcs_Move_Tips_Second")); descLabel.setForeground(TIP_COLOR); + firstLabel.setForeground(TIP_COLOR); + secondLabel.setForeground(TIP_COLOR); choosePane.add(descLabel); + choosePane.add(firstLabel); + choosePane.add(secondLabel); } private void initRadioButton() { @@ -372,7 +378,7 @@ public class VcsMovePanel extends BasicPane { } - private class MoveWorker extends SwingWorker { + private class MoveWorker extends SwingWorker { private VcsMoveStrategy strategy; @@ -381,7 +387,7 @@ public class VcsMovePanel extends BasicPane { } @Override - protected Void doInBackground() throws Exception { + protected Boolean doInBackground() throws Exception { try { //开始迁移 VcsMoveService.getInstance().startMove(new VcsMoveService.BaseMoveServiceWhileMoving() { @@ -396,13 +402,10 @@ public class VcsMovePanel extends BasicPane { } }, strategy); } catch (Exception e) { - this.cancel(true); VcsMoveService.getInstance().stopMoving(); - initFailedPane(); - VcsMovePanel.this.getParentCard().show(getParentPane(), FAILED); - FineLoggerFactory.getLogger().error("[VcsV2] Vcs move failed!"); + return false; } - return null; + return true; } @Override @@ -413,9 +416,19 @@ public class VcsMovePanel extends BasicPane { @Override protected void done() { VcsMoveService.getInstance().stopMoving(); - initSuccessPane(); - VcsMovePanel.this.getParentCard().show(getParentPane(), SUCCESS); - VcsHelper.getInstance().updateLegacyMode(); + try { + if (get()) { + initSuccessPane(); + VcsMovePanel.this.getParentCard().show(getParentPane(), SUCCESS); + VcsHelper.getInstance().updateLegacyMode(); + } else { + initFailedPane(); + VcsMovePanel.this.getParentCard().show(getParentPane(), FAILED); + FineLoggerFactory.getLogger().error("[VcsV2] Vcs move failed!"); + } + } catch (InterruptedException | ExecutionException e) { + throw new RuntimeException(e); + } } } From bb665f038506d25f4acc7e3b774f140e0c1edb98 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 18 Jul 2023 15:20:02 +0800 Subject: [PATCH 02/11] =?UTF-8?q?Revert=20"REPORT-91839=20=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E7=89=88=E6=9C=AC=E7=AE=A1=E7=90=86=E4=BA=8C=E6=9C=9F?= =?UTF-8?q?=20bug=E4=BF=AE=E5=A4=8D"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 49cbdffd4356fc62cbc273a24d7fd72695ee5da9. --- .../design/actions/file/PreferencePane.java | 50 +++++++---------- .../design/actions/file/SwitchExistEnv.java | 5 -- .../itableeditorpane/UITableModelAdapter.java | 13 ----- .../fr/design/mainframe/DesignerFrame.java | 5 -- .../design/mainframe/vcs/RecycleAction.java | 2 +- .../design/mainframe/vcs/VcsMoveChecker.java | 54 ------------------- .../ui/AbstractSupportSelectTablePane.java | 11 +--- .../mainframe/vcs/ui/VcsCenterPane.java | 5 -- .../design/mainframe/vcs/ui/VcsMovePanel.java | 33 ++++-------- 9 files changed, 30 insertions(+), 148 deletions(-) delete mode 100644 designer-base/src/main/java/com/fr/design/mainframe/vcs/VcsMoveChecker.java diff --git a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java index 1b75688b6a..fcaaccfc20 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java @@ -50,12 +50,9 @@ import com.fr.io.attr.ImageExportAttr; import com.fr.locale.InterProviderFactory; import com.fr.log.FineLoggerFactory; import com.fr.report.ReportConfigManager; -import com.fr.scheduler.tool.FineScheduler; import com.fr.stable.Constants; import com.fr.stable.os.OperatingSystem; import com.fr.third.apache.logging.log4j.Level; -import com.fr.third.guava.collect.BiMap; -import com.fr.third.guava.collect.HashBiMap; import com.fr.transaction.Configurations; import com.fr.transaction.Worker; import com.fr.transaction.WorkerAdaptor; @@ -95,7 +92,6 @@ import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; import java.text.DecimalFormat; -import java.util.HashMap; import java.util.Locale; import java.util.Map; import java.util.concurrent.ExecutionException; @@ -228,8 +224,6 @@ public class PreferencePane extends BasicPane { private JPanel saveIntervalPane; private JPanel autoCleanPane; - - private JPanel gcControlPane; private UICheckBox startupPageEnabledCheckBox; private IntegerEditor saveIntervalEditor; private UICheckBox gcEnableCheckBox; @@ -251,15 +245,7 @@ public class PreferencePane extends BasicPane { private UIRadioButton previewRenderQuality; private static final int DPI_SCALE_S = 1; private static final int DPI_SCALE_M = 2; - private static final BiMap INDEX_DAY_MAP = HashBiMap.create(new HashMap() { - { - put(ONE_DAY_INDEX, ONE_DAY_INT); - put(ONE_WEEK_INDEX, ONE_WEEK_INT); - put(ONE_MONTH_INDEX, ONE_MONTH_INT); - put(SIX_MONTH_INDEX, SIX_MONTH_INT); - put(THREE_MONTH_INDEX, THREE_MONTH_INT); - } - }); + public PreferencePane() { this.initComponents(); } @@ -432,7 +418,7 @@ public class PreferencePane extends BasicPane { savePane.add(saveIntervalPane); //gc面板 - gcControlPane = createGcControlPane(); + JPanel gcControlPane = createGcControlPane(); JPanel enableVcsPanel = new JPanel(FRGUIPaneFactory.createLeftZeroLayout()); enableVcsPanel.add(remindVcsLabel); @@ -484,14 +470,9 @@ public class PreferencePane extends BasicPane { private VcsMovePanel createMovePane(CardLayout cardLayout, JPanel parentPane) { return new VcsMovePanel(cardLayout, parentPane, new VcsMovePanel.MoveCallBack(){ @Override - public void doCallBack(boolean useV2) { - saveIntervalPane.setVisible(useV2); - autoCleanPane.setVisible(useV2); - useVcsAutoCleanScheduleCheckBox.setSelected(useV2); - useVcsAutoSaveScheduleCheckBox.setSelected(useV2); - gcControlPane.setVisible(!useV2); - useVcsAutoCleanScheduleCheckBox.setEnabled(useV2 && FineScheduler.getInstance().isStarted()); - useVcsAutoSaveScheduleCheckBox.setEnabled(useV2); + public void doCallBack(boolean visible) { + saveIntervalPane.setVisible(visible); + autoCleanPane.setVisible(visible); } }); }; @@ -509,7 +490,7 @@ public class PreferencePane extends BasicPane { autoCleanPane.add(new UILabel(i18nText("Fine-Design_Vcs_Auto_Clean_Content"))); autoCleanPane.add(autoCleanRetainIntervalComboBox); autoCleanPane.add(new UILabel(i18nText("Fine-Design_Vcs_Auto_Clean_Last"))); - useVcsAutoCleanScheduleCheckBox.setEnabled(!VcsHelper.getInstance().isLegacyMode() && FineScheduler.getInstance().isStarted()); + useVcsAutoCleanScheduleCheckBox.setEnabled(!VcsHelper.getInstance().isLegacyMode()); autoCleanPane.setVisible(false); return autoCleanPane; } @@ -935,8 +916,6 @@ public class PreferencePane extends BasicPane { useVcsAutoSaveScheduleCheckBox.setSelected(vcsConfigManager.isUseAutoSave()); useVcsAutoCleanScheduleCheckBox.setSelected(VcsConfig.getInstance().isUseV2AutoClean()); autoSaveIntervalEditor.setValue(vcsConfigManager.getAutoSaveInterval()); - autoCleanIntervalComboBox.setSelectedIndex(getIndex(VcsConfig.getInstance().getV2CleanInterval())); - autoCleanRetainIntervalComboBox.setSelectedIndex(getIndex(VcsConfig.getInstance().getV2RetainInterval())); gridLineColorTBButton.setColor(designerEnvManager.getGridLineColor()); paginationLineColorTBButton.setColor(designerEnvManager.getPaginationLineColor()); @@ -1026,11 +1005,18 @@ public class PreferencePane extends BasicPane { } private int getDay(int dateIndex) { - return INDEX_DAY_MAP.getOrDefault(dateIndex, THREE_MONTH_INT); - } - - private int getIndex(int day) { - return INDEX_DAY_MAP.inverse().getOrDefault(day, THREE_MONTH_INDEX); + switch (dateIndex) { + case ONE_DAY_INDEX: + return ONE_DAY_INT; + case ONE_WEEK_INDEX: + return ONE_WEEK_INT; + case ONE_MONTH_INDEX: + return ONE_MONTH_INT; + case SIX_MONTH_INDEX: + return SIX_MONTH_INT; + default: + return THREE_MONTH_INT; + } } /** diff --git a/designer-base/src/main/java/com/fr/design/actions/file/SwitchExistEnv.java b/designer-base/src/main/java/com/fr/design/actions/file/SwitchExistEnv.java index ffd0cd94d6..e38a39895a 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/SwitchExistEnv.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/SwitchExistEnv.java @@ -7,7 +7,6 @@ import com.fr.design.env.DesignerWorkspaceInfo; import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.file.SaveSomeTemplatePane; import com.fr.design.mainframe.JTemplate; -import com.fr.design.mainframe.vcs.VcsMoveChecker; import com.fr.design.menu.KeySetUtils; import com.fr.design.menu.MenuDef; import com.fr.design.menu.SeparatorDef; @@ -61,10 +60,6 @@ public class SwitchExistEnv extends MenuDef { * @param e 事件 */ public void actionPerformed(ActionEvent e) { - // 检查是否正在迁移 - if (!VcsMoveChecker.checkSwitch()) { - return; - } final String envName = getName(); DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); DesignerWorkspaceInfo selectedEnv = envManager.getWorkspaceInfo(envName); diff --git a/designer-base/src/main/java/com/fr/design/gui/itableeditorpane/UITableModelAdapter.java b/designer-base/src/main/java/com/fr/design/gui/itableeditorpane/UITableModelAdapter.java index 63d651bb52..87e21c75be 100644 --- a/designer-base/src/main/java/com/fr/design/gui/itableeditorpane/UITableModelAdapter.java +++ b/designer-base/src/main/java/com/fr/design/gui/itableeditorpane/UITableModelAdapter.java @@ -64,19 +64,6 @@ public abstract class UITableModelAdapter extends AbstractTableModel implemen return null; } - /** - * 获取映射后的值 - * - * @param row 行 - * @return 值 - */ - public T getConvertRowSelectedValue(int row) { - if (table.getSelectedRow() >= 0) { - return list.get(table.convertRowIndexToModel(row)); - } - return null; - } - public void setColumnClass(Class[] classes) { this.classes = classes; } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java index 43a4199254..150c4302f4 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java @@ -33,7 +33,6 @@ import com.fr.design.lock.LockInfoDialog; import com.fr.design.mainframe.share.mini.MiniShopDisposingChecker; import com.fr.design.mainframe.toolbar.ToolBarMenuDock; import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus; -import com.fr.design.mainframe.vcs.VcsMoveChecker; import com.fr.design.mainframe.vcs.common.VcsHelper; import com.fr.design.menu.ShortCut; import com.fr.design.os.impl.MacOsAddListenerAction; @@ -162,10 +161,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta @Override public void windowClosing(WindowEvent e) { - // 检查是否正在迁移 - if (!VcsMoveChecker.checkClose()) { - return; - } // 检查mini商城是否存在未结束的后台任务 if (!MiniShopDisposingChecker.check()) { return; diff --git a/designer-base/src/main/java/com/fr/design/mainframe/vcs/RecycleAction.java b/designer-base/src/main/java/com/fr/design/mainframe/vcs/RecycleAction.java index b074f17f8f..aa43ed5b91 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/vcs/RecycleAction.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/vcs/RecycleAction.java @@ -18,7 +18,7 @@ import java.awt.event.ActionEvent; public class RecycleAction extends UpdateAction { public RecycleAction() { - this.setSmallIcon("/com/fr/design/standard/vcslist/vcs_recycle", false); + this.setSmallIcon("/com/fr/design/standard/vcslist/vcs_recycle"); this.setName(Toolkit.i18nText("Fine-Design_Vcs_Recycle")); } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/vcs/VcsMoveChecker.java b/designer-base/src/main/java/com/fr/design/mainframe/vcs/VcsMoveChecker.java deleted file mode 100644 index 441b2505dc..0000000000 --- a/designer-base/src/main/java/com/fr/design/mainframe/vcs/VcsMoveChecker.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.fr.design.mainframe.vcs; - -import com.fr.design.dialog.FineJOptionPane; -import com.fr.design.i18n.Toolkit; -import com.fr.design.mainframe.DesignerContext; -import com.fr.workspace.server.vcs.v2.move.VcsMoveService; - -import javax.swing.JOptionPane; - -/** - * 版本管理迁移检查 - * - * @author Destiny.Lin - * @since 11.0 - * Created on 2023/7/18 - */ -public class VcsMoveChecker { - - - /** - * 关闭前的检查 - * - * @return - */ - public static boolean checkClose() { - return check(Toolkit.i18nText("Fine-Design_Vcs_Close_Tips")); - } - - - /** - * 切换环境前的检查 - * - * @return - */ - public static boolean checkSwitch() { - return check(Toolkit.i18nText("Fine-Design_Vcs_Switch_Tips")); - } - - private static boolean check(String msg) { - if (VcsMoveService.getInstance().isMoving()) { - int result = FineJOptionPane.showConfirmDialog( - DesignerContext.getDesignerFrame(), - msg, - Toolkit.i18nText("Fine-Design_Basic_Tool_Tips"), - FineJOptionPane.YES_NO_OPTION - ); - return result == JOptionPane.YES_OPTION; - } - return true; - } - - - -} diff --git a/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/AbstractSupportSelectTablePane.java b/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/AbstractSupportSelectTablePane.java index 7c2d56b509..eaa63b1ccd 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/AbstractSupportSelectTablePane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/AbstractSupportSelectTablePane.java @@ -19,7 +19,6 @@ import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTable; -import javax.swing.RowSorter; import javax.swing.SwingConstants; import javax.swing.SwingWorker; import javax.swing.UIManager; @@ -27,7 +26,6 @@ import javax.swing.plaf.ColorUIResource; import javax.swing.plaf.UIResource; import javax.swing.table.JTableHeader; import javax.swing.table.TableCellRenderer; -import javax.swing.table.TableRowSorter; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; @@ -153,13 +151,6 @@ public abstract class AbstractSupportSelectTablePane exte tablePane.add(tableTopPane, BorderLayout.NORTH); tablePane.add(tableContentPane, BorderLayout.CENTER); tableContentPane.getEditTable().getColumnModel().getColumn(0).setMaxWidth(50); - RowSorter> sorter = new TableRowSorter>(model) { - @Override - public boolean isSortable(int column) { - return column != 0; - } - }; - tableContentPane.getEditTable().setRowSorter(sorter); return tablePane; } @@ -180,7 +171,7 @@ public abstract class AbstractSupportSelectTablePane exte int row = ((JTable) e.getSource()).rowAtPoint(e.getPoint()); int col = ((JTable) e.getSource()).columnAtPoint(e.getPoint()); if (col == 0) { - T entity = model.getConvertRowSelectedValue(row); + T entity = model.getSelectedValue(); //改变面板的各个状态 changeComponentStatus(entity, row, col, table); } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsCenterPane.java b/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsCenterPane.java index 0da23fa3dd..6d927b8376 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsCenterPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsCenterPane.java @@ -189,9 +189,4 @@ public class VcsCenterPane extends VcsNewPane { protected boolean isNeedRestore() { return false; } - - @Override - protected boolean isNeedSearch() { - return true; - } } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsMovePanel.java b/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsMovePanel.java index 1cce88efd5..a8a719a188 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsMovePanel.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsMovePanel.java @@ -197,14 +197,8 @@ public class VcsMovePanel extends BasicPane { private void initTipDesc() { UILabel descLabel = FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Vcs_Move_Desc")); - UILabel firstLabel = FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Vcs_Move_Tips_First")); - UILabel secondLabel = FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Vcs_Move_Tips_Second")); descLabel.setForeground(TIP_COLOR); - firstLabel.setForeground(TIP_COLOR); - secondLabel.setForeground(TIP_COLOR); choosePane.add(descLabel); - choosePane.add(firstLabel); - choosePane.add(secondLabel); } private void initRadioButton() { @@ -378,7 +372,7 @@ public class VcsMovePanel extends BasicPane { } - private class MoveWorker extends SwingWorker { + private class MoveWorker extends SwingWorker { private VcsMoveStrategy strategy; @@ -387,7 +381,7 @@ public class VcsMovePanel extends BasicPane { } @Override - protected Boolean doInBackground() throws Exception { + protected Void doInBackground() throws Exception { try { //开始迁移 VcsMoveService.getInstance().startMove(new VcsMoveService.BaseMoveServiceWhileMoving() { @@ -402,10 +396,13 @@ public class VcsMovePanel extends BasicPane { } }, strategy); } catch (Exception e) { + this.cancel(true); VcsMoveService.getInstance().stopMoving(); - return false; + initFailedPane(); + VcsMovePanel.this.getParentCard().show(getParentPane(), FAILED); + FineLoggerFactory.getLogger().error("[VcsV2] Vcs move failed!"); } - return true; + return null; } @Override @@ -416,19 +413,9 @@ public class VcsMovePanel extends BasicPane { @Override protected void done() { VcsMoveService.getInstance().stopMoving(); - try { - if (get()) { - initSuccessPane(); - VcsMovePanel.this.getParentCard().show(getParentPane(), SUCCESS); - VcsHelper.getInstance().updateLegacyMode(); - } else { - initFailedPane(); - VcsMovePanel.this.getParentCard().show(getParentPane(), FAILED); - FineLoggerFactory.getLogger().error("[VcsV2] Vcs move failed!"); - } - } catch (InterruptedException | ExecutionException e) { - throw new RuntimeException(e); - } + initSuccessPane(); + VcsMovePanel.this.getParentCard().show(getParentPane(), SUCCESS); + VcsHelper.getInstance().updateLegacyMode(); } } From e17d1661254e85733aaf49a12952a30a4a9b36f5 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 18 Jul 2023 15:28:15 +0800 Subject: [PATCH 03/11] =?UTF-8?q?REPORT-100167=20=E3=80=90=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E7=AE=A1=E7=90=86=E4=BA=8C=E6=9C=9F=E3=80=91=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E6=B8=85=E7=90=86=E9=85=8D=E7=BD=AE=E9=A1=B9=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E4=B8=8D=E7=94=9F=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/actions/file/PreferencePane.java | 39 +++++++++++-------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java index fcaaccfc20..5c3e38b868 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java @@ -50,9 +50,12 @@ import com.fr.io.attr.ImageExportAttr; import com.fr.locale.InterProviderFactory; import com.fr.log.FineLoggerFactory; import com.fr.report.ReportConfigManager; +import com.fr.scheduler.tool.FineScheduler; import com.fr.stable.Constants; import com.fr.stable.os.OperatingSystem; import com.fr.third.apache.logging.log4j.Level; +import com.fr.third.guava.collect.BiMap; +import com.fr.third.guava.collect.HashBiMap; import com.fr.transaction.Configurations; import com.fr.transaction.Worker; import com.fr.transaction.WorkerAdaptor; @@ -92,6 +95,7 @@ import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; import java.text.DecimalFormat; +import java.util.HashMap; import java.util.Locale; import java.util.Map; import java.util.concurrent.ExecutionException; @@ -245,7 +249,15 @@ public class PreferencePane extends BasicPane { private UIRadioButton previewRenderQuality; private static final int DPI_SCALE_S = 1; private static final int DPI_SCALE_M = 2; - + private static final BiMap INDEX_DAY_MAP = HashBiMap.create(new HashMap() { + { + put(ONE_DAY_INDEX, ONE_DAY_INT); + put(ONE_WEEK_INDEX, ONE_WEEK_INT); + put(ONE_MONTH_INDEX, ONE_MONTH_INT); + put(SIX_MONTH_INDEX, SIX_MONTH_INT); + put(THREE_MONTH_INDEX, THREE_MONTH_INT); + } + }); public PreferencePane() { this.initComponents(); } @@ -470,9 +482,9 @@ public class PreferencePane extends BasicPane { private VcsMovePanel createMovePane(CardLayout cardLayout, JPanel parentPane) { return new VcsMovePanel(cardLayout, parentPane, new VcsMovePanel.MoveCallBack(){ @Override - public void doCallBack(boolean visible) { - saveIntervalPane.setVisible(visible); - autoCleanPane.setVisible(visible); + public void doCallBack(boolean useV2) { + saveIntervalPane.setVisible(useV2); + autoCleanPane.setVisible(useV2); } }); }; @@ -916,6 +928,8 @@ public class PreferencePane extends BasicPane { useVcsAutoSaveScheduleCheckBox.setSelected(vcsConfigManager.isUseAutoSave()); useVcsAutoCleanScheduleCheckBox.setSelected(VcsConfig.getInstance().isUseV2AutoClean()); autoSaveIntervalEditor.setValue(vcsConfigManager.getAutoSaveInterval()); + autoCleanIntervalComboBox.setSelectedIndex(getIndex(VcsConfig.getInstance().getV2CleanInterval())); + autoCleanRetainIntervalComboBox.setSelectedIndex(getIndex(VcsConfig.getInstance().getV2RetainInterval())); gridLineColorTBButton.setColor(designerEnvManager.getGridLineColor()); paginationLineColorTBButton.setColor(designerEnvManager.getPaginationLineColor()); @@ -1005,18 +1019,11 @@ public class PreferencePane extends BasicPane { } private int getDay(int dateIndex) { - switch (dateIndex) { - case ONE_DAY_INDEX: - return ONE_DAY_INT; - case ONE_WEEK_INDEX: - return ONE_WEEK_INT; - case ONE_MONTH_INDEX: - return ONE_MONTH_INT; - case SIX_MONTH_INDEX: - return SIX_MONTH_INT; - default: - return THREE_MONTH_INT; - } + return INDEX_DAY_MAP.getOrDefault(dateIndex, THREE_MONTH_INT); + } + + private int getIndex(int day) { + return INDEX_DAY_MAP.inverse().getOrDefault(day, THREE_MONTH_INDEX); } /** From 91ad776a155b0aac872bb8ac8a20dab227e32af7 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 18 Jul 2023 15:30:22 +0800 Subject: [PATCH 04/11] =?UTF-8?q?REPORT-100545=20=E8=BF=81=E7=A7=BB?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=9B=B4=E6=8E=A5=E8=BF=9B=E5=85=A5=E6=96=B0?= =?UTF-8?q?=E7=89=88=E7=89=88=E6=9C=AC=E7=AE=A1=E7=90=86=EF=BC=8C=E4=BC=9A?= =?UTF-8?q?=E6=9C=89=E5=AD=98=E5=82=A8=E4=BC=98=E5=8C=96=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/actions/file/PreferencePane.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java index 5c3e38b868..f664905260 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java @@ -228,6 +228,8 @@ public class PreferencePane extends BasicPane { private JPanel saveIntervalPane; private JPanel autoCleanPane; + + private JPanel gcControlPane; private UICheckBox startupPageEnabledCheckBox; private IntegerEditor saveIntervalEditor; private UICheckBox gcEnableCheckBox; @@ -430,7 +432,7 @@ public class PreferencePane extends BasicPane { savePane.add(saveIntervalPane); //gc面板 - JPanel gcControlPane = createGcControlPane(); + gcControlPane = createGcControlPane(); JPanel enableVcsPanel = new JPanel(FRGUIPaneFactory.createLeftZeroLayout()); enableVcsPanel.add(remindVcsLabel); @@ -485,6 +487,7 @@ public class PreferencePane extends BasicPane { public void doCallBack(boolean useV2) { saveIntervalPane.setVisible(useV2); autoCleanPane.setVisible(useV2); + gcControlPane.setVisible(!useV2); } }); }; From 88bfdc35756d1dc5e088bbfb2088d3d1fae668d5 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 18 Jul 2023 15:32:15 +0800 Subject: [PATCH 05/11] =?UTF-8?q?REPORT-100757=20=E6=9C=AA=E5=90=AF?= =?UTF-8?q?=E5=8A=A8=E5=86=85=E7=BD=AE=E6=9C=8D=E5=8A=A1=E5=99=A8=EF=BC=8C?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=B8=85=E7=90=86=E9=85=8D=E7=BD=AE=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E7=81=B0=E5=8C=96=20&=20REPORT-100070=20=E6=96=B0?= =?UTF-8?q?=E7=89=88=E7=89=88=E6=9C=AC=E7=AE=A1=E7=90=86=E4=BA=A4=E4=BA=92?= =?UTF-8?q?=E5=92=8C=E4=BA=A4=E4=BA=92=E6=96=87=E6=A1=A3=E4=B8=8D=E4=B8=80?= =?UTF-8?q?=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/actions/file/PreferencePane.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java index f664905260..3ab832a019 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java @@ -488,6 +488,10 @@ public class PreferencePane extends BasicPane { saveIntervalPane.setVisible(useV2); autoCleanPane.setVisible(useV2); gcControlPane.setVisible(!useV2); + useVcsAutoCleanScheduleCheckBox.setSelected(useV2); + useVcsAutoSaveScheduleCheckBox.setSelected(useV2); + useVcsAutoCleanScheduleCheckBox.setEnabled(useV2 && FineScheduler.getInstance().isStarted()); + useVcsAutoSaveScheduleCheckBox.setEnabled(useV2); } }); }; @@ -505,7 +509,7 @@ public class PreferencePane extends BasicPane { autoCleanPane.add(new UILabel(i18nText("Fine-Design_Vcs_Auto_Clean_Content"))); autoCleanPane.add(autoCleanRetainIntervalComboBox); autoCleanPane.add(new UILabel(i18nText("Fine-Design_Vcs_Auto_Clean_Last"))); - useVcsAutoCleanScheduleCheckBox.setEnabled(!VcsHelper.getInstance().isLegacyMode()); + useVcsAutoCleanScheduleCheckBox.setEnabled(!VcsHelper.getInstance().isLegacyMode() && FineScheduler.getInstance().isStarted()); autoCleanPane.setVisible(false); return autoCleanPane; } From ab9dbfe11baefd6efe5efd59af8addbc989b0ffd Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 18 Jul 2023 15:40:40 +0800 Subject: [PATCH 06/11] =?UTF-8?q?REPORT-100527=20=E4=B8=AD=E6=96=AD?= =?UTF-8?q?=E8=BF=81=E7=A7=BB=E6=B2=A1=E6=9C=89=E5=BC=82=E5=B8=B8=E6=8F=90?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/actions/file/SwitchExistEnv.java | 6 +++ .../fr/design/mainframe/DesignerFrame.java | 7 +++ .../mainframe/vcs/ui/VcsMovingExitOption.java | 54 +++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsMovingExitOption.java diff --git a/designer-base/src/main/java/com/fr/design/actions/file/SwitchExistEnv.java b/designer-base/src/main/java/com/fr/design/actions/file/SwitchExistEnv.java index e38a39895a..1a421c5fd0 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/SwitchExistEnv.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/SwitchExistEnv.java @@ -7,6 +7,7 @@ import com.fr.design.env.DesignerWorkspaceInfo; import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.file.SaveSomeTemplatePane; import com.fr.design.mainframe.JTemplate; +import com.fr.design.mainframe.vcs.ui.VcsMovingExitOption; import com.fr.design.menu.KeySetUtils; import com.fr.design.menu.MenuDef; import com.fr.design.menu.SeparatorDef; @@ -60,6 +61,11 @@ public class SwitchExistEnv extends MenuDef { * @param e 事件 */ public void actionPerformed(ActionEvent e) { + //检查是否正在迁移,如果正在迁移就弹出弹窗让用户选择 + if (!VcsMovingExitOption.ShowDialogAndConfirmSwitch()) { + //如果用户选择取消切换环境则返回,不然说明用户就是想切换,则往下走 + return; + } final String envName = getName(); DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); DesignerWorkspaceInfo selectedEnv = envManager.getWorkspaceInfo(envName); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java index 150c4302f4..1ac6538926 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java @@ -34,6 +34,7 @@ import com.fr.design.mainframe.share.mini.MiniShopDisposingChecker; import com.fr.design.mainframe.toolbar.ToolBarMenuDock; import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus; import com.fr.design.mainframe.vcs.common.VcsHelper; +import com.fr.design.mainframe.vcs.ui.VcsMovingExitOption; import com.fr.design.menu.ShortCut; import com.fr.design.os.impl.MacOsAddListenerAction; import com.fr.design.os.impl.SupportOSImpl; @@ -161,6 +162,12 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta @Override public void windowClosing(WindowEvent e) { + //检查是否正在迁移,如果正在迁移就弹出弹窗让用户选择 + if (!VcsMovingExitOption.ShowDialogAndConfirmExit()) { + //如果用户选择取消退出则返回,不然说明用户就是想退出,则往下走 + return; + } + // 检查mini商城是否存在未结束的后台任务 if (!MiniShopDisposingChecker.check()) { return; diff --git a/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsMovingExitOption.java b/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsMovingExitOption.java new file mode 100644 index 0000000000..0c1469b877 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsMovingExitOption.java @@ -0,0 +1,54 @@ +package com.fr.design.mainframe.vcs.ui; + +import com.fr.design.dialog.FineJOptionPane; +import com.fr.design.i18n.Toolkit; +import com.fr.design.mainframe.DesignerContext; +import com.fr.workspace.server.vcs.v2.move.VcsMoveService; + +import javax.swing.JOptionPane; + +/** + * 版本管理迁移检查 + * + * @author Destiny.Lin + * @since 11.0 + * Created on 2023/7/18 + */ +public class VcsMovingExitOption { + + + /** + * 关闭前的检查 + * + * @return + */ + public static boolean ShowDialogAndConfirmExit() { + return showDialogAndChoose(Toolkit.i18nText("Fine-Design_Vcs_Close_Tips")); + } + + + /** + * 切换环境前的检查 + * + * @return + */ + public static boolean ShowDialogAndConfirmSwitch() { + return showDialogAndChoose(Toolkit.i18nText("Fine-Design_Vcs_Switch_Tips")); + } + + private static boolean showDialogAndChoose(String msg) { + if (VcsMoveService.getInstance().isMoving()) { + int result = FineJOptionPane.showConfirmDialog( + DesignerContext.getDesignerFrame(), + msg, + Toolkit.i18nText("Fine-Design_Basic_Tool_Tips"), + FineJOptionPane.YES_NO_OPTION + ); + return result == JOptionPane.YES_OPTION; + } + return true; + } + + + +} From 326f902ff67d5b9b46ca0d82099860d4955cd958 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 18 Jul 2023 15:42:02 +0800 Subject: [PATCH 07/11] =?UTF-8?q?REPORT-100284=20=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E6=95=B0=E6=8D=AE=E5=BC=B9=E7=AA=97=EF=BC=8C?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E6=96=87=E6=A1=88=E5=92=8C=E4=BA=A4=E4=BA=92?= =?UTF-8?q?=E4=B8=8D=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/mainframe/vcs/ui/VcsMovePanel.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsMovePanel.java b/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsMovePanel.java index a8a719a188..b894a4cbfa 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsMovePanel.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsMovePanel.java @@ -197,8 +197,14 @@ public class VcsMovePanel extends BasicPane { private void initTipDesc() { UILabel descLabel = FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Vcs_Move_Desc")); + UILabel firstLabel = FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Vcs_Move_Tips_First")); + UILabel secondLabel = FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Vcs_Move_Tips_Second")); descLabel.setForeground(TIP_COLOR); + firstLabel.setForeground(TIP_COLOR); + secondLabel.setForeground(TIP_COLOR); choosePane.add(descLabel); + choosePane.add(firstLabel); + choosePane.add(secondLabel); } private void initRadioButton() { From c7ea9190a7f1a1a1db0dad6e699d720b0f70e84a Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 18 Jul 2023 15:44:35 +0800 Subject: [PATCH 08/11] =?UTF-8?q?REPORT-100518=20=E6=97=A0=E7=A3=81?= =?UTF-8?q?=E7=9B=98=E5=86=99=E5=85=A5=E6=9D=83=E9=99=90=EF=BC=8C=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E8=BF=81=E7=A7=BB=E6=97=A0=E5=BC=82=E5=B8=B8=E6=8F=90?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/mainframe/vcs/ui/VcsMovePanel.java | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsMovePanel.java b/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsMovePanel.java index b894a4cbfa..5dacb65e91 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsMovePanel.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsMovePanel.java @@ -378,7 +378,7 @@ public class VcsMovePanel extends BasicPane { } - private class MoveWorker extends SwingWorker { + private class MoveWorker extends SwingWorker { private VcsMoveStrategy strategy; @@ -387,7 +387,7 @@ public class VcsMovePanel extends BasicPane { } @Override - protected Void doInBackground() throws Exception { + protected Boolean doInBackground() throws Exception { try { //开始迁移 VcsMoveService.getInstance().startMove(new VcsMoveService.BaseMoveServiceWhileMoving() { @@ -402,13 +402,10 @@ public class VcsMovePanel extends BasicPane { } }, strategy); } catch (Exception e) { - this.cancel(true); VcsMoveService.getInstance().stopMoving(); - initFailedPane(); - VcsMovePanel.this.getParentCard().show(getParentPane(), FAILED); - FineLoggerFactory.getLogger().error("[VcsV2] Vcs move failed!"); + return false; } - return null; + return true; } @Override @@ -419,13 +416,22 @@ public class VcsMovePanel extends BasicPane { @Override protected void done() { VcsMoveService.getInstance().stopMoving(); - initSuccessPane(); - VcsMovePanel.this.getParentCard().show(getParentPane(), SUCCESS); - VcsHelper.getInstance().updateLegacyMode(); + try { + if (get()) { + initSuccessPane(); + VcsMovePanel.this.getParentCard().show(getParentPane(), SUCCESS); + VcsHelper.getInstance().updateLegacyMode(); + } else { + initFailedPane(); + VcsMovePanel.this.getParentCard().show(getParentPane(), FAILED); + FineLoggerFactory.getLogger().error("[VcsV2] Vcs move failed!"); + } + } catch (InterruptedException | ExecutionException e) { + throw new RuntimeException(e); + } } } - /** * 迁移回调事件 * From 21c570af45336e75f3eb8902c9ce653e14a423d0 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 18 Jul 2023 15:46:37 +0800 Subject: [PATCH 09/11] =?UTF-8?q?REPORT-98345=20=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E4=B8=89=E6=9C=9F=20=E8=A1=A8=E5=A4=B4?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gui/itableeditorpane/UITableModelAdapter.java | 15 +++++++++++++++ .../vcs/ui/AbstractSupportSelectTablePane.java | 11 ++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/itableeditorpane/UITableModelAdapter.java b/designer-base/src/main/java/com/fr/design/gui/itableeditorpane/UITableModelAdapter.java index 87e21c75be..8918cccdbf 100644 --- a/designer-base/src/main/java/com/fr/design/gui/itableeditorpane/UITableModelAdapter.java +++ b/designer-base/src/main/java/com/fr/design/gui/itableeditorpane/UITableModelAdapter.java @@ -4,6 +4,7 @@ import com.fr.base.BaseUtils; import com.fr.design.dialog.FineJOptionPane; import com.fr.design.mainframe.DesignerContext; import com.fr.log.FineLoggerFactory; +import org.jetbrains.annotations.Nullable; import javax.swing.JOptionPane; import javax.swing.JTable; @@ -64,6 +65,20 @@ public abstract class UITableModelAdapter extends AbstractTableModel implemen return null; } + /** + * 获取映射后的值 + * + * @param row 行 + * @return 值 + */ + @Nullable + public T getConvertRowSelectedValue(int row) { + if (table.getSelectedRow() >= 0) { + return list.get(table.convertRowIndexToModel(row)); + } + return null; + } + public void setColumnClass(Class[] classes) { this.classes = classes; } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/AbstractSupportSelectTablePane.java b/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/AbstractSupportSelectTablePane.java index eaa63b1ccd..7c2d56b509 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/AbstractSupportSelectTablePane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/AbstractSupportSelectTablePane.java @@ -19,6 +19,7 @@ import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTable; +import javax.swing.RowSorter; import javax.swing.SwingConstants; import javax.swing.SwingWorker; import javax.swing.UIManager; @@ -26,6 +27,7 @@ import javax.swing.plaf.ColorUIResource; import javax.swing.plaf.UIResource; import javax.swing.table.JTableHeader; import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableRowSorter; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; @@ -151,6 +153,13 @@ public abstract class AbstractSupportSelectTablePane exte tablePane.add(tableTopPane, BorderLayout.NORTH); tablePane.add(tableContentPane, BorderLayout.CENTER); tableContentPane.getEditTable().getColumnModel().getColumn(0).setMaxWidth(50); + RowSorter> sorter = new TableRowSorter>(model) { + @Override + public boolean isSortable(int column) { + return column != 0; + } + }; + tableContentPane.getEditTable().setRowSorter(sorter); return tablePane; } @@ -171,7 +180,7 @@ public abstract class AbstractSupportSelectTablePane exte int row = ((JTable) e.getSource()).rowAtPoint(e.getPoint()); int col = ((JTable) e.getSource()).columnAtPoint(e.getPoint()); if (col == 0) { - T entity = model.getSelectedValue(); + T entity = model.getConvertRowSelectedValue(row); //改变面板的各个状态 changeComponentStatus(entity, row, col, table); } From 6365ff517975093d0849668220146ee2a9bf8561 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 18 Jul 2023 15:47:59 +0800 Subject: [PATCH 10/11] =?UTF-8?q?REPORT-100846=20=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E4=B8=AD=E5=BF=83=E5=92=8C=E7=89=88=E6=9C=AC=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E9=83=BD=E6=B2=A1=E6=9C=89=E6=90=9C=E7=B4=A2=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/mainframe/vcs/ui/VcsCenterPane.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsCenterPane.java b/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsCenterPane.java index 6d927b8376..0da23fa3dd 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsCenterPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/vcs/ui/VcsCenterPane.java @@ -189,4 +189,9 @@ public class VcsCenterPane extends VcsNewPane { protected boolean isNeedRestore() { return false; } + + @Override + protected boolean isNeedSearch() { + return true; + } } From f2c5f7a267cfe168bacbbe2a51b3033a0047a60c Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 18 Jul 2023 15:48:44 +0800 Subject: [PATCH 11/11] =?UTF-8?q?REPORT-98345=20=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E4=B8=89=E6=9C=9F=20icon=E8=AF=BB=E5=8F=96?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/mainframe/vcs/RecycleAction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/vcs/RecycleAction.java b/designer-base/src/main/java/com/fr/design/mainframe/vcs/RecycleAction.java index aa43ed5b91..b074f17f8f 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/vcs/RecycleAction.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/vcs/RecycleAction.java @@ -18,7 +18,7 @@ import java.awt.event.ActionEvent; public class RecycleAction extends UpdateAction { public RecycleAction() { - this.setSmallIcon("/com/fr/design/standard/vcslist/vcs_recycle"); + this.setSmallIcon("/com/fr/design/standard/vcslist/vcs_recycle", false); this.setName(Toolkit.i18nText("Fine-Design_Vcs_Recycle")); }