wangting
2024-09-27 a3e87f78ee262ca9bb7d9b0c997639d5f3295890
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package com.vci.client.uif.engine.client.tree;
 
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.Border;
 
import com.vci.client.ui.image.BundleImage;
import com.vci.client.uif.engine.client.AbstractRegionPanel;
 
public class SearchTipDialog extends JDialog implements Runnable{
 
    /**
     * 
     */
    private static final long serialVersionUID = 3681983084498723386L;
    private JButton cancelButton = new JButton("取消");
    private AbstractRegionPanel treePanel = null;
    private Thread otherThread = null;
 
    public SearchTipDialog(Frame frame, Thread t, AbstractRegionPanel treePanel) {
        super(frame);
        this.treePanel = treePanel;
        otherThread = t;
        init();
        startTread();
    }
    
    private void init() {
        int px = (int) this.getParent().getLocationOnScreen().getX();
        int py = (int) this.getParent().getLocationOnScreen().getX();
        
        this.setSize(new Dimension(240, 130));
        this.setTitle("查找");
        this.setLocation(px + 20, py + 50);
        this.setModal(true);
        this.setResizable(false);
        
        JLabel label = new JLabel("正在查找导航树....");
        label.setIcon(new BundleImage().createImageIcon("search.gif"));
        
        cancelButton.setPreferredSize(new Dimension(75, 25));
        cancelButton.addActionListener(new ActionListener(){
 
            @Override
            public void actionPerformed(ActionEvent e) {
                cancelButtonActionPerformed(e);
            }});
        
        JPanel buttonPanel = new JPanel();
        buttonPanel.setLayout(new BorderLayout());
        buttonPanel.add(cancelButton, BorderLayout.EAST);
        
        JPanel newPanel = new JPanel();
        newPanel.setLayout(new BorderLayout());
        Border border = BorderFactory.createEmptyBorder(10,10,10,10);
        newPanel.setBorder(border);
        newPanel.add(label, BorderLayout.CENTER);
        newPanel.add(buttonPanel, BorderLayout.SOUTH);
        
        this.setLayout(new BorderLayout());
        this.add(newPanel);
    }
    
    private void cancelButtonActionPerformed(ActionEvent e) {
        this.dispose();
        treePanel.setCancel(true);
    }
 
    @Override
    public void run() {
        while (!this.treePanel.isFinish() && !treePanel.isCancel()) {
        }
        this.dispose();
        System.out.println("search dialog finish!");
    }
    
    public void startTread() {
        Thread t = new Thread(this);
        t.start();
        
        Thread taskThread = new Thread(){
            public void run() {
                try {
                    otherThread.start();
                    otherThread.join();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            };
        };
        taskThread.start();
    }
}