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

📄 xbrowserlayout.java

📁 XBrowser是一个完全免费并且开源的Web浏览器
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
/****************************************************************
*              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.screen;

import java.io.*;
import java.awt.*;
import java.net.*;
import java.util.*;
import java.beans.*;
import java.text.*;
import java.awt.event.*;
import java.awt.print.*;
import java.awt.datatransfer.*;
import java.awt.dnd.*;
import javax.swing.*;
import javax.swing.text.*;
import javax.swing.text.html.*;
import javax.swing.event.*;
import javax.swing.border.*;
import javax.swing.plaf.metal.*;

import xbrowser.*;
import xbrowser.doc.*;
import xbrowser.doc.event.*;
import xbrowser.container.*;
import xbrowser.container.view.*;
import xbrowser.container.event.*;
import xbrowser.plugin.*;
import xbrowser.bookmark.*;
import xbrowser.history.*;
import xbrowser.renderer.*;
import xbrowser.util.*;
import xbrowser.widgets.*;
import xbrowser.widgets.event.*;

/** Main application frame containing all layout.
 *  Knows about splash screen. Have implemented all actions accessible by UI.
 *  All menu items are here. Localization mostly activated there.
 *  Currently, menu ordering is hardcoded.
 */
public class XBrowserLayout extends XFrame implements XIBrowser, XDocumentContainerListener, XDocumentListener
{
	public XBrowserLayout()
	{
 		setTitle(XProjectConstants.PRODUCT_NAME);
    	getContentPane().setLayout(new BorderLayout());

        setIconImage( buildImageIcon(this, "image.FrameIcon").getImage() );
        setSize(windowSize);
	}

	public void init(XSplashScreen splash)
	{
		buildActions();

		mnuBookmarkQuickFile = new XBookmarkMenu();
		cmbURL = new XURLComboBox();

		buildMainToolBar();
		buildLocationBar();
		statusBar = new XStatusBar(false, true);

		spltMain.setOneTouchExpandable(true);

		registerListeners();
		constructPopupMenus();

		getContentPane().add(pnlNorth, BorderLayout.NORTH);
		getContentPane().add(pnlCenter, BorderLayout.CENTER);
		setJMenuBar( constructMenuBar() );

		addDnDAbilityTo( cmbURL.getEditor().getEditorComponent() );
		activeDocumentChanged(null);

		splash.setStatus(XRepository.getResourceManager().getProperty(this, "LoadingConfig"));
		XRepository.getConfiguration().load();
		XRepository.getCookieManager().load();
		XRepository.getCacheManager().load();
		splash.setStatus(XRepository.getResourceManager().getProperty(this, "LoadingPlugins"));
		XRepository.getPluginUIManager(); // This will start XPluginUIManager!
		XRepository.getPluginManager().load();
		splash.setStatus(XRepository.getResourceManager().getProperty(this, "LoadingBookmarks"));
		XRepository.getBookmarkManager().load();
		splash.setStatus(XRepository.getResourceManager().getProperty(this, "LoadingHistory"));
		XRepository.getHistoryManager().load();
		splash.setStatus(XRepository.getResourceManager().getProperty(this, "StartingPlugins"));
		XRepository.getPluginManager().checkAutoStartPlugins();

		//applyResourceBundle(new XResource());
	}

  	private void addDnDAbilityTo(Component comp)
	{
		new DropTarget(comp, DnDConstants.ACTION_COPY_OR_MOVE, new DropTargetListener() {
			public void drop(DropTargetDropEvent dtde)
			{
				try
				{
				DataFlavor flavor = XObjectSelection.localObjectFlavor;
				Transferable tr = dtde.getTransferable();

					if( tr.isDataFlavorSupported(flavor) && (tr.getTransferData(flavor) instanceof XAbstractBookmark) )
					{
					XAbstractBookmark abs_bm = (XAbstractBookmark)tr.getTransferData(flavor);

						dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
						abs_bm.open();
						dtde.dropComplete(true);
					}
					else
						dtde.rejectDrop();
				}
				catch( Exception e )
				{
					XRepository.getLogger().warning(this, "Error on adding DnD support!");
					XRepository.getLogger().warning(this, e);
				}
			}

			public void dragEnter(DropTargetDragEvent e) {}
			public void dragExit(DropTargetEvent e) {}
			public void dragOver(DropTargetDragEvent e) {}
			public void dropActionChanged(DropTargetDragEvent e) {}
		});
	}

