package ru.gazprom.gtnn.minos.util; import java.awt.Component; import java.awt.EventQueue; import java.awt.GridBagLayout; import java.awt.event.KeyAdapter; import java.awt.event.MouseAdapter; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class DisplayInfo implements Runnable { private int cmd = 0; private String str; private JPanel pan; private Component oldGlassPane; private JFrame parentFrame; private JLabel info; public DisplayInfo(JFrame parentFrame) { this.parentFrame = parentFrame; info = new JLabel(); pan = new JPanel(); pan.setLayout(new GridBagLayout()); pan.setOpaque(false); pan.add(info); // block mouse and keyboard message pan.addMouseListener(new MouseAdapter() { }); pan.addKeyListener(new KeyAdapter() { }); } @Override public void run() { switch(cmd) { case 1: oldGlassPane = parentFrame.getGlassPane(); parentFrame.setGlassPane(pan); pan.setVisible(true); break; case 2: if(oldGlassPane != null) parentFrame.setGlassPane(oldGlassPane); pan.setVisible(false); break; case 3: info.setText(str); break; } } public void show() { cmd = 1; try { EventQueue.invokeAndWait(this); } catch (Exception e) { e.printStackTrace(); } } public void hide() { cmd = 2; try { EventQueue.invokeAndWait(this); } catch (Exception e) { e.printStackTrace(); } } public void setText(String txt) { cmd = 3; str = txt; EventQueue.invokeLater(this); } }