wangxichen преди 5 дни
родител
ревизия
53a1d1f8c7
променени са 3 файла, в които са добавени 81 реда и са изтрити 25 реда
  1. 36 1
      src/com/mes/ui/MesClient.java
  2. 43 22
      src/com/mes/ui/VisualUiEditorPanel.java
  3. 2 2
      src/resources/config/config.properties

+ 36 - 1
src/com/mes/ui/MesClient.java

@@ -18,6 +18,8 @@ import javax.swing.event.ChangeListener;
 import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.ComponentAdapter;
+import java.awt.event.ComponentEvent;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.io.BufferedReader;
@@ -891,7 +893,25 @@ public class MesClient extends JFrame {
 
 		tabbedPane.addTab("工作记录", new ImageIcon(MesClient.class.getResource("/bg/menu_data_preprocess.png")), searchScrollPane, null);
 
-        tabbedPane.addTab("UI设计", null, new VisualUiEditorPanel(indexPanelA), null);
+        VisualUiEditorPanel visualEditorPanel = new VisualUiEditorPanel(indexPanelA);
+        final JDialog visualEditorToolWindow = new JDialog(this, false);
+        visualEditorToolWindow.setTitle("UI设计工具");
+        visualEditorToolWindow.setContentPane(visualEditorPanel.createExternalToolPanel());
+        visualEditorToolWindow.pack();
+        addComponentListener(new ComponentAdapter() {
+            public void componentMoved(ComponentEvent e) {
+                if (visualEditorToolWindow.isVisible()) {
+                    positionVisualEditorToolWindow(visualEditorToolWindow);
+                }
+            }
+
+            public void componentResized(ComponentEvent e) {
+                if (visualEditorToolWindow.isVisible()) {
+                    positionVisualEditorToolWindow(visualEditorToolWindow);
+                }
+            }
+        });
+        tabbedPane.addTab("UI\u8bbe\u8ba1", null, visualEditorPanel, null);
 
 
 		tabbedPane.addChangeListener(new ChangeListener() {
@@ -900,6 +920,13 @@ public class MesClient extends JFrame {
                 JTabbedPane tabbedPane = (JTabbedPane) e.getSource();
                 int selectedIndex = tabbedPane.getSelectedIndex();
                 System.out.println("selectedIndex:"+selectedIndex);
+                boolean visualEditorSelected = tabbedPane.getComponentAt(selectedIndex) == visualEditorPanel;
+                if (visualEditorSelected) {
+                    positionVisualEditorToolWindow(visualEditorToolWindow);
+                    visualEditorToolWindow.setVisible(true);
+                } else {
+                    visualEditorToolWindow.setVisible(false);
+                }
 
                 // getCheckResult()调用已移除:原用于驱动继电器(formatDeviceState),
                 // 继电器功能已不再使用
@@ -913,6 +940,14 @@ public class MesClient extends JFrame {
         repaint();
     }
 
+    private void positionVisualEditorToolWindow(JDialog toolWindow) {
+        Point location = getLocationOnScreen();
+        int x = location.x + getWidth() - 1;
+        int y = location.y + 110;
+        toolWindow.pack();
+        toolWindow.setLocation(x, y);
+    }
+
     // 获取开班点检状态
     public static void getCheckResult(){
         try{

+ 43 - 22
src/com/mes/ui/VisualUiEditorPanel.java

@@ -11,9 +11,7 @@ import javax.swing.JComponent;
 import javax.swing.JLabel;
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
-import javax.swing.JScrollPane;
 import javax.swing.JSplitPane;
-import javax.swing.JTabbedPane;
 import javax.swing.JTextField;
 import javax.swing.KeyStroke;
 import javax.swing.SwingConstants;
@@ -59,7 +57,8 @@ public class VisualUiEditorPanel extends JPanel {
     private final Container sourceContainer;
     private final Map<String, Component> sourceComponents = new HashMap<String, Component>();
     private final JPanel canvas;
-    private final JPanel previewCanvas;
+    private JSplitPane sideContent;
+    private JButton sideToggleButton;
     private final JLabel statusLabel;
     private final Deque<String> undoStack = new ArrayDeque<String>();
     private final Deque<String> redoStack = new ArrayDeque<String>();
@@ -90,19 +89,14 @@ public class VisualUiEditorPanel extends JPanel {
         JPanel palette = createPalette();
         JPanel inspector = createInspector();
         this.canvas = createCanvas();
-        this.previewCanvas = createPreviewCanvas();
+        this.sideContent = new JSplitPane(JSplitPane.VERTICAL_SPLIT, palette, inspector);
+        this.sideToggleButton = new JButton("<");
         this.statusLabel = new JLabel("Ready");
 
-        JTabbedPane centerTabs = new JTabbedPane();
-        centerTabs.addTab("Design", new JScrollPane(canvas));
-        centerTabs.addTab("Preview", new JScrollPane(previewCanvas));
+        sideContent.setResizeWeight(0.35);
+        sideContent.setPreferredSize(new Dimension(250, 500));
 
-        JSplitPane rightSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT, palette, inspector);
-        rightSplit.setResizeWeight(0.35);
-        rightSplit.setPreferredSize(new Dimension(250, 500));
-
-        add(centerTabs, BorderLayout.CENTER);
-        add(rightSplit, BorderLayout.EAST);
+        add(canvas, BorderLayout.CENTER);
         add(statusLabel, BorderLayout.SOUTH);
 
         installShortcuts();
@@ -145,6 +139,42 @@ public class VisualUiEditorPanel extends JPanel {
         panel.add(button);
     }
 
+    public JPanel createExternalToolPanel() {
+        final JPanel panel = new JPanel(new BorderLayout());
+        sideToggleButton.setFocusable(false);
+        sideToggleButton.setPreferredSize(new Dimension(28, 40));
+        sideToggleButton.setToolTipText("Collapse palette");
+        sideToggleButton.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                toggleSideBar(panel);
+            }
+        });
+        panel.add(sideToggleButton, BorderLayout.WEST);
+        panel.add(sideContent, BorderLayout.CENTER);
+        return panel;
+    }
+
+    private void toggleSideBar(JPanel panel) {
+        boolean expanded = sideContent.getParent() == panel;
+        if (expanded) {
+            panel.remove(sideContent);
+            sideToggleButton.setText(">");
+            sideToggleButton.setToolTipText("Expand palette");
+            panel.setPreferredSize(new Dimension(30, 500));
+        } else {
+            panel.add(sideContent, BorderLayout.CENTER);
+            sideToggleButton.setText("<");
+            sideToggleButton.setToolTipText("Collapse palette");
+            panel.setPreferredSize(null);
+        }
+        panel.revalidate();
+        panel.repaint();
+        java.awt.Window window = SwingUtilities.getWindowAncestor(panel);
+        if (window != null) {
+            window.pack();
+        }
+    }
+
     private JPanel createInspector() {
         JPanel panel = new JPanel();
         panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
@@ -247,14 +277,6 @@ public class VisualUiEditorPanel extends JPanel {
         return panel;
     }
 
-    private JPanel createPreviewCanvas() {
-        JPanel panel = new JPanel(null);
-        panel.setBackground(Color.WHITE);
-        panel.setPreferredSize(new Dimension(CANVAS_WIDTH, CANVAS_HEIGHT));
-        panel.setBorder(BorderFactory.createLineBorder(new Color(180, 190, 200)));
-        return panel;
-    }
-
     private void installShortcuts() {
         bindShortcut("save", KeyStroke.getKeyStroke("control S"), new Runnable() {
             public void run() {
@@ -588,7 +610,6 @@ public class VisualUiEditorPanel extends JPanel {
 
     private void renderAll() {
         renderCanvas(canvas, true);
-        renderCanvas(previewCanvas, false);
         updateInspector();
         updateStatus(null);
     }

+ 2 - 2
src/resources/config/config.properties

@@ -1,6 +1,6 @@
 mes.gw=OP040A
-mes.server_ip=127.0.0.1
-#mes.server_ip=192.168.114.99
+#mes.server_ip=127.0.0.1
+mes.server_ip=192.168.114.99
 mes.tcp_port=3000
 mes.heart_beat_cycle=60
 mes.line_sn=XT