From 9c0b7771259942a0435d4802d1472feadf446fd9 Mon Sep 17 00:00:00 2001 From: Mara Date: Tue, 2 Apr 2024 20:58:30 +0800 Subject: [PATCH] a6.8.1 --- .../controller/BaseBranchController.java | 24 ++++++++ .../mybox/controller/BaseChildController.java | 58 +------------------ .../mara/mybox/controller/BaseController.java | 4 +- .../controller/BaseController_Actions.java | 5 +- .../controller/BaseController_Attributes.java | 2 +- .../controller/BaseController_Interface.java | 46 +++++++++++++++ .../controller/BaseController_KeyEvents.java | 4 +- .../controller/BaseData2DTaskController.java | 4 +- .../controller/BaseImageEditController.java | 36 +----------- .../mybox/controller/BaseTaskController.java | 6 +- .../mybox/controller/ControlImagesBlend.java | 12 ++-- .../controller/FileRenameController.java | 2 +- .../InfoTreeNodeSelectController.java | 2 +- .../controller/MainMenuController_Window.java | 2 +- .../data2d/writer/DataFileCSVWriter.java | 2 +- .../data2d/writer/DataFileExcelWriter.java | 2 +- .../src/main/java/mara/mybox/fxml/FxTask.java | 3 + .../mara/mybox/fxml/style/StyleCheckBox.java | 2 +- .../resources/fxml/ControlImagesBlend.fxml | 4 +- .../src/main/resources/fxml/Data2DCopy.fxml | 9 +++ .../src/main/resources/fxml/Data2DDelete.fxml | 9 +++ .../src/main/resources/fxml/Data2DGroup.fxml | 9 +++ .../main/resources/fxml/Data2DNormalize.fxml | 9 +++ .../main/resources/fxml/Data2DSetValues.fxml | 9 +++ .../src/main/resources/fxml/Data2DSort.fxml | 9 +++ .../main/resources/fxml/Data2DTranspose.fxml | 9 +++ 26 files changed, 165 insertions(+), 118 deletions(-) create mode 100644 alpha/MyBox/src/main/java/mara/mybox/controller/BaseBranchController.java diff --git a/alpha/MyBox/src/main/java/mara/mybox/controller/BaseBranchController.java b/alpha/MyBox/src/main/java/mara/mybox/controller/BaseBranchController.java new file mode 100644 index 000000000..6ef79ec6d --- /dev/null +++ b/alpha/MyBox/src/main/java/mara/mybox/controller/BaseBranchController.java @@ -0,0 +1,24 @@ +package mara.mybox.controller; + +import mara.mybox.dev.MyBoxLog; + +/** + * @Author Mara + * @CreateDate 2021-12-25 + * @License Apache License Version 2.0 + */ +public abstract class BaseBranchController extends BaseFileController { + + @Override + public void initValues() { + try { + super.initValues(); + + stageType = StageType.Branch; + + } catch (Exception e) { + MyBoxLog.error(e); + } + } + +} diff --git a/alpha/MyBox/src/main/java/mara/mybox/controller/BaseChildController.java b/alpha/MyBox/src/main/java/mara/mybox/controller/BaseChildController.java index 8b54ea01c..8289369a6 100644 --- a/alpha/MyBox/src/main/java/mara/mybox/controller/BaseChildController.java +++ b/alpha/MyBox/src/main/java/mara/mybox/controller/BaseChildController.java @@ -1,22 +1,13 @@ package mara.mybox.controller; -import javafx.beans.value.ChangeListener; -import javafx.beans.value.ObservableValue; -import javafx.fxml.FXML; -import javafx.scene.control.CheckBox; import mara.mybox.dev.MyBoxLog; -import static mara.mybox.value.Languages.message; -import mara.mybox.value.UserConfig; /** * @Author Mara * @CreateDate 2021-12-25 * @License Apache License Version 2.0 */ -public abstract class BaseChildController extends BaseController { - - @FXML - protected CheckBox onTopCheck, closeAfterCheck; +public abstract class BaseChildController extends BaseFileController { @Override public void initValues() { @@ -30,51 +21,4 @@ public void initValues() { } } - @Override - public void initControls() { - try { - super.initControls(); - - if (onTopCheck != null) { - if (getMyStage() != null) { - onTopCheck.setSelected(getMyStage().isAlwaysOnTop()); - } - onTopCheck.selectedProperty().addListener(new ChangeListener() { - @Override - public void changed(ObservableValue v, Boolean ov, Boolean nv) { - if (getMyStage() == null) { - return; - } - myStage.setAlwaysOnTop(onTopCheck.isSelected()); - popInformation(myStage.isAlwaysOnTop() ? message("AlwayOnTop") : message("DisableAlwayOnTop")); - } - }); - } - if (closeAfterCheck != null) { - closeAfterCheck.setSelected(UserConfig.getBoolean(interfaceName + "SaveClose", false)); - closeAfterCheck.selectedProperty().addListener(new ChangeListener() { - @Override - public void changed(ObservableValue v, Boolean ov, Boolean nv) { - UserConfig.setBoolean(interfaceName + "SaveClose", closeAfterCheck.isSelected()); - } - }); - } - - } catch (Exception e) { - MyBoxLog.error(e); - } - } - - @FXML - @Override - public void cancelAction() { - close(); - } - - @Override - public boolean keyESC() { - close(); - return false; - } - } diff --git a/alpha/MyBox/src/main/java/mara/mybox/controller/BaseController.java b/alpha/MyBox/src/main/java/mara/mybox/controller/BaseController.java index 87cd69b92..3b220afe1 100644 --- a/alpha/MyBox/src/main/java/mara/mybox/controller/BaseController.java +++ b/alpha/MyBox/src/main/java/mara/mybox/controller/BaseController.java @@ -85,11 +85,11 @@ public void handle(WindowEvent event) { } }); parent.getMyStage().setFullScreen(false); - myStage.setAlwaysOnTop(true); + setAlwaysTop(true, false); break; } case Pop: { - myStage.setAlwaysOnTop(true); + setAlwaysTop(true, false); if (parent != null) { parent.getMyStage().setFullScreen(false); } diff --git a/alpha/MyBox/src/main/java/mara/mybox/controller/BaseController_Actions.java b/alpha/MyBox/src/main/java/mara/mybox/controller/BaseController_Actions.java index b87417eda..df9bbffda 100644 --- a/alpha/MyBox/src/main/java/mara/mybox/controller/BaseController_Actions.java +++ b/alpha/MyBox/src/main/java/mara/mybox/controller/BaseController_Actions.java @@ -382,10 +382,7 @@ public void systemMethod() { @FXML public void setAlwaysOnTop() { - if (getMyStage() == null) { - return; - } - myStage.setAlwaysOnTop(true); + setAlwaysTop(true, true); } public void clearUserSettings() { diff --git a/alpha/MyBox/src/main/java/mara/mybox/controller/BaseController_Attributes.java b/alpha/MyBox/src/main/java/mara/mybox/controller/BaseController_Attributes.java index 5d789681d..c2ec9c6b4 100644 --- a/alpha/MyBox/src/main/java/mara/mybox/controller/BaseController_Attributes.java +++ b/alpha/MyBox/src/main/java/mara/mybox/controller/BaseController_Attributes.java @@ -109,7 +109,7 @@ public static enum SaveAsType { @FXML protected ImageView tipsView, rightTipsView, linksView, leftPaneControl, rightPaneControl; @FXML - protected CheckBox rightPaneCheck, leftPaneCheck, toolbarCheck; + protected CheckBox rightPaneCheck, leftPaneCheck, toolbarCheck, onTopCheck, closeAfterCheck; @FXML protected ToggleGroup saveAsGroup, fileTypeGroup; @FXML diff --git a/alpha/MyBox/src/main/java/mara/mybox/controller/BaseController_Interface.java b/alpha/MyBox/src/main/java/mara/mybox/controller/BaseController_Interface.java index ef048227d..1a509da18 100644 --- a/alpha/MyBox/src/main/java/mara/mybox/controller/BaseController_Interface.java +++ b/alpha/MyBox/src/main/java/mara/mybox/controller/BaseController_Interface.java @@ -218,6 +218,27 @@ public void changed(ObservableValue ov, Toggle oldValue, Toggle newValue) { initMainArea(); + if (onTopCheck != null) { + onTopCheck.selectedProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue v, Boolean ov, Boolean nv) { + if (isSettingValues || myStage == null) { + return; + } + setAlwaysTop(onTopCheck.isSelected(), true); + } + }); + } + if (closeAfterCheck != null) { + closeAfterCheck.setSelected(UserConfig.getBoolean(interfaceName + "SaveClose", false)); + closeAfterCheck.selectedProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue v, Boolean ov, Boolean nv) { + UserConfig.setBoolean(interfaceName + "SaveClose", closeAfterCheck.isSelected()); + } + }); + } + if (tipsView != null) { tipsView.setPickOnBounds(true); tipsView.setOnMouseClicked(new EventHandler() { @@ -436,6 +457,11 @@ public void run() { } }, 1000); } + + if (onTopCheck != null) { + onTopCheck.setSelected(myStage.isAlwaysOnTop()); + } + } catch (Exception e) { MyBoxLog.error(e); } @@ -565,6 +591,26 @@ public void run() { } } + public void setAlwaysTop(boolean onTop, boolean info) { + try { + myStage = getMyStage(); + if (myStage == null || !myStage.isShowing()) { + return; + } + myStage.setAlwaysOnTop(onTop); + if (info) { + popInformation(onTop ? message("AlwayOnTop") : message("DisableAlwayOnTop")); + } + if (onTopCheck != null) { + isSettingValues = true; + onTopCheck.setSelected(onTop); + isSettingValues = false; + } + } catch (Exception e) { + MyBoxLog.error(e); + } + } + public void iconified() { try { getMyStage().setIconified(true); diff --git a/alpha/MyBox/src/main/java/mara/mybox/controller/BaseController_KeyEvents.java b/alpha/MyBox/src/main/java/mara/mybox/controller/BaseController_KeyEvents.java index 299d6e23a..5e77bda11 100644 --- a/alpha/MyBox/src/main/java/mara/mybox/controller/BaseController_KeyEvents.java +++ b/alpha/MyBox/src/main/java/mara/mybox/controller/BaseController_KeyEvents.java @@ -13,7 +13,6 @@ import mara.mybox.fxml.NodeTools; import mara.mybox.fxml.WindowTools; import mara.mybox.value.AppVariables; -import static mara.mybox.value.Languages.message; /** * @Author Mara @@ -566,8 +565,7 @@ public boolean controlAlt0() { } myStage = getMyStage(); if (myStage != null && myStage.isShowing()) { - myStage.setAlwaysOnTop(!myStage.isAlwaysOnTop()); - popInformation(myStage.isAlwaysOnTop() ? message("AlwayOnTop") : message("DisableAlwayOnTop")); + setAlwaysTop(!myStage.isAlwaysOnTop(), true); return true; } return false; diff --git a/alpha/MyBox/src/main/java/mara/mybox/controller/BaseData2DTaskController.java b/alpha/MyBox/src/main/java/mara/mybox/controller/BaseData2DTaskController.java index 1e908dba3..fd695dd8f 100644 --- a/alpha/MyBox/src/main/java/mara/mybox/controller/BaseData2DTaskController.java +++ b/alpha/MyBox/src/main/java/mara/mybox/controller/BaseData2DTaskController.java @@ -38,7 +38,7 @@ * @CreateDate 2021-9-4 * @License Apache License Version 2.0 */ -public abstract class BaseData2DTaskController extends BaseTaskController { +public abstract class BaseData2DTaskController extends BaseBranchController { protected BaseData2DLoadController dataController; protected Data2D data2D; @@ -345,11 +345,13 @@ public boolean checkOptions() { if (!sourceController.allPagesRadio.isSelected() && sourceController.selectedRowsIndices.isEmpty()) { popError(message("SelectToHandle") + ": " + message("Rows")); + tabPane.getSelectionModel().select(sourceTab); return false; } if (columnsPane != null && checkedColsIndices.isEmpty()) { popError(message("SelectToHandle") + ": " + message("Columns")); + tabPane.getSelectionModel().select(optionsTab); return false; } diff --git a/alpha/MyBox/src/main/java/mara/mybox/controller/BaseImageEditController.java b/alpha/MyBox/src/main/java/mara/mybox/controller/BaseImageEditController.java index d9eb630e8..d9eb3dbef 100644 --- a/alpha/MyBox/src/main/java/mara/mybox/controller/BaseImageEditController.java +++ b/alpha/MyBox/src/main/java/mara/mybox/controller/BaseImageEditController.java @@ -6,15 +6,12 @@ import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.fxml.FXML; -import javafx.scene.control.CheckBox; import javafx.scene.image.Image; import mara.mybox.bufferedimage.ImageScope; import mara.mybox.dev.MyBoxLog; import mara.mybox.fximage.ScaleTools; import mara.mybox.fxml.FxSingletonTask; import mara.mybox.fxml.FxTask; -import static mara.mybox.value.Languages.message; -import mara.mybox.value.UserConfig; /** * @Author Mara @@ -30,9 +27,6 @@ public class BaseImageEditController extends BaseShapeController { protected boolean needFixSize; protected FxTask demoTask; - @FXML - protected CheckBox closeAfterCheck, onTopCheck; - protected void setParameters(BaseImageController parent) { try { if (parent == null) { @@ -51,23 +45,6 @@ public void changed(ObservableValue v, Boolean ov, Boolean nv }); } - closeAfterCheck.setSelected(UserConfig.getBoolean(baseName + "CloseAfterHandle", false)); - closeAfterCheck.selectedProperty().addListener(new ChangeListener() { - @Override - public void changed(ObservableValue v, Boolean ov, Boolean nv) { - UserConfig.setBoolean(baseName + "CloseAfterHandle", closeAfterCheck.isSelected()); - } - }); - - onTopCheck.setSelected(getMyStage().isAlwaysOnTop()); - onTopCheck.selectedProperty().addListener(new ChangeListener() { - @Override - public void changed(ObservableValue v, Boolean ov, Boolean nv) { - myStage.setAlwaysOnTop(onTopCheck.isSelected()); - popInformation(myStage.isAlwaysOnTop() ? message("AlwayOnTop") : message("DisableAlwayOnTop")); - } - }); - if (undoButton != null) { undoButton.disableProperty().bind(imageController.undoButton.disableProperty()); } @@ -153,6 +130,7 @@ public void fitView() { } } + @Override public boolean checkOptions() { if (imageController == null || !imageController.isShowing()) { close(); @@ -304,18 +282,6 @@ public void saveAction() { imageController.saveAction(); } - @FXML - @Override - public void cancelAction() { - close(); - } - - @Override - public boolean keyESC() { - close(); - return false; - } - @Override public boolean controlAltS() { saveAction(); diff --git a/alpha/MyBox/src/main/java/mara/mybox/controller/BaseTaskController.java b/alpha/MyBox/src/main/java/mara/mybox/controller/BaseTaskController.java index 2dc1f40f5..b6dd712ea 100644 --- a/alpha/MyBox/src/main/java/mara/mybox/controller/BaseTaskController.java +++ b/alpha/MyBox/src/main/java/mara/mybox/controller/BaseTaskController.java @@ -182,6 +182,9 @@ public void afterTask() { if (openCheck != null && openCheck.isSelected()) { openTarget(); } + if (closeAfterCheck != null) { + close(); + } } public void cancelTask() { @@ -202,7 +205,8 @@ public void cancelAction() { protected void taskCanceled() { cancelled = true; - showLogs(message("Cancel")); + showLogs(message("Cancelled")); + MyBoxLog.debug(getClass()); } @FXML diff --git a/alpha/MyBox/src/main/java/mara/mybox/controller/ControlImagesBlend.java b/alpha/MyBox/src/main/java/mara/mybox/controller/ControlImagesBlend.java index d0407838d..4ed5de19a 100644 --- a/alpha/MyBox/src/main/java/mara/mybox/controller/ControlImagesBlend.java +++ b/alpha/MyBox/src/main/java/mara/mybox/controller/ControlImagesBlend.java @@ -73,16 +73,16 @@ public void setParameters(Connection conn, BaseController parent) { baseAboveCheck.setSelected(UserConfig.getBoolean(conn, baseName + "BaseAbove", false)); - String v = UserConfig.getString(conn, baseName + "BaseTransparentAs", "Transparent"); - if ("Another".equals(v)) { - baseAsOverlayRadio.setSelected(true); - baseTransparentAs = TransparentAs.Another; + String v = UserConfig.getString(conn, baseName + "BaseTransparentAs", "Another"); + if ("Transparent".equals(v)) { + baseAsTransparentRadio.setSelected(true); + baseTransparentAs = TransparentAs.Transparent; } else if ("Blend".equals(v)) { baseBlendRadio.setSelected(true); baseTransparentAs = TransparentAs.Blend; } else { - baseAsTransparentRadio.setSelected(true); - baseTransparentAs = TransparentAs.Transparent; + baseAsOverlayRadio.setSelected(true); + baseTransparentAs = TransparentAs.Another; } v = UserConfig.getString(conn, baseName + "OverlayTransparentAs", "Another"); diff --git a/alpha/MyBox/src/main/java/mara/mybox/controller/FileRenameController.java b/alpha/MyBox/src/main/java/mara/mybox/controller/FileRenameController.java index d10853cab..c6f137f78 100644 --- a/alpha/MyBox/src/main/java/mara/mybox/controller/FileRenameController.java +++ b/alpha/MyBox/src/main/java/mara/mybox/controller/FileRenameController.java @@ -56,7 +56,7 @@ public void set(File file) { getMyStage().setWidth(file.getAbsolutePath().length() * AppVariables.sceneFontSize + 40); myStage.setHeight(AppVariables.sceneFontSize * 14 + 80); - myStage.setAlwaysOnTop(true); + setAlwaysTop(true, false); } catch (Exception e) { MyBoxLog.error(e); diff --git a/alpha/MyBox/src/main/java/mara/mybox/controller/InfoTreeNodeSelectController.java b/alpha/MyBox/src/main/java/mara/mybox/controller/InfoTreeNodeSelectController.java index 75cc0448b..737d848d2 100644 --- a/alpha/MyBox/src/main/java/mara/mybox/controller/InfoTreeNodeSelectController.java +++ b/alpha/MyBox/src/main/java/mara/mybox/controller/InfoTreeNodeSelectController.java @@ -40,7 +40,7 @@ public void okAction() { @FXML public void dataAction() { InfoTreeManageController c = InfoNode.openManager(handlerController.category); - c.getMyStage().setAlwaysOnTop(true); + c.setAlwaysTop(true, false); } public SimpleBooleanProperty getNotify() { diff --git a/alpha/MyBox/src/main/java/mara/mybox/controller/MainMenuController_Window.java b/alpha/MyBox/src/main/java/mara/mybox/controller/MainMenuController_Window.java index 8eaabbe07..32c689c6c 100644 --- a/alpha/MyBox/src/main/java/mara/mybox/controller/MainMenuController_Window.java +++ b/alpha/MyBox/src/main/java/mara/mybox/controller/MainMenuController_Window.java @@ -132,7 +132,7 @@ public void AlwayOnTop() { if (getMyStage() == null) { return; } - myStage.setAlwaysOnTop(alwayOnTopCheck.isSelected()); + setAlwaysTop(alwayOnTopCheck.isSelected(), true); } @FXML diff --git a/alpha/MyBox/src/main/java/mara/mybox/data2d/writer/DataFileCSVWriter.java b/alpha/MyBox/src/main/java/mara/mybox/data2d/writer/DataFileCSVWriter.java index e9e53816a..8888f5397 100644 --- a/alpha/MyBox/src/main/java/mara/mybox/data2d/writer/DataFileCSVWriter.java +++ b/alpha/MyBox/src/main/java/mara/mybox/data2d/writer/DataFileCSVWriter.java @@ -83,7 +83,7 @@ public void closeWriter() { printer.close(); printer = null; if (isFailed() || tmpFile == null || !tmpFile.exists() - || !FileTools.override(tmpFile, targetFile, true)) { + || !FileTools.override(tmpFile, targetFile)) { FileDeleteTools.delete(tmpFile); showInfo(message("Failed") + ": " + targetFile); return; diff --git a/alpha/MyBox/src/main/java/mara/mybox/data2d/writer/DataFileExcelWriter.java b/alpha/MyBox/src/main/java/mara/mybox/data2d/writer/DataFileExcelWriter.java index 9d441e2df..603a96dd6 100644 --- a/alpha/MyBox/src/main/java/mara/mybox/data2d/writer/DataFileExcelWriter.java +++ b/alpha/MyBox/src/main/java/mara/mybox/data2d/writer/DataFileExcelWriter.java @@ -131,7 +131,7 @@ public void closeWriter() { xssfBook.close(); xssfBook = null; if (isFailed() || !tmpFile.exists() - || !FileTools.override(tmpFile, targetFile)) { + || !FileTools.override(tmpFile, targetFile, true)) { FileDeleteTools.delete(tmpFile); showInfo(message("Failed") + ": " + targetFile); return; diff --git a/alpha/MyBox/src/main/java/mara/mybox/fxml/FxTask.java b/alpha/MyBox/src/main/java/mara/mybox/fxml/FxTask.java index f914e56c1..2ba9d56f8 100644 --- a/alpha/MyBox/src/main/java/mara/mybox/fxml/FxTask.java +++ b/alpha/MyBox/src/main/java/mara/mybox/fxml/FxTask.java @@ -74,6 +74,7 @@ public String getInfo() { protected void whenSucceeded() { if (isCancelled()) { setInfo(message("Cancelled")); + MyBoxLog.debug(getClass()); return; } if (controller != null) { @@ -84,12 +85,14 @@ protected void whenSucceeded() { @Override protected void whenCanceled() { setInfo(message("Cancelled")); + MyBoxLog.debug(getClass()); } @Override protected void whenFailed() { if (isCancelled()) { setInfo(message("Cancelled")); + MyBoxLog.debug(getClass()); return; } if (controller != null) { diff --git a/alpha/MyBox/src/main/java/mara/mybox/fxml/style/StyleCheckBox.java b/alpha/MyBox/src/main/java/mara/mybox/fxml/style/StyleCheckBox.java index bfe347a64..292a93a63 100644 --- a/alpha/MyBox/src/main/java/mara/mybox/fxml/style/StyleCheckBox.java +++ b/alpha/MyBox/src/main/java/mara/mybox/fxml/style/StyleCheckBox.java @@ -66,7 +66,7 @@ private static StyleData match(String id) { case "shapeCanMoveCheck": return new StyleData(id, message("ShapeCanMove"), "", "iconMove.png"); case "onTopCheck": - return new StyleData(id, message("AlwayOnTopComments"), "", "iconTop.png"); + return new StyleData(id, message("AlwayOnTopComments"), "CTRL+0 / ALT+0", "iconTop.png"); case "synchronizeSwitchCheck": return new StyleData(id, message("SynchronizeWhenSwitchFormat"), "", "iconSynchronize.png"); } diff --git a/alpha/MyBox/src/main/resources/fxml/ControlImagesBlend.fxml b/alpha/MyBox/src/main/resources/fxml/ControlImagesBlend.fxml index 0b3bfae7c..6a36de2a6 100644 --- a/alpha/MyBox/src/main/resources/fxml/ControlImagesBlend.fxml +++ b/alpha/MyBox/src/main/resources/fxml/ControlImagesBlend.fxml @@ -34,12 +34,12 @@