synthinternalframetitlepane.java
来自「java jdk 1.4的源码」· Java 代码 · 共 672 行 · 第 1/2 页
JAVA
672 行
/* * @(#)SynthInternalFrameTitlePane.java 1.14 03/01/23 * * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package com.sun.java.swing.plaf.gtk;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.plaf.*;import javax.swing.border.*;import javax.swing.event.InternalFrameEvent;import java.util.EventListener;import java.beans.PropertyChangeListener;import java.beans.PropertyChangeEvent;import java.beans.VetoableChangeListener;import java.beans.PropertyVetoException;/** * The class that manages a basic title bar * <p> * <strong>Warning:</strong> * Serialized objects of this class will not be compatible with * future Swing releases. The current serialization support is * appropriate for short term storage or RMI between applications running * the same version of Swing. As of 1.4, support for long term storage * of all JavaBeans<sup><font size="-2">TM</font></sup> * has been added to the <code>java.beans</code> package. * Please see {@link java.beans.XMLEncoder}. * * @version 1.14 01/23/03 * (originally from version 1.52 of BasicInternalFrameTitlePane) * @author David Kloba * @author Joshua Outwater * @author Steve Wilson */class SynthInternalFrameTitlePane extends JComponent implements SynthUI { protected JButton minimizeButton; protected JButton maximizeButton; protected JButton closeButton; protected JPopupMenu systemPopupMenu; protected JButton menuButton; protected JInternalFrame frame; protected Icon maximizeIcon; protected Icon restoreIcon; protected Icon minimizeIcon; protected Icon closeIcon; protected PropertyChangeListener propertyChangeListener; protected Action closeAction; protected Action maximizeAction; protected Action iconifyAction; protected Action restoreAction; protected Action moveAction; protected Action sizeAction; // PENDING: This should be looked up as needed. protected static final String CLOSE_CMD = UIManager.getString("InternalFrameTitlePane.closeButtonText"); protected static final String ICONIFY_CMD = UIManager.getString("InternalFrameTitlePane.minimizeButtonText"); protected static final String RESTORE_CMD = UIManager.getString("InternalFrameTitlePane.restoreButtonText"); protected static final String MAXIMIZE_CMD = UIManager.getString("InternalFrameTitlePane.maximizeButtonText"); protected static final String MOVE_CMD = UIManager.getString("InternalFrameTitlePane.moveButtonText"); protected static final String SIZE_CMD = UIManager.getString("InternalFrameTitlePane.sizeButtonText"); private String closeButtonToolTip; private String minimizeButtonToolTip; private String restoreButtonToolTip; private String maximizeButtonToolTip; private SynthStyle style; public SynthInternalFrameTitlePane(JInternalFrame f) { fetchStyle(this); frame = f; installTitlePane(); menuButton.setName("InternalFrameTitlePane.menuButton"); minimizeButton.setName("InternalFrameTitlePane.iconifyButton"); maximizeButton.setName("InternalFrameTitlePane.maximizeButton"); closeButton.setName("InternalFrameTitlePane.closeButton"); } public String getUIClassID() { return "InternalFrameTitlePaneUI"; } protected void installTitlePane() { installDefaults(); installListeners(); createActions(); enableActions(); createActionMap(); setLayout(createLayout()); assembleSystemMenu(); createButtons(); addSubComponents(); } public SynthContext getContext(JComponent c) { return getContext(c, getComponentState(c)); } public SynthContext getContext(JComponent c, int state) { return SynthContext.getContext(SynthContext.class, c, SynthLookAndFeel.getRegion(c), style, state); } private Region getRegion(JComponent c) { return SynthLookAndFeel.getRegion(c); } private int getComponentState(JComponent c) { if (frame != null) { if (frame.isSelected()) { return SELECTED; } } return SynthLookAndFeel.getComponentState(c); } protected void addSubComponents() { add(menuButton); add(minimizeButton); add(maximizeButton); add(closeButton); } protected void createActions() { maximizeAction = new MaximizeAction(); iconifyAction = new IconifyAction(); closeAction = new CloseAction(); restoreAction = new RestoreAction(); moveAction = new MoveAction(); sizeAction = new SizeAction(); } ActionMap createActionMap() { ActionMap map = new ActionMapUIResource(); map.put("showSystemMenu", new ShowSystemMenuAction(true)); map.put("hideSystemMenu", new ShowSystemMenuAction(false)); return map; } protected void installListeners() { if(propertyChangeListener == null) { propertyChangeListener = createPropertyChangeListener(); } frame.addPropertyChangeListener(propertyChangeListener); } protected void uninstallListeners() { frame.removePropertyChangeListener(propertyChangeListener); } private void fetchStyle(JComponent c) { SynthContext context = getContext(this, ENABLED); SynthStyle oldStyle = style; style = SynthLookAndFeel.updateStyle(context, this); if (style != oldStyle) { maximizeIcon = style.getIcon(context,"InternalFrameTitlePane.maximizeIcon"); restoreIcon = style.getIcon(context,"InternalFrameTitlePane.restoreIcon"); minimizeIcon = style.getIcon(context,"InternalFrameTitlePane.iconifyIcon"); closeIcon = style.getIcon(context,"InternalFrameTitlePane.closeIcon"); } context.dispose(); } protected void installDefaults() { closeButtonToolTip = UIManager.getString("InternalFrame.closeButtonToolTip"); minimizeButtonToolTip = UIManager.getString("InternalFrame.iconButtonToolTip"); restoreButtonToolTip = UIManager.getString("InternalFrame.restoreButtonToolTip"); maximizeButtonToolTip = UIManager.getString("InternalFrame.maxButtonToolTip"); } protected void uninstallDefaults() { SynthContext context = getContext(this, ENABLED); style.uninstallDefaults(context); context.dispose(); style = null; } protected void createButtons() { minimizeButton = createNoFocusButton(); minimizeButton.addActionListener(iconifyAction); if (minimizeButtonToolTip != null && minimizeButtonToolTip.length() != 0) { minimizeButton.setToolTipText(minimizeButtonToolTip); } maximizeButton = createNoFocusButton(); maximizeButton.addActionListener(maximizeAction); closeButton = createNoFocusButton(); closeButton.addActionListener(closeAction); if (closeButtonToolTip != null && closeButtonToolTip.length() != 0) { closeButton.setToolTipText(closeButtonToolTip); } setButtonIcons(); } protected void setButtonIcons() { if(frame.isIcon()) { if (restoreIcon != null) { minimizeButton.setIcon(restoreIcon); } if (restoreButtonToolTip != null && restoreButtonToolTip.length() != 0) { minimizeButton.setToolTipText(restoreButtonToolTip); } if (maximizeIcon != null) { maximizeButton.setIcon(maximizeIcon); } if (maximizeButtonToolTip != null && maximizeButtonToolTip.length() != 0) { maximizeButton.setToolTipText(maximizeButtonToolTip); } } else if (frame.isMaximum()) { if (minimizeIcon != null) { minimizeButton.setIcon(minimizeIcon); } if (minimizeButtonToolTip != null && minimizeButtonToolTip.length() != 0) { minimizeButton.setToolTipText(minimizeButtonToolTip); } if (restoreIcon != null) { maximizeButton.setIcon(restoreIcon); } if (restoreButtonToolTip != null && restoreButtonToolTip.length() != 0) { maximizeButton.setToolTipText(restoreButtonToolTip); } } else { if (minimizeIcon != null) { minimizeButton.setIcon(minimizeIcon); } if (minimizeButtonToolTip != null && minimizeButtonToolTip.length() != 0) { minimizeButton.setToolTipText(minimizeButtonToolTip); } if (maximizeIcon != null) { maximizeButton.setIcon(maximizeIcon); } if (maximizeButtonToolTip != null && maximizeButtonToolTip.length() != 0) { maximizeButton.setToolTipText(maximizeButtonToolTip); } } if (closeIcon != null) { closeButton.setIcon(closeIcon); } } protected void assembleSystemMenu() { systemPopupMenu = new JPopupMenu(); addSystemMenuItems(systemPopupMenu); enableActions(); menuButton = createNoFocusButton(); menuButton.setIcon(frame.getFrameIcon()); menuButton.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { Dimension dim = new Dimension(); Border border = frame.getBorder(); if (border != null) { dim.width += border.getBorderInsets(frame).left + border.getBorderInsets(frame).right; dim.height += border.getBorderInsets(frame).bottom + border.getBorderInsets(frame).top; } if (!frame.isIcon()) { systemPopupMenu.show(e.getComponent(), getX() - dim.width, getY() + getHeight() - dim.height); } else { systemPopupMenu.show(e.getComponent(), getX() - dim.width, getY() - systemPopupMenu.getPreferredSize().height - dim.height); } } }); } protected void addSystemMenuItems(JPopupMenu menu) { // PENDING: this should all be localizable! JMenuItem mi = (JMenuItem)menu.add(restoreAction); mi.setMnemonic('R'); mi = (JMenuItem)menu.add(moveAction); mi.setMnemonic('M'); mi = (JMenuItem)menu.add(sizeAction); mi.setMnemonic('S'); mi = (JMenuItem)menu.add(iconifyAction); mi.setMnemonic('n'); mi = (JMenuItem)menu.add(maximizeAction); mi.setMnemonic('x'); menu.add(new JSeparator()); mi = (JMenuItem)menu.add(closeAction); mi.setMnemonic('C'); } // SynthInternalFrameTitlePane has no UI, we'll invoke paint on it. public void paintComponent(Graphics g) { SynthContext context = getContext(this); SynthLookAndFeel.update(context, g); context.dispose(); } /** * Post a WINDOW_CLOSING-like event to the frame, so that it can * be treated like a regular Frame. */ protected void postClosingEvent(JInternalFrame frame) { InternalFrameEvent e = new InternalFrameEvent( frame, InternalFrameEvent.INTERNAL_FRAME_CLOSING); // Try posting event, unless there's a SecurityManager. if (JInternalFrame.class.getClassLoader() == null) { try { Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(e); return;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?