    private JPanel createToolViewPanel(Component comp, String name_key, final XAction close_action)
    {
	final JPanel pnl = new JPanel( new BorderLayout(0,0) );
	JPanel pnl_north = new  JPanel( new BorderLayout(0,0) );

		pnl_north.add(buildLabel(this, name_key), BorderLayout.WEST);
		pnl_north.add(buildFlatButton(close_action, -1, -1), BorderLayout.EAST);

		pnl.add(pnl_north,BorderLayout.NORTH);
		pnl.add(comp,BorderLayout.CENTER);
		pnl.setBorder(BorderFactory.createTitledBorder(""));
		//pnl.setBorder(BorderFactory.createTitledBorder(XRepository.getResourceManager().getProperty(this, name_key)));

		/*pnl.addMouseListener( new MouseAdapter() {
			public void mouseReleased(MouseEvent e)
			{
				showPopup(e);
			}

			public void mousePressed(MouseEvent e)
			{
				showPopup(e);
			}

			public void mouseClicked(MouseEvent e)
			{
				showPopup(e);
			}

			private void showPopup(MouseEvent e)
			{
      			if( e.isPopupTrigger() )
      			{
				JPopupMenu popup = new XPopupMenu();

				    popup.add( buildMenuItem(close_action) );
      				popup.show(pnl, e.getX(), e.getY());
				}
			}
		});*/

		return pnl;
	}

    private void buildLocationBar()
    {
    GridBagLayout gridbag = new GridBagLayout();
    GridBagConstraints constraints = new GridBagConstraints();
    JButton btn_go = buildFlatButton(new GoAction(),30,25);

		btn_go = XRepository.getComponentBuilder().buildBnWLook(btn_go);

		pnlLocationBar = new JPanel(gridbag);

        constraints.fill = GridBagConstraints.HORIZONTAL;
        constraints.insets = new Insets(0,0,0,10);
		addToContainer(buildFlatButton(new BookmarkQuickFileAction(),100,25),pnlLocationBar,gridbag,constraints,3,0);

        constraints.insets = new Insets(0,2,0,2);
		addToContainer(buildLabel(this, "Address"),pnlLocationBar,gridbag,constraints,2,0);
		addToContainer(cmbURL,pnlLocationBar,gridbag,constraints,GridBagConstraints.RELATIVE,1);
		addToContainer(btn_go,pnlLocationBar,gridbag,constraints,GridBagConstraints.REMAINDER,0);
    	pnlLocationBar.setBorder( BorderFactory.createTitledBorder("") );
	}

    private void buildMainToolBar()
    {
	XPopupButton btn_back = XRepository.getComponentBuilder().buildPopupButton(backAction);
	XPopupButton btn_forward = XRepository.getComponentBuilder().buildPopupButton(forwardAction);
	Dimension separator_size = new Dimension(20,20);

		tlbNavigation = new JToolBar();

		mnuBackwardHistory = new XBackForwardHistoryPopup(XRenderer.BACKWARD_HISTORY);
		mnuForwardHistory = new XBackForwardHistoryPopup(XRenderer.FORWARD_HISTORY);

		btn_back.setPopupMenu(mnuBackwardHistory);
		btn_forward.setPopupMenu(mnuForwardHistory);

        tlbNavigation.setFloatable(false);

	    tlbNavigation.add(btn_back);
	    tlbNavigation.add(btn_forward);
		tlbNavigation.addSeparator(separator_size);

		tlbNavigation.add( buildToolbarButton(stopAction) );
		tlbNavigation.add( buildToolbarButton(reloadAction) );
		tlbNavigation.add( buildToolbarButton(homeAction) );
    	tlbNavigation.addSeparator(separator_size);

		tlbNavigation.add( buildToolbarButton(findAction) );
		tlbNavigation.add( buildToolbarButton(printAction) );
		tlbNavigation.add( buildToolbarButton(historyAction) );
    	tlbNavigation.addSeparator(separator_size);

		tlbNavigation.add( buildToolbarButton(newPageAction) );
	    //tlbNavigation.add( Box.createGlue() );
    	//tlbNavigation.add( buildSignButton(new XBrowserSignAction()) );
	}

