diff --git a/designer-base/src/main/java/com/fr/design/actions/edit/RedoAction.java b/designer-base/src/main/java/com/fr/design/actions/edit/RedoAction.java index 8b8ffde4a..b00aff1a6 100644 --- a/designer-base/src/main/java/com/fr/design/actions/edit/RedoAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/edit/RedoAction.java @@ -49,7 +49,7 @@ public class RedoAction extends UpdateAction implements TemplateComponentActionI public void update() { JTemplate undoComponent = getEditingComponent(); if (DesignerEnvManager.getEnvManager().isSupportUndo()) { - boolean enable = undoComponent != null && undoComponent.canRedo() && !undoComponent.isOpening() && !undoComponent.isSaving(); + boolean enable = undoComponent != null && undoComponent.canRedo() && undoComponent.checkEnable(); this.setEnabled(enable); } else { this.setEnabled(false); diff --git a/designer-base/src/main/java/com/fr/design/actions/edit/UndoAction.java b/designer-base/src/main/java/com/fr/design/actions/edit/UndoAction.java index 53e5ed7c5..d8ed5b9da 100644 --- a/designer-base/src/main/java/com/fr/design/actions/edit/UndoAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/edit/UndoAction.java @@ -49,7 +49,7 @@ public class UndoAction extends UpdateAction implements TemplateComponentActionI public void update() { JTemplate undoComponent = getEditingComponent(); if (DesignerEnvManager.getEnvManager().isSupportUndo()) { - boolean enable = undoComponent != null && undoComponent.canUndo() && !undoComponent.isOpening() && !undoComponent.isSaving(); + boolean enable = undoComponent != null && undoComponent.canUndo() && undoComponent.checkEnable(); this.setEnabled(enable); } else { this.setEnabled(false); diff --git a/designer-base/src/main/java/com/fr/design/actions/file/CloseCurrentTemplateAction.java b/designer-base/src/main/java/com/fr/design/actions/file/CloseCurrentTemplateAction.java index 9e8be9f51..e7c83ce47 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/CloseCurrentTemplateAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/CloseCurrentTemplateAction.java @@ -1 +1 @@ -package com.fr.design.actions.file; import com.fr.design.actions.UpdateAction; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.file.MutilTempalteTabPane; import com.fr.design.menu.KeySetUtils; import java.awt.event.ActionEvent; /** * Author : daisy * Date: 13-8-16 * Time: 下午3:23 */ public class CloseCurrentTemplateAction extends UpdateAction { public CloseCurrentTemplateAction() { this.setMenuKeySet(KeySetUtils.CLOSE_CURRENT_TEMPLATE); this.setName(getMenuKeySet().getMenuKeySetName()); this.setMnemonic(getMenuKeySet().getMnemonic()); this.setAccelerator(getMenuKeySet().getKeyStroke()); } /** * 动作 * @param e 事件 */ public void actionPerformed(ActionEvent e) { MutilTempalteTabPane.getInstance().setIsCloseCurrent(true); MutilTempalteTabPane.getInstance().closeFormat(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()); MutilTempalteTabPane.getInstance().closeSpecifiedTemplate(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()); } } \ No newline at end of file +package com.fr.design.actions.file; import com.fr.design.actions.UpdateAction; import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.file.MutilTempalteTabPane; import com.fr.design.mainframe.JTemplate; import com.fr.design.menu.KeySetUtils; import java.awt.event.ActionEvent; /** * Author : daisy * Date: 13-8-16 * Time: 下午3:23 */ public class CloseCurrentTemplateAction extends UpdateAction { public CloseCurrentTemplateAction() { this.setMenuKeySet(KeySetUtils.CLOSE_CURRENT_TEMPLATE); this.setName(getMenuKeySet().getMenuKeySetName()); this.setMnemonic(getMenuKeySet().getMnemonic()); this.setAccelerator(getMenuKeySet().getKeyStroke()); } /** * 动作 * @param e 事件 */ public void actionPerformed(ActionEvent e) { MutilTempalteTabPane.getInstance().setIsCloseCurrent(true); MutilTempalteTabPane.getInstance().closeFormat(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()); MutilTempalteTabPane.getInstance().closeSpecifiedTemplate(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()); } @Override public void update() { super.update(); JTemplate template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); if (template != null) { this.setEnabled(!template.isSaving()); } } } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/actions/file/ExitDesignerAction.java b/designer-base/src/main/java/com/fr/design/actions/file/ExitDesignerAction.java index 070b9df22..1ca29a042 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/ExitDesignerAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/ExitDesignerAction.java @@ -3,6 +3,7 @@ */ package com.fr.design.actions.file; +import com.fr.design.mainframe.TemplateSavingChecker; import java.awt.event.ActionEvent; import com.fr.design.actions.UpdateAction; @@ -27,6 +28,9 @@ public class ExitDesignerAction extends UpdateAction { * @param e 事件 */ public void actionPerformed(ActionEvent e) { + if (!TemplateSavingChecker.check()) { + return; + } DesignerContext.getDesignerFrame().exit(); } } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/actions/file/SaveAsTemplateAction.java b/designer-base/src/main/java/com/fr/design/actions/file/SaveAsTemplateAction.java index 07b8a8024..b957e1563 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/SaveAsTemplateAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/SaveAsTemplateAction.java @@ -40,7 +40,6 @@ public class SaveAsTemplateAction extends JTemplateAction> { @Override public void update() { super.update(); - boolean enable = !this.getEditingComponent().isSaving() && !this.getEditingComponent().isOpening(); - this.setEnabled(enable); + this.setEnabled(this.getEditingComponent().checkEnable()); } } diff --git a/designer-base/src/main/java/com/fr/design/actions/file/SaveTemplateAction.java b/designer-base/src/main/java/com/fr/design/actions/file/SaveTemplateAction.java index dfc2071b1..072a127aa 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/SaveTemplateAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/SaveTemplateAction.java @@ -38,7 +38,7 @@ public class SaveTemplateAction extends JTemplateAction> { @Override public void update() { super.update(); - boolean enable = !this.getEditingComponent().isSaved() && !this.getEditingComponent().isSaving() && !this.getEditingComponent().isOpening(); + boolean enable = !this.getEditingComponent().isSaved() && this.getEditingComponent().checkEnable(); this.setEnabled(enable); } diff --git a/designer-base/src/main/java/com/fr/design/actions/file/export/AbstractExportAction.java b/designer-base/src/main/java/com/fr/design/actions/file/export/AbstractExportAction.java index 5277d2ebf..094915a85 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/export/AbstractExportAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/export/AbstractExportAction.java @@ -226,4 +226,10 @@ public abstract class AbstractExportAction> extends JT } } + @Override + public void update() { + super.update(); + this.setEnabled(this.getEditingComponent().checkEnable()); + } + } diff --git a/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListCache.java b/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListCache.java index 4487a2bbf..f7d4d1f57 100644 --- a/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListCache.java +++ b/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListCache.java @@ -380,6 +380,7 @@ public class HistoryTemplateListCache implements CallbackEvent { try { return stashWorker.get(); } catch (Exception e) { + FineLoggerFactory.getLogger().debug(e.getMessage(), e); return false; } } diff --git a/designer-base/src/main/java/com/fr/design/file/MutilTempalteTabPane.java b/designer-base/src/main/java/com/fr/design/file/MutilTempalteTabPane.java index b5f6b2ffd..0e8148584 100644 --- a/designer-base/src/main/java/com/fr/design/file/MutilTempalteTabPane.java +++ b/designer-base/src/main/java/com/fr/design/file/MutilTempalteTabPane.java @@ -11,6 +11,7 @@ import com.fr.design.gui.imenu.UIScrollPopUpMenu; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.JTemplate; +import com.fr.design.mainframe.TemplateSavingChecker; import com.fr.design.utils.DesignUtils; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUIPaintUtils; @@ -197,6 +198,9 @@ public class MutilTempalteTabPane extends JComponent { if (openedTemplate.size() == 1) { return; } + if (!TemplateSavingChecker.check()) { + return; + } SaveSomeTemplatePane saveSomeTempaltePane = new SaveSomeTemplatePane(false); //点击关闭其他模板,并且点击确定保存 if (saveSomeTempaltePane.showSavePane()) { diff --git a/designer-base/src/main/java/com/fr/design/gui/ibutton/UIForbiddenButtonUI.java b/designer-base/src/main/java/com/fr/design/gui/ibutton/UIForbiddenButtonUI.java index 94353deea..df3b6a86e 100644 --- a/designer-base/src/main/java/com/fr/design/gui/ibutton/UIForbiddenButtonUI.java +++ b/designer-base/src/main/java/com/fr/design/gui/ibutton/UIForbiddenButtonUI.java @@ -18,7 +18,7 @@ public class UIForbiddenButtonUI extends UIButtonUI { JTemplate template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); boolean flag = true; if (template != null) { - flag = c.isEnabled() && !template.isSaving() && !template.isOpening(); + flag = c.isEnabled() && template.checkEnable(); } c.setEnabled(flag); } diff --git a/designer-base/src/main/java/com/fr/design/gui/imenu/UIForBiddenHeadMenu.java b/designer-base/src/main/java/com/fr/design/gui/imenu/UIForBiddenHeadMenu.java deleted file mode 100644 index 14a12b58c..000000000 --- a/designer-base/src/main/java/com/fr/design/gui/imenu/UIForBiddenHeadMenu.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.fr.design.gui.imenu; - -/** - * @author hades - * @version 10.0 - * Created by hades on 2021/4/11 - */ -public class UIForBiddenHeadMenu extends UIHeadMenu { - - public UIForBiddenHeadMenu(String name) { - super(name); - } - - @Override - public void updateUI() { - setUI(new UIForbiddenMenuUI()); - } -} diff --git a/designer-base/src/main/java/com/fr/design/gui/imenu/UIForbiddenMenuUI.java b/designer-base/src/main/java/com/fr/design/gui/imenu/UIForbiddenMenuUI.java deleted file mode 100644 index 7a2851340..000000000 --- a/designer-base/src/main/java/com/fr/design/gui/imenu/UIForbiddenMenuUI.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.fr.design.gui.imenu; - -import com.fr.design.file.HistoryTemplateListCache; -import com.fr.design.mainframe.JTemplate; -import java.awt.Graphics; -import javax.swing.JComponent; - -/** - * @author hades - * @version 10.0 - * Created by hades on 2021/4/11 - */ -public class UIForbiddenMenuUI extends UIMenuUI { - - @Override - public void paint(Graphics g, JComponent c) { -// JTemplate template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); -// boolean flag = true; -// if (template != null) { -// flag = !template.isSaving() && !template.isOpening(); -// } -// c.setEnabled(flag); - super.paint(g, c); - } -} diff --git a/designer-base/src/main/java/com/fr/design/gui/itoolbar/UIToolbar.java b/designer-base/src/main/java/com/fr/design/gui/itoolbar/UIToolbar.java index 1740c6d3b..347dd768f 100644 --- a/designer-base/src/main/java/com/fr/design/gui/itoolbar/UIToolbar.java +++ b/designer-base/src/main/java/com/fr/design/gui/itoolbar/UIToolbar.java @@ -40,7 +40,7 @@ public class UIToolbar extends JToolBar { if (template != null) { for (int i = 0; i < getComponentCount(); i++) { Component component = getComponents()[i]; - component.setEnabled(!template.isSaving() && !template.isOpening()); + component.setEnabled(template.checkEnable()); } } } 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 7ebf3ebe0..443413181 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 @@ -185,6 +185,10 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta @Override public void windowClosing(WindowEvent e) { + // 关闭前check + if (!TemplateSavingChecker.check()) { + return; + } //关闭前当前模板 停止编辑 HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().stopEditing(); SaveSomeTemplatePane saveSomeTempaltePane = new SaveSomeTemplatePane(true); diff --git a/designer-base/src/main/java/com/fr/design/worker/save/SaveWorker.java b/designer-base/src/main/java/com/fr/design/worker/save/SaveWorker.java index f3baa98f7..d9f511cc7 100644 --- a/designer-base/src/main/java/com/fr/design/worker/save/SaveWorker.java +++ b/designer-base/src/main/java/com/fr/design/worker/save/SaveWorker.java @@ -1,8 +1,9 @@ package com.fr.design.worker.save; +import com.fr.design.dialog.FineJOptionPane; import com.fr.design.file.HistoryTemplateListCache; +import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.DesignerContext; -import com.fr.design.mainframe.DesignerFrame; import com.fr.design.mainframe.DesignerFrameFileDealerPane; import com.fr.design.mainframe.EastRegionContainerPane; import com.fr.design.mainframe.JTemplate; @@ -12,6 +13,7 @@ import com.fr.log.FineLoggerFactory; import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; +import javax.swing.JOptionPane; import javax.swing.SwingWorker; /** @@ -49,6 +51,11 @@ public class SaveWorker extends SwingWorker { success = get(); } catch (Exception e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); + FineJOptionPane.showMessageDialog( + DesignerContext.getDesignerFrame(), + Toolkit.i18nText("Fine-Design-Basic_Save_Failure"), + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tool_Tips"), + JOptionPane.ERROR_MESSAGE); } this.template.setSaving(false); // 恢复界面