diff --git a/build.gradle b/build.gradle index a604943..ee1d228 100644 --- a/build.gradle +++ b/build.gradle @@ -34,7 +34,6 @@ javafx { } dependencies { - implementation('com.jfoenix:jfoenix:9.0.10') implementation("com.google.code.gson:gson:2.9.1") implementation('net.java.dev.jna:jna:5.12.1') implementation('net.java.dev.jna:jna-platform:5.12.1') @@ -58,20 +57,10 @@ jlink { imageZip = project.file("${buildDir}/distributions/app-${javafx.platform.classifier}.zip") as RegularFile options = ['--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages'] launcher { - name = 'Roomit' + name = 'RoomIt' } } jlinkZip { group = 'distribution' } - -// 打包排除的文件 -sourceSets { - main { - // 排除resources静态资源文件夹里面的文件 - resources { - exclude 'org/rococy/roomit/config.json' - } - } -} \ No newline at end of file diff --git a/src/main/resources/org/rococy/roomit/config.json b/config.json similarity index 95% rename from src/main/resources/org/rococy/roomit/config.json rename to config.json index bd563a1..78b2a22 100644 --- a/src/main/resources/org/rococy/roomit/config.json +++ b/config.json @@ -15,7 +15,7 @@ } }, "keyboard": { - "brush": "CTRL+G", + "brush": "CTRL+SHIFT+K", "rectangle": "CTRL+R", "ellipse": "CTRL+Q", "tools": "CTRL+F", diff --git a/settings.gradle b/settings.gradle index 9774c29..429d002 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -rootProject.name = "roomIt" +rootProject.name = "RoomIt" \ No newline at end of file diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 9be264c..9882c0d 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -2,7 +2,6 @@ module org.rococy.roomit { requires javafx.controls; requires javafx.fxml; requires java.desktop; - requires com.jfoenix; requires com.google.gson; requires com.sun.jna; requires com.sun.jna.platform; diff --git a/src/main/java/org/rococy/roomit/MainWindow.java b/src/main/java/org/rococy/roomit/MainWindow.java index 7fab5ee..a4aeae2 100644 --- a/src/main/java/org/rococy/roomit/MainWindow.java +++ b/src/main/java/org/rococy/roomit/MainWindow.java @@ -61,7 +61,7 @@ public class MainWindow extends Application { FXMLLoader fxmlLoader = new FXMLLoader(ResourceUtils.getResource("fxml/mainWindow.fxml")); Scene scene = new Scene(fxmlLoader.load(), ScreenUtils.getScreenWidth(), ScreenUtils.getScreenHeight()); // 场景背景透明 - scene.setFill(Paint.valueOf("#00000000")); + scene.setFill(Paint.valueOf(GlobalConsts.TRANSPARENT_COLOR)); // 设置场景 stage.setScene(scene); diff --git a/src/main/java/org/rococy/roomit/SettingWindow.java b/src/main/java/org/rococy/roomit/SettingWindow.java index fe155bd..210caab 100644 --- a/src/main/java/org/rococy/roomit/SettingWindow.java +++ b/src/main/java/org/rococy/roomit/SettingWindow.java @@ -38,7 +38,7 @@ public class SettingWindow extends Application { FXMLLoader fxmlLoader = new FXMLLoader(ResourceUtils.getResource("fxml/settingWindow.fxml")); Scene scene = new Scene(fxmlLoader.load()); // 场景填充透明背景 - scene.setFill(Paint.valueOf("#00000000")); + scene.setFill(Paint.valueOf(GlobalConsts.TRANSPARENT_COLOR)); // 设置场景 stage.setScene(scene); // 设置图标 diff --git a/src/main/java/org/rococy/roomit/ToolsWindow.java b/src/main/java/org/rococy/roomit/ToolsWindow.java index d4e063f..c6f3f51 100644 --- a/src/main/java/org/rococy/roomit/ToolsWindow.java +++ b/src/main/java/org/rococy/roomit/ToolsWindow.java @@ -39,7 +39,7 @@ public class ToolsWindow extends Application { FXMLLoader fxmlLoader = new FXMLLoader(ResourceUtils.getResource("fxml/toolsWindow.fxml")); Scene scene = new Scene(fxmlLoader.load()); // 透明背景 - scene.setFill(Paint.valueOf("#00000000")); + scene.setFill(Paint.valueOf(GlobalConsts.TRANSPARENT_COLOR)); // 设置场景 stage.setScene(scene); // 设置标题 diff --git a/src/main/java/org/rococy/roomit/TrayWindow.java b/src/main/java/org/rococy/roomit/TrayWindow.java index 5193f5d..743a049 100644 --- a/src/main/java/org/rococy/roomit/TrayWindow.java +++ b/src/main/java/org/rococy/roomit/TrayWindow.java @@ -7,6 +7,7 @@ import javafx.scene.paint.Paint; import javafx.stage.Screen; import javafx.stage.Stage; import javafx.stage.StageStyle; +import org.rococy.roomit.constant.GlobalConsts; import org.rococy.roomit.util.ResourceUtils; import java.io.IOException; @@ -30,7 +31,7 @@ public class TrayWindow extends Application { // 设置场景 stage.setScene(scene); // 场景填充透明背景 - scene.setFill(Paint.valueOf("#00000000")); + scene.setFill(Paint.valueOf(GlobalConsts.TRANSPARENT_COLOR)); // 置顶 stage.setAlwaysOnTop(true); // 取消任务栏 diff --git a/src/main/java/org/rococy/roomit/config/ConfigurationManager.java b/src/main/java/org/rococy/roomit/config/ConfigurationManager.java index 50f4aa5..dd3e7c3 100644 --- a/src/main/java/org/rococy/roomit/config/ConfigurationManager.java +++ b/src/main/java/org/rococy/roomit/config/ConfigurationManager.java @@ -8,7 +8,6 @@ import org.rococy.roomit.constant.GlobalConsts; import org.rococy.roomit.domain.*; import java.io.IOException; -import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.util.HashMap; @@ -23,23 +22,27 @@ public class ConfigurationManager { private static ShapeConfiguration shapeConfiguration; private static KeyBoardConfiguration keyBoardConfiguration; - + private static final Path CONFIGURATION_FILE_PATH = Path.of(GlobalConsts.CONFIGURATION_FILE_PATH); static { - initConfiguration(readConfigFileContent()); + try { + initConfiguration(Files.readString(CONFIGURATION_FILE_PATH)); - Runtime.getRuntime().addShutdownHook(new Thread(() -> { - Gson gson = new GsonBuilder().setPrettyPrinting().create(); - Map configMap = new HashMap<>(2); - configMap.put("shape", shapeConfiguration); - configMap.put("keyboard", keyBoardConfiguration.getKeyBoardMap()); + Runtime.getRuntime().addShutdownHook(new Thread(() -> { + Gson gson = new GsonBuilder().setPrettyPrinting().create(); + Map configMap = new HashMap<>(2); + configMap.put("shape", shapeConfiguration); + configMap.put("keyboard", keyBoardConfiguration.getKeyBoardMap()); - try { - Files.writeString(Path.of(GlobalConsts.CONFIGURATION_FILE_URL), gson.toJson(configMap)); - } catch (IOException e) { - e.printStackTrace(); - } - })); + try { + Files.writeString(CONFIGURATION_FILE_PATH, gson.toJson(configMap)); + } catch (IOException e) { + e.printStackTrace(); + } + })); + } catch (IOException e) { + e.printStackTrace(); + } } public static BrushConfiguration getBrushConfiguration() { @@ -77,13 +80,4 @@ public class ConfigurationManager { keyBoardConfiguration = new KeyBoardConfiguration(gson.fromJson(rootObject.get("keyboard"), Map.class)); } - private static String readConfigFileContent() { - try { - return Files.readString(Path.of(GlobalConsts.CONFIGURATION_FILE_URL), StandardCharsets.UTF_8); - } catch (IOException e) { - e.printStackTrace(); - } - return null; - } - } diff --git a/src/main/java/org/rococy/roomit/constant/GlobalConsts.java b/src/main/java/org/rococy/roomit/constant/GlobalConsts.java index 7d94541..8a54140 100644 --- a/src/main/java/org/rococy/roomit/constant/GlobalConsts.java +++ b/src/main/java/org/rococy/roomit/constant/GlobalConsts.java @@ -11,6 +11,11 @@ public class GlobalConsts { */ public static final String THEME_COLOR = "linear-gradient(to bottom, #f64f59, #c471ed, #12c2e9)"; + /** + * 透明色 + */ + public static final String TRANSPARENT_COLOR = "#00000000"; + /** * logo图标路径 */ @@ -18,8 +23,7 @@ public class GlobalConsts { /** * 配置文件路径 - * TODO 完成配置文件路径 打包进image文件夹,与bin目录同级 */ - public static final String CONFIGURATION_FILE_URL = "D:\\background\\IdeaProject\\RoomIt\\src\\main\\resources\\org\\rococy\\roomit\\config.json"; + public static final String CONFIGURATION_FILE_PATH = System.getProperty("user.dir") + "\\config.json"; } diff --git a/src/main/java/org/rococy/roomit/control/ResizableEllipseWrapper.java b/src/main/java/org/rococy/roomit/control/ResizableEllipseWrapper.java index f5e28fe..c326754 100644 --- a/src/main/java/org/rococy/roomit/control/ResizableEllipseWrapper.java +++ b/src/main/java/org/rococy/roomit/control/ResizableEllipseWrapper.java @@ -170,10 +170,9 @@ public class ResizableEllipseWrapper extends Resizer { * 配置项 */ private final EllipseConfiguration ellipseConfiguration = ConfigurationManager.getEllipseConfiguration(); - private static final String FILL_COLOR = "#00000000"; public InnerEllipse() { - styleMap.addStyle("-fx-fill", FILL_COLOR); + styleMap.addStyle("-fx-fill", GlobalConsts.TRANSPARENT_COLOR); styleMap.addStyle("-fx-stroke", ellipseConfiguration.getBorderColor()); styleMap.addReactStyle("-fx-stroke-width", ellipseConfiguration.getBorderWidth()); } diff --git a/src/main/java/org/rococy/roomit/control/ResizableRectangle.java b/src/main/java/org/rococy/roomit/control/ResizableRectangle.java index ff68643..18b1a00 100644 --- a/src/main/java/org/rococy/roomit/control/ResizableRectangle.java +++ b/src/main/java/org/rococy/roomit/control/ResizableRectangle.java @@ -2,6 +2,7 @@ package org.rococy.roomit.control; import javafx.scene.Parent; import org.rococy.roomit.config.ConfigurationManager; +import org.rococy.roomit.constant.GlobalConsts; import org.rococy.roomit.control.base.Resizer; import org.rococy.roomit.domain.RectangleConfiguration; import org.rococy.roomit.util.ReactStyleMap; @@ -38,7 +39,7 @@ public class ResizableRectangle extends Resizer { rectangleConfiguration = ConfigurationManager.getRectangleConfiguration(); // 填充颜色、边框颜色、边框宽度、圆角 - styleMap.addStyle("-fx-fill", "#00000000"); + styleMap.addStyle("-fx-fill", GlobalConsts.TRANSPARENT_COLOR); styleMap.addStyle("-fx-border-color", rectangleConfiguration.getBorderColor()); styleMap.addStyle("-fx-border-width", rectangleConfiguration.getBorderWidth()); styleMap.addStyle("-fx-border-style", "solid"); diff --git a/src/main/java/org/rococy/roomit/control/RoomItSlider.java b/src/main/java/org/rococy/roomit/control/RoomItSlider.java new file mode 100644 index 0000000..10fd8e1 --- /dev/null +++ b/src/main/java/org/rococy/roomit/control/RoomItSlider.java @@ -0,0 +1,26 @@ +package org.rococy.roomit.control; + +import javafx.scene.control.Slider; + +/** + * 滑动条 + * + * @author Rococy + * @date 2022/10/12 + */ +public class RoomItSlider extends Slider { + + + public RoomItSlider() { + // 显示刻度值 + this.setShowTickLabels(true); + // 刻度之间的单位距离 + this.setMajorTickUnit(1); + this.initEvents(); + } + + private void initEvents() { + this.setOnMouseReleased(e -> this.setValue(Math.round(this.getValue()))); + } + +} diff --git a/src/main/java/org/rococy/roomit/controller/SettingWindowController.java b/src/main/java/org/rococy/roomit/controller/SettingWindowController.java index 72ef50c..17a96f5 100644 --- a/src/main/java/org/rococy/roomit/controller/SettingWindowController.java +++ b/src/main/java/org/rococy/roomit/controller/SettingWindowController.java @@ -1,10 +1,9 @@ package org.rococy.roomit.controller; -import com.jfoenix.controls.JFXSlider; -import com.jfoenix.controls.JFXTextField; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.ScrollPane; +import javafx.scene.control.TextField; import javafx.scene.control.*; import javafx.scene.input.KeyEvent; import javafx.scene.input.MouseEvent; @@ -14,6 +13,7 @@ import javafx.scene.text.Text; import org.rococy.roomit.config.ConfigurationManager; import org.rococy.roomit.constant.GlobalConsts; import org.rococy.roomit.constant.KeyBoardConsts; +import org.rococy.roomit.control.RoomItSlider; import org.rococy.roomit.domain.BrushConfiguration; import org.rococy.roomit.domain.EllipseConfiguration; import org.rococy.roomit.domain.RectangleConfiguration; @@ -61,7 +61,7 @@ public class SettingWindowController { @FXML private ColorPicker brushStrokeColorPicker; @FXML - private JFXSlider brushLineWidthSlider; + private RoomItSlider brushLineWidthSlider; /** * 矩形 @@ -69,7 +69,7 @@ public class SettingWindowController { @FXML private ColorPicker rectangleBorderColorPicker; @FXML - private JFXSlider rectangleBorderWidthSlider; + private RoomItSlider rectangleBorderWidthSlider; /** * 椭圆 @@ -77,7 +77,7 @@ public class SettingWindowController { @FXML private ColorPicker ellipseBorderColorPicker; @FXML - private JFXSlider ellipseBorderWidthSlider; + private RoomItSlider ellipseBorderWidthSlider; @FXML private RadioButton transparentRadioBtn; @@ -88,23 +88,23 @@ public class SettingWindowController { * 快捷键 */ @FXML - private JFXTextField brushKeyboard; + private TextField brushKeyboard; @FXML - private JFXTextField rectangleKeyboard; + private TextField rectangleKeyboard; @FXML - private JFXTextField ellipseKeyboard; + private TextField ellipseKeyboard; @FXML - private JFXTextField toolsKeyboard; + private TextField toolsKeyboard; @FXML - private JFXTextField colorPickerKeyboard; + private TextField colorPickerKeyboard; @FXML - private JFXTextField expendMouseKeyboard; + private TextField expendMouseKeyboard; @FXML - private JFXTextField clearKeyboard; + private TextField clearKeyboard; @FXML - private JFXTextField screenshotAndCopyKeyboard; + private TextField screenshotAndCopyKeyboard; @FXML - private JFXTextField openOrCloseKeyboard; + private TextField openOrCloseKeyboard; @FXML public void switchSideButtons(MouseEvent event) { @@ -133,7 +133,7 @@ public class SettingWindowController { @FXML public void keyboardTextFieldMouseClick(MouseEvent e) { - ((JFXTextField) e.getSource()).selectAll(); + ((TextField) e.getSource()).selectAll(); } @FXML @@ -142,7 +142,7 @@ public class SettingWindowController { return; } - JFXTextField textField = (JFXTextField) e.getSource(); + TextField textField = (TextField) e.getSource(); String key = (String) textField.getUserData(); StringJoiner keyBoardJoiner = new StringJoiner("+"); @@ -217,20 +217,20 @@ public class SettingWindowController { } // 线条颜色 String strokeColor = brushConfiguration.getStrokeColor(); - brushStrokeColorPicker.setValue(Color.valueOf(strokeColor.equals(GlobalConsts.THEME_COLOR) ? "#00000000" : strokeColor)); + brushStrokeColorPicker.setValue(Color.valueOf(strokeColor.equals(GlobalConsts.THEME_COLOR) ? GlobalConsts.TRANSPARENT_COLOR : strokeColor)); // 线条粗细 brushLineWidthSlider.setValue(brushConfiguration.getLineWidth()); } private void initRectangleConfiguration() { String borderColor = rectangleConfiguration.getBorderColor(); - rectangleBorderColorPicker.setValue(Color.valueOf(borderColor.equals(GlobalConsts.THEME_COLOR) ? "#00000000" : borderColor)); + rectangleBorderColorPicker.setValue(Color.valueOf(borderColor.equals(GlobalConsts.THEME_COLOR) ? GlobalConsts.TRANSPARENT_COLOR : borderColor)); rectangleBorderWidthSlider.setValue(rectangleConfiguration.getBorderWidth()); } private void initEllipseConfiguration() { String borderColor = ellipseConfiguration.getBorderColor(); - ellipseBorderColorPicker.setValue(Color.valueOf(borderColor.equals(GlobalConsts.THEME_COLOR) ? "#00000000" : borderColor)); + ellipseBorderColorPicker.setValue(Color.valueOf(borderColor.equals(GlobalConsts.THEME_COLOR) ? GlobalConsts.TRANSPARENT_COLOR : borderColor)); ellipseBorderWidthSlider.setValue(ellipseConfiguration.getBorderWidth()); } diff --git a/src/main/java/org/rococy/roomit/cursor/RoomItCursor.java b/src/main/java/org/rococy/roomit/cursor/RoomItCursor.java index 8c0137e..1571910 100644 --- a/src/main/java/org/rococy/roomit/cursor/RoomItCursor.java +++ b/src/main/java/org/rococy/roomit/cursor/RoomItCursor.java @@ -18,11 +18,6 @@ import java.util.Map; */ public class RoomItCursor extends SVGPath { - /** - * 配置项 - */ - private static final String FILL_COLOR = GlobalConsts.THEME_COLOR; - /** * 存储鼠标尺寸的对应关系 */ @@ -51,7 +46,7 @@ public class RoomItCursor extends SVGPath { this.setRotate(-15); // 设置渐变色 - this.setStyle("-fx-fill: " + FILL_COLOR); + this.setStyle("-fx-fill: " + GlobalConsts.THEME_COLOR); // small -> 0 LogoPosition smallLogo = new LogoPosition(28, 8, 27, 10, 32, 13); @@ -95,7 +90,7 @@ public class RoomItCursor extends SVGPath { public void hide() { this.setOpacity(0); - this.mouseSymbol.fillColor("#00000000"); + this.mouseSymbol.fillColor(GlobalConsts.TRANSPARENT_COLOR); } public void setCursorLogo(MouseSymbol mouseSymbol) { diff --git a/src/main/resources/org/rococy/roomit/css/setting.css b/src/main/resources/org/rococy/roomit/css/setting.css index edda0b5..0b9d2c9 100644 --- a/src/main/resources/org/rococy/roomit/css/setting.css +++ b/src/main/resources/org/rococy/roomit/css/setting.css @@ -65,7 +65,7 @@ } .keyboard-wrapper .label { - -fx-padding: 6px 5px 0 0; + -fx-padding: 0px 5px 3px 0; -fx-font-size: 14px; } @@ -74,27 +74,6 @@ } /* 滑动条轨道 */ -.jfx-slider { - -fx-padding: 1px 0 0; - -jfx-default-thumb: #dfdfdf; - -jfx-default-track: rgba(229, 229, 229, 0.53); -} - -.jfx-slider .track { - -fx-pref-height: 8px; -} - -.jfx-slider .slider-value { - -fx-stroke: #545151; - -fx-font-size: 10.0; -} - -.jfx-text-field { - -fx-pref-width: 200px; - -fx-text-fill: #525252; - -fx-font-size: 13px; - -fx-prompt-text-fill: #ccc; - - -jfx-unfocus-color: #525252; - -jfx-focus-color: #525252; +.text-field { + -fx-alignment: center; } \ No newline at end of file diff --git a/src/main/resources/org/rococy/roomit/fxml/settingWindow.fxml b/src/main/resources/org/rococy/roomit/fxml/settingWindow.fxml index 422db22..6dea280 100644 --- a/src/main/resources/org/rococy/roomit/fxml/settingWindow.fxml +++ b/src/main/resources/org/rococy/roomit/fxml/settingWindow.fxml @@ -1,9 +1,9 @@ - - + + - @@ -64,7 +64,7 @@ - @@ -80,7 +80,7 @@ - @@ -109,55 +109,55 @@ - - - - - - - - - diff --git a/src/main/resources/org/rococy/roomit/fxml/toolsWindow.fxml b/src/main/resources/org/rococy/roomit/fxml/toolsWindow.fxml index 08c1a06..899e71f 100644 --- a/src/main/resources/org/rococy/roomit/fxml/toolsWindow.fxml +++ b/src/main/resources/org/rococy/roomit/fxml/toolsWindow.fxml @@ -4,6 +4,7 @@ +