📄 xbrowserlayout.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.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 + -