From b315a6943e6c0d6bdf0d5f7565c570d719154d6c Mon Sep 17 00:00:00 2001
From: 张世豪 <979909237@qq.com>
Date: 星期三, 17 十二月 2025 14:56:58 +0800
Subject: [PATCH] 新增了障碍物管理页面

---
 src/dikuai/addzhangaiwu.java |   51 ++++++++++++++++++++++++++-------------------------
 1 files changed, 26 insertions(+), 25 deletions(-)

diff --git a/src/dikuai/addzhangaiwu.java b/src/dikuai/addzhangaiwu.java
index bd7d8e1..5f31288 100644
--- a/src/dikuai/addzhangaiwu.java
+++ b/src/dikuai/addzhangaiwu.java
@@ -46,10 +46,12 @@
 import set.Setsys;
 import ui.UIConfig;
 import zhuye.Coordinate;
+import zhuye.MapRenderer;
 import zhuye.Shouye;
 import zhangaiwu.AddDikuai;
 import zhangaiwu.Obstacledge;
 import zhangaiwu.yulanzhangaiwu;
+import zhuye.buttonset;
 
 /**
  * 闅滅鐗╂柊澧�/缂栬緫瀵硅瘽妗嗐�傝璁¤瑷�鍙傝�� {@link AddDikuai}锛屾敮鎸侀�氳繃瀹炲湴缁樺埗閲囬泦闅滅鐗╁潗鏍囥��
@@ -286,13 +288,10 @@
     }
 
     private JButton createInlineButton(String text) {
-        JButton button = new JButton(text);
+        JButton button = buttonset.createStyledButton(text, PRIMARY_COLOR);
         button.setFont(new Font("寰蒋闆呴粦", Font.BOLD, 12));
-        button.setForeground(WHITE);
-        button.setBackground(PRIMARY_COLOR);
         button.setBorder(BorderFactory.createEmptyBorder(6, 16, 6, 16));
         button.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
-        button.setFocusPainted(false);
         Dimension size = new Dimension(72, 28);
         button.setPreferredSize(size);
         button.setMinimumSize(size);
@@ -565,6 +564,9 @@
 
         prevButton = createSecondaryButton("涓婁竴姝�");
         nextButton = createPrimaryButton("涓嬩竴姝�", 16);
+        // 璁剧疆涓嬩竴姝ユ寜閽搴︿负300鍍忕礌
+        nextButton.setPreferredSize(new Dimension(300, nextButton.getPreferredSize().height));
+        nextButton.setMaximumSize(new Dimension(300, nextButton.getPreferredSize().height));
         saveButton = createPrimaryButton("淇濆瓨", 16);
         saveButton.setVisible(false);
 
@@ -752,6 +754,10 @@
         if (option == null) {
             return;
         }
+        if (userTriggered && "handheld".equalsIgnoreCase(type) && !hasConfiguredHandheldMarker()) {
+            JOptionPane.showMessageDialog(this, "璇峰厛娣诲姞渚挎惡鎵撶偣鍣ㄧ紪鍙�", "鎻愮ず", JOptionPane.WARNING_MESSAGE);
+            return;
+        }
         if (selectedMethodPanel != null && selectedMethodPanel != option) {
             resetOptionAppearance(selectedMethodPanel);
         }
@@ -763,6 +769,11 @@
         }
     }
 
+    private boolean hasConfiguredHandheldMarker() {
+        String handheldId = Setsys.getPropertyValue("handheldMarkerId");
+        return handheldId != null && !handheldId.trim().isEmpty();
+    }
+
     private void selectShapeOption(JPanel option, String type, boolean userTriggered) {
         if (option == null) {
             return;
@@ -887,6 +898,15 @@
 
         activeDrawingShape = shape.toLowerCase(Locale.ROOT);
 
+        Shouye shouyeInstance = Shouye.getInstance();
+        if (shouyeInstance != null) {
+            shouyeInstance.setHandheldMowerIconActive("handheld".equalsIgnoreCase(method));
+            MapRenderer renderer = shouyeInstance.getMapRenderer();
+            if (renderer != null) {
+                renderer.clearIdleTrail();
+            }
+        }
+
         Coordinate.coordinates.clear();
         Coordinate.setActiveDeviceIdFilter(deviceId);
         Coordinate.setStartSaveGngga(true);
@@ -1471,20 +1491,6 @@
             JOptionPane.showMessageDialog(this, "鍐欏叆闅滅鐗╅厤缃け璐ワ紝璇烽噸璇�", "閿欒", JOptionPane.ERROR_MESSAGE);
             return;
         }
-
-        if (!Dikuai.updateField(landNumber, "obstacleCoordinates", coords)) {
-            JOptionPane.showMessageDialog(this, "鏃犳硶鏇存柊闅滅鐗╁潗鏍�", "閿欒", JOptionPane.ERROR_MESSAGE);
-            return;
-        }
-        if (originalCoords != null) {
-            if (!Dikuai.updateField(landNumber, "obstacleOriginalCoordinates", originalCoords)) {
-                JOptionPane.showMessageDialog(this, "鏃犳硶鏇存柊闅滅鐗╁師濮嬪潗鏍�", "閿欒", JOptionPane.ERROR_MESSAGE);
-                return;
-            }
-        } else if (!Dikuai.updateField(landNumber, "obstacleOriginalCoordinates", "-1")) {
-            JOptionPane.showMessageDialog(this, "鏃犳硶閲嶇疆闅滅鐗╁師濮嬪潗鏍�", "閿欒", JOptionPane.ERROR_MESSAGE);
-            return;
-        }
         Dikuai.updateField(landNumber, "updateTime", currentTime());
         Dikuai.saveToProperties();
         Dikuaiguanli.notifyExternalCreation(landNumber);
@@ -1870,15 +1876,12 @@
     }
 
     private JButton createPrimaryButton(String text, int fontSize) {
-        JButton button = new JButton(text);
+        JButton button = buttonset.createStyledButton(text, PRIMARY_COLOR);
         button.setFont(new Font("寰蒋闆呴粦", Font.BOLD, fontSize));
-        button.setBackground(PRIMARY_COLOR);
-        button.setForeground(WHITE);
         button.setBorder(BorderFactory.createCompoundBorder(
                 BorderFactory.createLineBorder(PRIMARY_DARK, 2),
                 BorderFactory.createEmptyBorder(10, 22, 10, 22)));
         button.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
-        button.setFocusPainted(false);
         button.addMouseListener(new MouseAdapter() {
             @Override
             public void mouseEntered(MouseEvent e) {
@@ -1898,15 +1901,13 @@
     }
 
     private JButton createSecondaryButton(String text) {
-        JButton button = new JButton(text);
+        JButton button = buttonset.createStyledButton(text, MEDIUM_GRAY);
         button.setFont(new Font("寰蒋闆呴粦", Font.BOLD, 16));
-        button.setBackground(MEDIUM_GRAY);
         button.setForeground(TEXT_COLOR);
         button.setBorder(BorderFactory.createCompoundBorder(
                 BorderFactory.createLineBorder(BORDER_COLOR, 2),
                 BorderFactory.createEmptyBorder(10, 22, 10, 22)));
         button.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
-        button.setFocusPainted(false);
         return button;
     }
 

--
Gitblit v1.10.0