home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161a.iso / handson / files / copyjava.exe / com / sun / java / swing / plaf / basic / BasicInternalFrameTitlePane.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  8.4 KB  |  305 lines

  1. package com.sun.java.swing.plaf.basic;
  2.  
  3. import com.sun.java.swing.AbstractButton;
  4. import com.sun.java.swing.Icon;
  5. import com.sun.java.swing.JButton;
  6. import com.sun.java.swing.JComponent;
  7. import com.sun.java.swing.JInternalFrame;
  8. import com.sun.java.swing.JMenu;
  9. import com.sun.java.swing.JMenuBar;
  10. import com.sun.java.swing.JMenuItem;
  11. import com.sun.java.swing.JSeparator;
  12. import com.sun.java.swing.UIManager;
  13. import com.sun.java.swing.event.InternalFrameEvent;
  14. import java.awt.Color;
  15. import java.awt.Component;
  16. import java.awt.Container;
  17. import java.awt.Dimension;
  18. import java.awt.Font;
  19. import java.awt.FontMetrics;
  20. import java.awt.Graphics;
  21. import java.awt.LayoutManager;
  22. import java.awt.Toolkit;
  23. import java.awt.event.ActionEvent;
  24. import java.awt.event.ActionListener;
  25. import java.beans.PropertyChangeEvent;
  26. import java.beans.PropertyChangeListener;
  27. import java.beans.PropertyVetoException;
  28. import java.util.EventObject;
  29.  
  30. public class BasicInternalFrameTitlePane extends JComponent implements LayoutManager, ActionListener, PropertyChangeListener {
  31.    JMenuBar menuBar;
  32.    JButton iconButton;
  33.    JButton maxButton;
  34.    JButton closeButton;
  35.    Icon maxIcon = UIManager.getIcon("InternalFrame.maximizeIcon");
  36.    Icon minIcon = UIManager.getIcon("InternalFrame.minimizeIcon");
  37.    Icon iconIcon = UIManager.getIcon("InternalFrame.iconifyIcon");
  38.    Icon closeIcon = UIManager.getIcon("InternalFrame.closeIcon");
  39.    JMenu windowMenu;
  40.    JInternalFrame frame;
  41.    private static Color selectedTitleColor = new Color(0, 0, 128);
  42.    private static Color selectedTextColor = new Color(255, 255, 255);
  43.    private static Color notSelectedTitleColor = new Color(128, 128, 128);
  44.    private static Color notSelectedTextColor = new Color(192, 192, 192);
  45.    final int RESTORE_MENU_ITEM;
  46.    final int MOVE_MENU_ITEM = 1;
  47.    final int SIZE_MENU_ITEM = 2;
  48.    final int MINIMIZE_MENU_ITEM = 3;
  49.    final int MAXIMIZE_MENU_ITEM = 4;
  50.    final int SEPARATOR_MENU_ITEM = 5;
  51.    final int CLOSE_MENU_ITEM = 6;
  52.    // $FF: synthetic field
  53.    static Class class$com$sun$java$swing$JInternalFrame;
  54.  
  55.    public BasicInternalFrameTitlePane(JInternalFrame var1) {
  56.       this.frame = var1;
  57.       ((JComponent)this).setPreferredSize(new Dimension(100, 18));
  58.       this.menuBar = new 1(this);
  59.       this.menuBar.setBorderPainted(false);
  60.       this.windowMenu = this.menuBar.add(new 2(this, "    "));
  61.       JMenuItem var2 = this.windowMenu.add(new JMenuItem("Restore"));
  62.       var2.setEnabled(false);
  63.       ((AbstractButton)var2).addActionListener(this);
  64.       var2 = this.windowMenu.add(new JMenuItem("Move"));
  65.       var2.setEnabled(false);
  66.       ((AbstractButton)var2).addActionListener(this);
  67.       var2 = this.windowMenu.add(new JMenuItem("Size"));
  68.       var2.setEnabled(false);
  69.       ((AbstractButton)var2).addActionListener(this);
  70.       var2 = this.windowMenu.add(new JMenuItem("Minimize"));
  71.       ((AbstractButton)var2).addActionListener(this);
  72.       var2 = this.windowMenu.add(new JMenuItem("Maximize"));
  73.       ((AbstractButton)var2).addActionListener(this);
  74.       this.windowMenu.add(new JSeparator());
  75.       var2 = this.windowMenu.add(new JMenuItem("Close"));
  76.       ((AbstractButton)var2).addActionListener(this);
  77.       this.iconButton = new NoFocusButton(this);
  78.       this.iconButton.setFocusPainted(false);
  79.       this.iconButton.addActionListener(this);
  80.       this.iconButton.setActionCommand("Iconify");
  81.       this.maxButton = new NoFocusButton(this);
  82.       this.maxButton.setFocusPainted(false);
  83.       this.maxButton.addActionListener(this);
  84.       this.maxButton.setActionCommand("Maximize");
  85.       this.setButtonIcons();
  86.       this.closeButton = new NoFocusButton(this);
  87.       this.closeButton.setIcon(this.closeIcon);
  88.       this.closeButton.setFocusPainted(false);
  89.       this.closeButton.addActionListener(this);
  90.       this.closeButton.setActionCommand("Close");
  91.       ((Container)this).setLayout(this);
  92.       ((Container)this).add(this.menuBar);
  93.       ((Container)this).add(this.iconButton);
  94.       ((Container)this).add(this.maxButton);
  95.       ((Container)this).add(this.closeButton);
  96.       this.frame.addPropertyChangeListener(this);
  97.    }
  98.  
  99.    protected void setButtonIcons() {
  100.       if (this.frame.isIcon()) {
  101.          this.iconButton.setIcon(this.minIcon);
  102.          this.maxButton.setIcon(this.maxIcon);
  103.       } else if (this.frame.isMaximum()) {
  104.          this.iconButton.setIcon(this.iconIcon);
  105.          this.maxButton.setIcon(this.minIcon);
  106.       } else {
  107.          this.iconButton.setIcon(this.iconIcon);
  108.          this.maxButton.setIcon(this.maxIcon);
  109.       }
  110.    }
  111.  
  112.    public void paint(Graphics var1) {
  113.       boolean var2 = this.frame.isSelected();
  114.       Color var3 = var1.getColor();
  115.       if (var2) {
  116.          var1.setColor(selectedTitleColor);
  117.       } else {
  118.          var1.setColor(notSelectedTitleColor);
  119.       }
  120.  
  121.       var1.fillRect(0, 0, ((JComponent)this).getWidth(), ((JComponent)this).getHeight());
  122.       if (this.frame.getTitle() != null) {
  123.          Font var4 = var1.getFont();
  124.          var1.setFont(UIManager.getFont("InternalFrame.titleFont"));
  125.          if (var2) {
  126.             var1.setColor(selectedTextColor);
  127.          } else {
  128.             var1.setColor(notSelectedTextColor);
  129.          }
  130.  
  131.          FontMetrics var5 = var1.getFontMetrics();
  132.          int var6 = var5.getHeight() - var5.getLeading();
  133.          int var7 = (18 - var6) / 2 + var5.getAscent() + var5.getLeading();
  134.          var1.drawString(this.frame.getTitle(), this.menuBar.getX() + this.menuBar.getWidth() + 2, var7);
  135.          var1.setFont(var4);
  136.       }
  137.  
  138.       var1.setColor(var3);
  139.       super.paint(var1);
  140.    }
  141.  
  142.    void postClosingEvent(JInternalFrame var1) {
  143.       InternalFrameEvent var2 = new InternalFrameEvent(var1, 25550);
  144.       if ((class$com$sun$java$swing$JInternalFrame != null ? class$com$sun$java$swing$JInternalFrame : (class$com$sun$java$swing$JInternalFrame = class$("com.sun.java.swing.JInternalFrame"))).getClassLoader() == null) {
  145.          try {
  146.             Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(var2);
  147.             return;
  148.          } catch (SecurityException var3) {
  149.          }
  150.       }
  151.  
  152.       ((Component)this).dispatchEvent(var2);
  153.    }
  154.  
  155.    public void actionPerformed(ActionEvent var1) {
  156.       if ("Close".equals(var1.getActionCommand()) && this.frame.isClosable()) {
  157.          this.postClosingEvent(this.frame);
  158.       } else {
  159.          if ("Iconify".equals(var1.getActionCommand()) && this.frame.isIconifiable()) {
  160.             if (!this.frame.isIcon()) {
  161.                try {
  162.                   this.frame.setIcon(true);
  163.                   return;
  164.                } catch (PropertyVetoException var2) {
  165.                   return;
  166.                }
  167.             }
  168.  
  169.             try {
  170.                this.frame.setIcon(false);
  171.                if (this.frame.isMaximizable() && this.frame.isMaximum()) {
  172.                   this.frame.setMaximum(false);
  173.                   return;
  174.                }
  175.             } catch (PropertyVetoException var8) {
  176.                return;
  177.             }
  178.          } else {
  179.             if ("Minimize".equals(var1.getActionCommand()) && this.frame.isIconifiable()) {
  180.                try {
  181.                   this.frame.setIcon(true);
  182.                   return;
  183.                } catch (PropertyVetoException var3) {
  184.                   return;
  185.                }
  186.             }
  187.  
  188.             if ("Maximize".equals(var1.getActionCommand()) && this.frame.isMaximizable()) {
  189.                if (!this.frame.isMaximum()) {
  190.                   try {
  191.                      this.frame.setMaximum(true);
  192.                      return;
  193.                   } catch (PropertyVetoException var4) {
  194.                      return;
  195.                   }
  196.                }
  197.  
  198.                try {
  199.                   this.frame.setMaximum(false);
  200.                   if (this.frame.isIconifiable() && this.frame.isIcon()) {
  201.                      this.frame.setIcon(false);
  202.                      return;
  203.                   }
  204.                } catch (PropertyVetoException var7) {
  205.                   return;
  206.                }
  207.             } else {
  208.                if ("Restore".equals(var1.getActionCommand()) && this.frame.isMaximizable() && this.frame.isMaximum()) {
  209.                   try {
  210.                      this.frame.setMaximum(false);
  211.                      return;
  212.                   } catch (PropertyVetoException var5) {
  213.                      return;
  214.                   }
  215.                }
  216.  
  217.                if ("Restore".equals(var1.getActionCommand()) && this.frame.isIconifiable() && this.frame.isIcon()) {
  218.                   try {
  219.                      this.frame.setIcon(false);
  220.                      return;
  221.                   } catch (PropertyVetoException var6) {
  222.                      return;
  223.                   }
  224.                }
  225.             }
  226.          }
  227.  
  228.       }
  229.    }
  230.  
  231.    public void propertyChange(PropertyChangeEvent var1) {
  232.       String var2 = var1.getPropertyName();
  233.       JInternalFrame var10000 = (JInternalFrame)((EventObject)var1).getSource();
  234.       boolean var3 = false;
  235.       if ("isSelected".equals(var2)) {
  236.          ((Component)this).repaint();
  237.       } else if ("isMaximum".equals(var2)) {
  238.          var3 = (Boolean)var1.getNewValue();
  239.          this.setButtonIcons();
  240.          this.windowMenu.getItem(0).setEnabled(var3);
  241.          this.windowMenu.getItem(4).setEnabled(!var3);
  242.       } else {
  243.          if ("isIcon".equals(var2)) {
  244.             var3 = (Boolean)var1.getNewValue();
  245.             this.setButtonIcons();
  246.             this.windowMenu.getItem(0).setEnabled(var3);
  247.             this.windowMenu.getItem(4).setEnabled(!var3);
  248.             this.windowMenu.getItem(3).setEnabled(!var3);
  249.          }
  250.  
  251.       }
  252.    }
  253.  
  254.    public void addLayoutComponent(String var1, Component var2) {
  255.    }
  256.  
  257.    public void removeLayoutComponent(Component var1) {
  258.    }
  259.  
  260.    public Dimension preferredLayoutSize(Container var1) {
  261.       return new Dimension(((Component)var1).getSize().width, 18);
  262.    }
  263.  
  264.    public Dimension minimumLayoutSize(Container var1) {
  265.       return new Dimension(((Component)var1).getSize().width, 18);
  266.    }
  267.  
  268.    public void layoutContainer(Container var1) {
  269.       int var2 = ((JComponent)this).getWidth();
  270.       int var3 = var2 - 16 - 2;
  271.       this.menuBar.setBounds(2, 1, 16, 16);
  272.       if (this.frame.isClosable()) {
  273.          this.closeButton.setBounds(var3, 2, 16, 14);
  274.          var3 -= 16;
  275.       } else if (this.closeButton.getParent() != null) {
  276.          this.closeButton.getParent().remove(this.closeButton);
  277.       }
  278.  
  279.       if (this.frame.isMaximizable()) {
  280.          this.maxButton.setBounds(var3 - 2, 2, 16, 14);
  281.          var3 -= 18;
  282.       } else if (this.maxButton.getParent() != null) {
  283.          this.maxButton.getParent().remove(this.maxButton);
  284.       }
  285.  
  286.       if (this.frame.isIconifiable()) {
  287.          this.iconButton.setBounds(var3, 2, 16, 14);
  288.       } else {
  289.          if (this.iconButton.getParent() != null) {
  290.             this.iconButton.getParent().remove(this.iconButton);
  291.          }
  292.  
  293.       }
  294.    }
  295.  
  296.    // $FF: synthetic method
  297.    static Class class$(String var0) {
  298.       try {
  299.          return Class.forName(var0);
  300.       } catch (ClassNotFoundException var2) {
  301.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  302.       }
  303.    }
  304. }
  305.