⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xworkbook.java

📁 XBrowser是一个完全免费并且开源的Web浏览器
💻 JAVA
字号:
/****************************************************************
*              XBrowser  -  eXtended web Browser                *
*                                                               *
*           Copyright (c) 2000-2001  Armond Avanes              *
*     Refer to ReadMe & License files for more information      *
*                                                               *
*                                                               *
*                      By: Armond Avanes                        *
*       Armond555@yahoo.com     &    Armond333@yahoo.com        *
*                http://xbrowser.sourceforge.net/               *
*****************************************************************/
package xbrowser.widgets;

import javax.swing.*;
import javax.swing.event.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;

import xbrowser.widgets.event.*;

public class XWorkbook extends JTabbedPane
{
	public XWorkbook()
	{
		super();
		addChangeListener( new ChangeListener() {
			public void stateChanged(ChangeEvent e)
			{
		    	updateSelectedTab();
			}
		});

		frameListener = new InternalFrameAdapter() {
			public void internalFrameActivated(InternalFrameEvent e)
			{
				setSelectedComponent( (Component)frames_Components.get(e.getSource()) );
			}

			public void internalFrameClosing(InternalFrameEvent e)
			{
			Component comp = (Component)frames_Components.get(e.getSource());

				if( workbookListener!=null )
					workbookListener.componentRemoved(comp);

				remove(comp);
			}
		};

		dtp = new XDesktopPane();
	}

	public void addWorkbookListener(XWorkbookListener listener)
	{
		workbookListener = listener;
	}

	public void removeWorkbookListener(XWorkbookListener listener)
	{
		if( workbookListener==listener )
			workbookListener = null;
	}

    public void updateUI()
    {
		super.updateUI();

        if( dtp!=null )
        	SwingUtilities.updateComponentTreeUI(dtp);
	}

	public void insertTab(String title, Icon icon, Component component, String tip, int index) throws IllegalArgumentException
	{
	JInternalFrame  jif = new JInternalFrame(title, true, true,	true, true);
	JPanel pnl = new JPanel(new BorderLayout());

		frames_Components.put(jif,component);
		components_Frames.put(component,jif);

		panels_Components.put(pnl,component);
		components_Panels.put(component,pnl);

		super.insertTab(title, icon, pnl, tip, index);

		if( dtp.getSize().width==0 )
			dtp.setSize(getSize());

		jif.getContentPane().setLayout( new BorderLayout() );
		jif.getContentPane().add(component,BorderLayout.CENTER);
		jif.addInternalFrameListener(frameListener);
		dtp.addInternalFrame(jif);
	}

    public Component getSelectedComponent()
    {
	Component sel_comp = super.getSelectedComponent();
	Component main_sel_comp = ( (sel_comp!=null) ? (Component)panels_Components.get(sel_comp) : null );

		return( (main_sel_comp!=null) ? main_sel_comp : sel_comp );
	}

    public void setSelectedComponent(Component c)
    {
	Component comp = (Component)components_Panels.get(c);

		super.setSelectedComponent( (comp!=null) ? comp : c );
	}

	public Component getMainComponentAt(int index)
	{
		return( (Component)panels_Components.get( getComponentAt(index) ) );
	}

    public int indexOfComponent(Component component)
    {
	Component comp = (Component)components_Panels.get(component);

		return super.indexOfComponent( (comp!=null) ? comp : component );
    }

    public void setTitleAt(int index, String title)
    {
    Component comp = (Component)panels_Components.get( (JPanel)getComponentAt(index) );
    JInternalFrame jif = (JInternalFrame)components_Frames.get(comp);

		jif.setTitle(title);

		super.setTitleAt(index,title);
	}

    private void updateSelectedTab()
    {
		// activate the frame corresponding to the
		// currently selected tab

	Component comp = getSelectedComponent();

		if( comp!=null )
		{
			try
			{
				((JInternalFrame)components_Frames.get(comp)).setSelected(true);
			}
			catch( Exception e )
			{
			}
		}

		// move the desktop pane to the selected page
	Container old_parent = dtp.getParent();
	Container new_parent = (Container) super.getSelectedComponent();

		if( old_parent!=null )
			old_parent.remove(dtp);

		if( new_parent!=null )
			new_parent.add(dtp);

		validate();
	}

    public void removeTabAt(int index)
    {
    JPanel pnl = (JPanel)getComponentAt(index);
    Component comp = (Component)panels_Components.remove(pnl);
    JInternalFrame jif = (JInternalFrame)components_Frames.remove(comp);

    	frames_Components.remove(jif);
    	components_Panels.remove(comp);

    	dtp.remove(jif);

    	super.removeTabAt(index);
    	updateSelectedTab();
	}

	public void tileCascade()
	{
		dtp.tileCascade();
	}

	public void tileHorizontal()
	{
		dtp.tileHorizontal();
	}

	public void tileVertical()
	{
		dtp.tileVertical();
	}

    public void minimizeAll()
    {
		dtp.minimizeAll();
	}

    public void restoreAll()
    {
		dtp.restoreAll();
	}

// Attributes:
	private XDesktopPane dtp;
	private InternalFrameListener frameListener;
	private XWorkbookListener workbookListener;

	private Map frames_Components = new HashMap();
	private Map components_Frames = new HashMap();
	private Map components_Panels = new HashMap();
	private Map panels_Components = new HashMap();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -