📄 xbookmarktree.java
字号:
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 + -