Mega Code Archive

 
Categories / Java / Swing JFC
 

Desktop Manager Demo

import java.beans.PropertyVetoException; import javax.swing.border.*; import javax.swing.*; import java.awt.event.*; import java.awt.*; public class DesktopManagerDemo extends JFrame implements ActionListener{   protected int m_count;   protected int m_tencount;   protected JButton m_newFrame;   protected JDesktopPane m_desktop;   protected JComboBox m_UIBox;   protected UIManager.LookAndFeelInfo[] m_infos;   protected JLabel m_lActivates, m_lBegindrags, m_lBeginresizes, m_lCloses,      m_lDeactivates, m_lDeiconifies, m_lDrags, m_lEnddrags, m_lEndresizes,     m_lIconifies, m_lMaximizes, m_lMinimizes, m_lOpens, m_lResizes, m_lSetbounds;   protected MyDesktopManager m_myDesktopManager;   protected DMEventCanvas m_dmEventCanvas;   protected Timer m_eventTimer;        public DesktopManagerDemo() {     setTitle("Animated DesktopManager");     m_count = m_tencount = 0;     JPanel innerListenerPanel = new JPanel(new GridLayout(15,1));     JPanel listenerPanel = new JPanel(new BorderLayout());     m_dmEventCanvas = new DMEventCanvas();              m_lActivates = new JLabel("activateFrame");     m_lBegindrags = new JLabel("beginDraggingFrame");     m_lBeginresizes = new JLabel("beginResizingFrame");     m_lCloses = new JLabel("closeFrame");     m_lDeactivates = new JLabel("deactivateFrame");     m_lDeiconifies = new JLabel("deiconifyFrame");     m_lDrags = new JLabel("dragFrame");     m_lEnddrags = new JLabel("endDraggingFrame");     m_lEndresizes = new JLabel("endResizingFrame");     m_lIconifies = new JLabel("iconifyFrame");     m_lMaximizes = new JLabel("maximizeFrame");     m_lMinimizes = new JLabel("minimizeFrame");     m_lOpens = new JLabel("openFrame");     m_lResizes = new JLabel("resizeFrame");     m_lSetbounds = new JLabel("setBoundsForFrame");     innerListenerPanel.add(m_lActivates);     innerListenerPanel.add(m_lBegindrags);     innerListenerPanel.add(m_lBeginresizes);     innerListenerPanel.add(m_lCloses);     innerListenerPanel.add(m_lDeactivates);     innerListenerPanel.add(m_lDeiconifies);     innerListenerPanel.add(m_lDrags);     innerListenerPanel.add(m_lEnddrags);     innerListenerPanel.add(m_lEndresizes);     innerListenerPanel.add(m_lIconifies);     innerListenerPanel.add(m_lMaximizes);     innerListenerPanel.add(m_lMinimizes);     innerListenerPanel.add(m_lOpens);     innerListenerPanel.add(m_lResizes);     innerListenerPanel.add(m_lSetbounds);     listenerPanel.add("Center", m_dmEventCanvas);     listenerPanel.add("West", innerListenerPanel);     listenerPanel.setOpaque(true);     listenerPanel.setBackground(Color.white);     m_myDesktopManager = new MyDesktopManager();     m_desktop = new JDesktopPane();     m_desktop.setDesktopManager(m_myDesktopManager);     m_desktop.setBorder(new SoftBevelBorder(BevelBorder.LOWERED));     m_newFrame = new JButton("New Frame");     m_newFrame.addActionListener(this);     m_infos = UIManager.getInstalledLookAndFeels();     String[] LAFNames = new String[m_infos.length];     for(int i=0; i<m_infos.length; i++) {       LAFNames[i] = m_infos[i].getName();     }     m_UIBox = new JComboBox(LAFNames);     m_UIBox.addActionListener(this);     JPanel topPanel = new JPanel(true);     topPanel.setLayout(new FlowLayout());     topPanel.setBorder(new CompoundBorder(       new SoftBevelBorder(BevelBorder.LOWERED),       new CompoundBorder(new EmptyBorder(2,2,2,2),         new SoftBevelBorder(BevelBorder.RAISED))));     getContentPane().setLayout(new BorderLayout());     getContentPane().add("North", topPanel);     getContentPane().add("Center", m_desktop);     getContentPane().add("South", listenerPanel);     ((JPanel) getContentPane()).setBorder(new CompoundBorder(       new SoftBevelBorder(BevelBorder.LOWERED),       new CompoundBorder(new EmptyBorder(1,1,1,1),         new SoftBevelBorder(BevelBorder.RAISED))));     topPanel.add(m_newFrame);     topPanel.add(new JLabel("Look & Feel:",SwingConstants.RIGHT));     topPanel.add(m_UIBox);     setSize(645,600);     Dimension dim = getToolkit().getScreenSize();     setLocation(dim.width/2-getWidth()/2,       dim.height/2-getHeight()/2);     setVisible(true);     WindowListener l = new WindowAdapter() {       public void windowClosing(WindowEvent e) {         System.exit(0);       }     };            addWindowListener(l);     m_eventTimer = new Timer(1000, this);     m_eventTimer.setRepeats(true);     m_eventTimer.start();   }   public void newFrame() {     JInternalFrame jif = new JInternalFrame("Frame " + m_count,        true, true, true, true);     jif.setBounds(20*(m_count%10) + m_tencount*80,        20*(m_count%10), 200, 200);     JLabel label = new JLabel();     label.setBackground(Color.white);     label.setOpaque(true);     jif.getContentPane().add(label);     m_desktop.add(jif);     try {                   jif.setSelected(true);             }     catch (PropertyVetoException pve) {       System.out.println("Could not select " + jif.getTitle());     }     m_count++;     if (m_count%10 == 0) {       if (m_tencount < 3)         m_tencount++;       else          m_tencount = 0;     }   }   public void actionPerformed(ActionEvent e) {     if (e.getSource() == m_newFrame)       newFrame();     else if (e.getSource() == m_eventTimer) {       m_dmEventCanvas.render(m_myDesktopManager.getCounts());       m_myDesktopManager.clearCounts();     }     else if (e.getSource() == m_UIBox) {       try {         m_UIBox.hidePopup(); //BUG WORKAROUND         UIManager.setLookAndFeel(m_infos[m_UIBox.getSelectedIndex()].getClassName());         SwingUtilities.updateComponentTreeUI(this);       }       catch(Exception ex) {         System.out.println("Could not load " +            m_infos[m_UIBox.getSelectedIndex()].getClassName());       }     }   }     public static void main(String[] args) {     new DesktopManagerDemo();   } } class MyDesktopManager  extends DefaultDesktopManager {   protected int[] m_counts = new int[15];   public void clearCounts() {     for (int i=0; i<15; i++) {       m_counts[i] = 0;     }   }   public int[] getCounts() { return m_counts; }        public void activateFrame(JInternalFrame f) {     super.activateFrame(f);     m_counts[0]++;   }   public void beginDraggingFrame(JComponent f) {      m_counts[1]++;    }   public void beginResizingFrame(JComponent f, int direction) {      m_counts[2]++;    }   public void closeFrame(JInternalFrame f) {     super.closeFrame(f);     m_counts[3]++;   }   public void deactivateFrame(JInternalFrame f) {     super.deactivateFrame(f);     m_counts[4]++;   }   public void deiconifyFrame(JInternalFrame f) {     super.deiconifyFrame(f);     m_counts[5]++;   }   public void dragFrame(JComponent f, int newX, int newY) {     f.setLocation(newX, newY);     m_counts[6]++;   }   public void endDraggingFrame(JComponent f) {     m_counts[7]++;   }   public void endResizingFrame(JComponent f) {     m_counts[8]++;   }   public void iconifyFrame(JInternalFrame f) {     super.iconifyFrame(f);     m_counts[9]++;   }   public void maximizeFrame(JInternalFrame f) {     super.maximizeFrame(f);     m_counts[10]++;   }   public void minimizeFrame(JInternalFrame f) {     super.minimizeFrame(f);     m_counts[11]++;   }   public void openFrame(JInternalFrame f) {     m_counts[12]++;   }   public void resizeFrame(JComponent f,    int newX, int newY, int newWidth, int newHeight) {     f.setBounds(newX, newY, newWidth, newHeight);     m_counts[13]++;   }   public void setBoundsForFrame(JComponent f,    int newX, int newY, int newWidth, int newHeight) {     f.setBounds(newX, newY, newWidth, newHeight);     m_counts[14]++;   } } class DMEventCanvas extends JComponent {   protected Color[] m_colors = new Color[15];   protected int[][] m_arrays = new int[15][12];   public DMEventCanvas() {     setPreferredSize(new Dimension(505,255));     for (int i=0; i<15; i++) {       m_arrays[i] = new int[12];       m_colors[i] = new Color(37+i*4, 37+i*4, 37+i*4);     }   }   public void paintEventSquare(Graphics g, int value, int currwidth,     int currheight, int cellwidth, int cellheight, Color color) {     if(value != 0) {       g.setColor(color);       g.fillRect(currwidth, currheight, cellwidth, cellheight);        g.setColor(Color.green);       g.drawString("" + value, currwidth + 5, currheight + 14);     }     g.setColor(Color.black);     g.drawRect(currwidth, currheight, cellwidth, cellheight);   }   public void paintComponent(Graphics g) {     int cellheight = 17;     int cellwidth = 42;     int currwidth = 0;     int currheight = 0;     for (int i=0; i < 12; i++) {       for (int j=0; j < 15; j++) {         paintEventSquare(g, m_arrays[j][i], currwidth, currheight,           cellwidth, cellheight, m_colors[j]);         currheight += cellheight;       }       currheight = 0;       currwidth += cellwidth;     }   }   public void render(int[] counts) {     for (int i=0; i < 11; i++) {       for (int j=0; j < 15; j++) {                     m_arrays[j][i] = m_arrays[j][i+1];       }     }     for (int k=0; k < 15; k++) {       m_arrays[k][11] = counts[k];     }     paintImmediately(new Rectangle(20,20,505,255));   } }