    private void constructPopupMenus()
    {
		rightPopup = new XPopupMenu();
	    rightPopup.add( buildMenuItem(backAction) );
	    rightPopup.add( buildMenuItem(forwardAction) );
	    rightPopup.add( buildMenuItem(reloadAction) );
	    rightPopup.add( buildMenuItem(stopAction) );
		rightPopup.addSeparator();
	    rightPopup.add( buildMenuItem(addToBookmarksAction) );
		rightPopup.addSeparator();
	    rightPopup.add( buildMenuItem(pageSourceAction) );
	    rightPopup.add( buildMenuItem(pagePropertiesAction) );
		rightPopup.addSeparator();
	    rightPopup.add( buildMenuItem(saveAsAction) );
	    rightPopup.add( buildMenuItem(closeAction) );
		rightPopup.addSeparator();
	    rightPopup.add( buildMenuItem(selectAllAction) );
	    rightPopup.add( buildMenuItem(copyAction) );

		hyperLinkPopup = new XPopupMenu();
	    hyperLinkPopup.add( buildMenuItem(openInNewWindowAction) );
	    hyperLinkPopup.add( buildMenuItem(openInSameWindowAction) );
		hyperLinkPopup.addSeparator();
	    hyperLinkPopup.add( buildMenuItem(copyAction) );
	    hyperLinkPopup.add( buildMenuItem(new CopyHyperLinkAction()) );
		hyperLinkPopup.addSeparator();
	    hyperLinkPopup.add( buildMenuItem(addToBookmarksAction) );

		comboBoxPopup = new XPopupMenu();
	    comboBoxPopup.add( buildMenuItem(copyAction) );
	    comboBoxPopup.add( buildMenuItem(cutAction) );
	    comboBoxPopup.add( buildMenuItem(pasteAction) );
	    comboBoxPopup.add( buildMenuItem(selectAllAction) );
	}

