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

📄 xbookmarktree.java

📁 java写的浏览器
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		private final ImageIcon ICON_CLOSED_BM_FOLDER = context.getComponentBuilder().buildImageIcon(XBookmarkTree.this, "image.ClosedBookmarkFolder");
		private final ImageIcon ICON_PERSONAL_CLOSED_BM_FOLDER = context.getComponentBuilder().buildImageIcon(XBookmarkTree.this, "image.PersonalClosedBookmarkFolder");
	}

	private class XTreeModel extends DefaultTreeModel implements XBookmarkFolderListener
	{
		public XTreeModel(TreeNode root)
		{
			super(root);
			context.getBookmarkManager().addBookmarkFolderListener(this);
		}

		public void bookmarkAdded(XAbstractBookmark new_abs_bm, XBookmarkFolder parent)
		{
		XMutableTreeNode parent_node = getBookmarkNode(parent,(XMutableTreeNode)getRoot());

			if( parent_node==null )
				return;

		Enumeration enum = parent_node.children();
		XAbstractBookmark abs_bm = null;
		int index = 0;

			while( enum.hasMoreElements() )
			{
				abs_bm = (XAbstractBookmark)((XMutableTreeNode)enum.nextElement()).getUserObject();

				if( comparator.compare(new_abs_bm, abs_bm)<0 )
					break;

				index++;
			}

			insertNodeInto(new XMutableTreeNode(new_abs_bm), parent_node, index);

			if( new_abs_bm instanceof XBookmarkFolder )
			{
			XBookmarkFolder folder = (XBookmarkFolder)new_abs_bm;
			Iterator it = folder.getBookmarks();

				while( it.hasNext() )
					bookmarkAdded( (XAbstractBookmark)it.next(), folder);
			}
		}

		public void bookmarkRemoved(XAbstractBookmark abs_bm, XBookmarkFolder parent)
		{
		XMutableTreeNode node = getBookmarkNode(abs_bm,(XMutableTreeNode)getRoot());

			node.removingFromParent();
			removeNodeFromParent(node);
		}

		public void personalFolderChanged(XBookmarkFolder old_folder, XBookmarkFolder new_folder)
		{
			XBookmarkTree.this.repaint();
		}

		public void clearBookmarks()
		{
			// ????
			/*
		XMutableTreeNode root = (XMutableTreeNode)getRoot();
		Enumeration enum = root.children();

			while( enum.hasMoreElements() )
				removeNodeFromParent( (XMutableTreeNode)enum.nextElement() );
				*/
		}

		private XMutableTreeNode getBookmarkNode(XAbstractBookmark abs_bm, XMutableTreeNode base_node)
		{
			if( abs_bm==null )
				return( base_node );
			else
			{
			Enumeration enum = base_node.breadthFirstEnumeration();
			XMutableTreeNode node;

				while( enum.hasMoreElements() )
				{
					node = (XMutableTreeNode)enum.nextElement();
					if( node.getUserObject()==abs_bm )
						return node;
				}

				return null;
			}
		}

	// Attributes:
		private XBookmarkComparator comparator = new XBookmarkComparator(0, true);
	}

	private class XMutableTreeNode extends DefaultMutableTreeNode implements PropertyChangeListener
	{
		public XMutableTreeNode(XAbstractBookmark abs_bm)
		{
			super(abs_bm);
			abs_bm.addPropertyChangeListener(this);
		}

		public void propertyChange(PropertyChangeEvent evt)
		{
			((XTreeModel)getModel()).nodeStructureChanged(this);
		}

		public void handleDoubleClick()
		{
			if( getUserObject() instanceof XBookmark )
				((XBookmark)getUserObject()).open();
		}

	    public boolean isLeaf()
	    {
			return( getUserObject() instanceof XBookmark );
		}

		public void removingFromParent()
		{
			((XAbstractBookmark)getUserObject()).removePropertyChangeListener(this);

		Enumeration enum = children();

			while( enum.hasMoreElements() )
				((XMutableTreeNode)enum.nextElement()).removingFromParent();
		}
	}

    private class AddToBookmarksAction extends XPluginAction
    {
        public AddToBookmarksAction()
        {
            super(XBookmarkTree.this, "AddBookmark", KeyStroke.getKeyStroke(KeyEvent.VK_D,Event.CTRL_MASK), XBookmarkTree.this.context);
        }

        public void actionPerformed(ActionEvent e)
        {
		XDocument active_doc = context.getBrowser().getDocumentContainer().getActiveDocument();

			if( active_doc!=null )
			{
			XBookmark bm = new XBookmark(active_doc.getPageCompletePath());
			XAbstractBookmark sel_abs_bm = getSelectedBookmark();

				bm.setTitle(active_doc.getPageTitle());
				((XBookmarkFolder)sel_abs_bm).addBookmark(bm);
			}
			else
				newBookmark();
        }
    }

    private class OpenAllBookmarksAction extends XPluginAction
    {
        public OpenAllBookmarksAction()
        {
            super(XBookmarkTree.this, "OpenAllBookmarks", null, XBookmarkTree.this.context);
        }

        public void actionPerformed(ActionEvent e)
        {
			((XBookmarkFolder)getSelectedBookmark()).open();
        }
    }

    private class NewBookmarkAction extends XPluginAction
    {
        public NewBookmarkAction()
        {
            super(XBookmarkTree.this, "NewBookmark", null, XBookmarkTree.this.context);
        }

        public void actionPerformed(ActionEvent e)
        {
			newBookmark();
        }
    }

    private class NewBookmarkFolderAction extends XPluginAction
    {
        public NewBookmarkFolderAction()
        {
            super(XBookmarkTree.this, "NewBookmarkFolder", null, XBookmarkTree.this.context);
        }

        public void actionPerformed(ActionEvent e)
        {
		XBookmarkFolder bm_folder = context.getBookmarkManager().createNewBookmarkFolder();

			context.getScreenManager().getBookmarkPropertiesLayout(bm_folder, (XBookmarkFolder)getSelectedBookmark()).setVisible(true);
        }
    }

    private class DeleteAction extends XPluginAction
    {
        public DeleteAction()
        {
            super(XBookmarkTree.this, "Delete", null, XBookmarkTree.this.context);
        }

        public void actionPerformed(ActionEvent e)
        {
		XAbstractBookmark sel_abs_bm = getSelectedBookmark();

			if( sel_abs_bm.getParent()!=null )
				sel_abs_bm.getParent().removeBookmark(sel_abs_bm);
			else
				((XBookmarkFolder)sel_abs_bm).removeAllBookmarks();
        }
    }

    private class PropertiesAction extends XPluginAction
    {
        public PropertiesAction()
        {
            super(XBookmarkTree.this, "Properties", null, XBookmarkTree.this.context);
        }

        public void actionPerformed(ActionEvent e)
        {
		XAbstractBookmark sel_abs_bm = getSelectedBookmark();

			if( sel_abs_bm.getParent()!=null )
				context.getScreenManager().getBookmarkPropertiesLayout(sel_abs_bm, null).setVisible(true);
        }
    }

    private class OpenBookmarkAction extends XPluginAction
    {
        public OpenBookmarkAction()
        {
            super(XBookmarkTree.this, "OpenBookmark", null, XBookmarkTree.this.context);
        }

        public void actionPerformed(ActionEvent e)
        {
		XAbstractBookmark sel_abs_bm = getSelectedBookmark();

			if( sel_abs_bm instanceof XBookmark )
				((XBookmark)sel_abs_bm).openInSamePage();
        }
    }

    private class OpenBookmarkInNewPageAction extends XPluginAction
    {
        public OpenBookmarkInNewPageAction()
        {
            super(XBookmarkTree.this, "OpenBookmarkInNewPage", null, XBookmarkTree.this.context);
        }

        public void actionPerformed(ActionEvent e)
        {
		XAbstractBookmark sel_abs_bm = getSelectedBookmark();

			if( sel_abs_bm instanceof XBookmark )
				((XBookmark)sel_abs_bm).open();
        }
    }

    private class CopyAction extends XPluginAction
    {
        public CopyAction()
        {
            super(XBookmarkTree.this, "Copy", null, XBookmarkTree.this.context);
        }

        public void actionPerformed(ActionEvent e)
        {
			getSelectedBookmark().copy();
        }
    }

    private class SetAsPersonalFolderAction extends XPluginAction
    {
        public SetAsPersonalFolderAction()
        {
            super(XBookmarkTree.this, "SetAsPersonalFolder", null, XBookmarkTree.this.context);
        }

        public void actionPerformed(ActionEvent e)
        {
		XAbstractBookmark sel_abs_bm = getSelectedBookmark();

			if( sel_abs_bm.getParent()!=null )
				((XBookmarkFolder)sel_abs_bm).setPersonalFolder(true);
        }
    }

    private class ImportBookmarksAction extends XPluginAction
    {
        public ImportBookmarksAction()
        {
            super(XBookmarkTree.this, "ImportBookmarks", null, XBookmarkTree.this.context);
        }

        public void actionPerformed(ActionEvent e)
        {
			context.getScreenManager().getImportExportBookmarksLayout(XImportExportBookmarksLayout.IMPORT_BOOKMARKS, (XBookmarkFolder)getSelectedBookmark()).setVisible(true);
        }
    }

    private class ExportBookmarksAction extends XPluginAction
    {
        public ExportBookmarksAction()
        {
            super(XBookmarkTree.this, "ExportBookmarks", null, XBookmarkTree.this.context);
        }

        public void actionPerformed(ActionEvent e)
        {
			context.getScreenManager().getImportExportBookmarksLayout(XImportExportBookmarksLayout.EXPORT_BOOKMARKS, (XBookmarkFolder)getSelectedBookmark()).setVisible(true);
        }
    }

// Attributes:
	private JPopupMenu bookmarkPopup = new XPopupMenu();
	private JPopupMenu bookmarkFolderPopup = new XPopupMenu();
	private XPluginContext context;
}

⌨️ 快捷键说明

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