    private JMenuBar constructMenuBar()
    {
	JMenu mnuFile = buildMenu(this, "File");
	JMenu mnuEdit = buildMenu(this, "Edit");
	JMenu mnuView = buildMenu(this, "View");
	JMenu mnuHistory = buildMenu(this, "History");
	JMenu mnuOptions = buildMenu(this, "Options");
	JMenu mnuWindow = buildMenu(this, "Window");
	JMenu mnuHelp = buildMenu(this, "Help");
	XPluginsMenu mnuPlugin = new XPluginsMenu();
  	JMenuBar mnubarMain = new JMenuBar();

	    mnubarMain.add(mnuFile);
		mnubarMain.add(mnuEdit);
	    mnubarMain.add(mnuView);
	    mnubarMain.add( new XBookmarkMenu() );
	    mnubarMain.add(mnuHistory);
	    mnubarMain.add(mnuOptions);
	    mnubarMain.add(mnuPlugin);
		mnubarMain.add(mnuWindow);
		mnubarMain.add(mnuHelp);

	    mnuFile.add( (newPageAction) );
	    mnuFile.add( buildMenuItem(new OpenFileAction()) );
	    mnuFile.add( buildMenuItem(new OpenURLAction()) );
	    mnuFile.add( buildMenuItem(saveAsAction) );
	    mnuFile.addSeparator();
	    mnuFile.add( buildMenuItem(printPreviewAction) );
	    mnuFile.add( buildMenuItem(printAction) );
	    mnuFile.addSeparator();
	    mnuFile.add( buildMenuItem(new ExitAction()) );

	    mnuEdit.add( buildMenuItem(cutAction) );
	    mnuEdit.add( buildMenuItem(copyAction) );
	    mnuEdit.add( buildMenuItem(pasteAction) );
	    mnuEdit.addSeparator();
	    mnuEdit.add( buildMenuItem(selectAllAction) );
	    mnuEdit.addSeparator();
	    mnuEdit.add( buildMenuItem(findAction) );
	    mnuEdit.add( buildMenuItem(findAgainAction) );

	    mnuView.add( buildMenuItem(reloadAction) );
	    mnuView.add( buildMenuItem(refreshAction) );
	    mnuView.add( buildMenuItem(stopAction) );
	    mnuView.addSeparator();
	    mnuView.add( buildMenuItem(pageSourceAction) );
	    mnuView.add( buildMenuItem(pagePropertiesAction) );
		mnuView.addSeparator();
	    mnuView.add( buildMenuItem(backAction) );
	    mnuView.add( buildMenuItem(forwardAction) );
	    mnuView.add( buildMenuItem(homeAction) );

	    mnuHistory.add( buildMenuItem(historyAction) );
	    mnuHistory.add( buildMenuItem(new SearchHistoryAction()) );
		mnuHistory.addSeparator();
	    mnuHistory.add( buildMenuItem(new ClearHistoryAction()) );

		mnuNavigationToolBar = buildCheckBoxMenuItem(new NavigationToolBarAction());
		mnuLocationToolBar = buildCheckBoxMenuItem(new LocationToolBarAction());
		mnuPersonalToolBar = buildCheckBoxMenuItem(new PersonalToolBarAction());
		mnuStatusBar = buildCheckBoxMenuItem(new StatusBarAction());
		mnuSideBar = buildCheckBoxMenuItem(new SideBarAction());

		mnuOptions.add(mnuNavigationToolBar);
		mnuOptions.add(mnuLocationToolBar);
		mnuOptions.add(mnuPersonalToolBar);
		mnuOptions.add(mnuStatusBar);
		mnuOptions.add(mnuSideBar);
		mnuOptions.addSeparator();
	    mnuOptions.add( buildMenuItem(optionsAction) );
		mnuOptions.addSeparator();
	    mnuOptions.add( buildMenuItem(setAsHomeAction) );

	    mnuPlugin.add( buildMenuItem(new PluginManagerAction()) );
		mnuPlugin.addSeparator();

	    mnuHelp.add( buildMenuItem(new HelpContentAction()) );
	    mnuHelp.add( buildMenuItem(new AcknowledgementAction()) );
	    mnuHelp.add( buildMenuItem(new XBrowserHomeAction()) );
	    mnuHelp.add( buildMenuItem(new UserGuideAction()) );
		mnuHelp.addSeparator();
	    mnuHelp.add( buildMenuItem(new AboutAction()) );

		mnuWindow.add( buildMenuItem(tileCascadeAction) );
	    mnuWindow.add( buildMenuItem(tileHorizontalAction) );
	    mnuWindow.add( buildMenuItem(tileVerticalAction) );
		mnuWindow.addSeparator();
	    mnuWindow.add( buildMenuItem(restoreAllAction) );
	    mnuWindow.add( buildMenuItem(minimizeAllAction) );
		mnuWindow.addSeparator();
	    mnuWindow.add( buildMenuItem(closeAction) );
	    mnuWindow.add( buildMenuItem(closeAllAction) );
		mnuWindow.addSeparator();
		mnuWindow.add(new XOpenDocumentsMenu());

	    mnubarMain.add( Box.createGlue() );
		mnubarMain.add( XRepository.getComponentBuilder().buildSignButton(new XBrowserSignAction()) );

		return mnubarMain;
	}

	private void addToContainer(Component comp, Container container, GridBagLayout gridbag, GridBagConstraints constraints, int grid_width, double weight_x)
	{
		constraints.gridwidth = grid_width;
		constraints.weightx = weight_x;
		gridbag.setConstraints(comp, constraints);
		container.add(comp);
	}

    private void registerListeners()
    {
		cmbURL.addComboBoxListener( new XURLComboBoxListener() {
			public void urlActivated(String url)
			{
				showInActiveDocument(url);
			}

			public void comboBoxPopupRequested(int x, int y)
			{
				comboBoxPopup.show(cmbURL,x,y);
			}
		});

		addDocumentContainerListener(this);
	}

	protected void windowClosing()
	{

⌨️ 快捷键说明

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