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

📄 browserview.java

📁 用java 编写的源码开放的文本编辑器。有很多有用的特性
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		{			public int getSize() { return model.length; }			public Object getElementAt(int i) { return model[i]; }		});	} //}}}	//}}}	//{{{ Inner classes	//{{{ ClearTypeSelect	class ClearTypeSelect implements ActionListener	{		public void actionPerformed(ActionEvent evt)		{			typeSelectBuffer.setLength(0);			browser.filesSelected();		}	} //}}}	//{{{ ParentDirectoryRenderer class	class ParentDirectoryRenderer extends DefaultListCellRenderer	{		Font plainFont, boldFont;		ParentDirectoryRenderer()		{			plainFont = UIManager.getFont("Tree.font");			boldFont = new Font(plainFont.getName(),Font.BOLD,plainFont.getSize());		}		public Component getListCellRendererComponent(			JList list,			Object value,			int index,			boolean isSelected,			boolean cellHasFocus)		{			super.getListCellRendererComponent(list,value,index,				isSelected,cellHasFocus);			ParentDirectoryRenderer.this.setBorder(new EmptyBorder(				1,index * 5 + 1,1,1));			if(value instanceof LoadingPlaceholder)			{				ParentDirectoryRenderer.this.setFont(plainFont);				setIcon(showIcons ? FileCellRenderer.loadingIcon : null);				setText(jEdit.getProperty("vfs.browser.tree.loading"));			}			else if(value instanceof VFS.DirectoryEntry)			{				VFS.DirectoryEntry dirEntry = (VFS.DirectoryEntry)value;				ParentDirectoryRenderer.this.setFont(boldFont);				setIcon(showIcons ? FileCellRenderer.getIconForFile(dirEntry,true)					: null);				setText(dirEntry.name);			}			else if(value == null)				setText("VFS does not follow VFS API");			return this;		}	} //}}}	//{{{ MouseHandler class	class MouseHandler extends MouseAdapter	{		public void mousePressed(MouseEvent evt)		{			int row = parentDirectories.locationToIndex(evt.getPoint());			if(row != -1)			{				Object obj = parentDirectories.getModel()					.getElementAt(row);				if(obj instanceof VFS.DirectoryEntry)				{					VFS.DirectoryEntry dirEntry = ((VFS.DirectoryEntry)obj);					if(GUIUtilities.isPopupTrigger(evt))					{						if(popup != null && popup.isVisible())						{							popup.setVisible(false);							popup = null;						}						else						{							parentDirectories.setSelectedIndex(row);							showFilePopup(new VFS.DirectoryEntry[] {								dirEntry },parentDirectories,								evt.getPoint());						}					}				}			}		}		public void mouseReleased(MouseEvent evt)		{			if(evt.getClickCount() % 2 != 0 &&				!GUIUtilities.isMiddleButton(evt.getModifiers()))				return;			int row = parentDirectories.locationToIndex(evt.getPoint());			if(row != -1)			{				Object obj = parentDirectories.getModel()					.getElementAt(row);				if(obj instanceof VFS.DirectoryEntry)				{					VFS.DirectoryEntry dirEntry = ((VFS.DirectoryEntry)obj);					if(!GUIUtilities.isPopupTrigger(evt))					{						browser.setDirectory(dirEntry.path);						focusOnFileView();					}				}			}		}	} //}}}	//{{{ BrowserJTree class	class BrowserJTree extends JTree	{		//{{{ BrowserJTree constructor		BrowserJTree(TreeModel model)		{			super(model);			ToolTipManager.sharedInstance().registerComponent(this);		} //}}}		//{{{ getToolTipText() method		public final String getToolTipText(MouseEvent evt)		{			TreePath path = getPathForLocation(evt.getX(), evt.getY());			if(path != null)			{				Rectangle cellRect = getPathBounds(path);				if(cellRect != null && !cellRectIsVisible(cellRect))					return path.getLastPathComponent().toString();			}			return null;		} //}}}		/* //{{{ getToolTipLocation() method		public final Point getToolTipLocation(MouseEvent evt)		{			TreePath path = getPathForLocation(evt.getX(), evt.getY());			if(path != null)			{				Rectangle cellRect = getPathBounds(path);				if(cellRect != null && !cellRectIsVisible(cellRect))				{					return new Point(cellRect.x + (showIcons ? 14 : - 4),						cellRect.y);				}			}			return null;		} //}}} */		//{{{ processKeyEvent() method		public void processKeyEvent(KeyEvent evt)		{			// could make things somewhat easier...			// ... but KeyEventWorkaround 'output contract' will			// change in 4.1, so not a good idea			//evt = KeyEventWorkaround.processKeyEvent(evt);			//if(evt == null)			//	return;			if(evt.getID() == KeyEvent.KEY_PRESSED)			{				switch(evt.getKeyCode())				{				case KeyEvent.VK_UP:				case KeyEvent.VK_DOWN:					super.processKeyEvent(evt);					if(browser.getMode() != VFSBrowser.BROWSER)						browser.filesSelected();					break;				case KeyEvent.VK_ENTER:					browser.filesActivated((evt.isShiftDown()						? VFSBrowser.M_OPEN_NEW_VIEW						: VFSBrowser.M_OPEN),false);					evt.consume();					break;				case KeyEvent.VK_LEFT:					String directory = browser.getDirectory();					browser.setDirectory(MiscUtilities						.getParentOfPath(directory));					evt.consume();					break;				}			}			else if(evt.getID() == KeyEvent.KEY_TYPED)			{				if(evt.isControlDown() || evt.isAltDown()					|| evt.isMetaDown())				{					return;				}				// hack...				if(evt.isShiftDown() && evt.getKeyChar() == '\n')					return;				switch(evt.getKeyChar())				{				case '~':					browser.setDirectory(System.getProperty("user.home"));					break;				case '/':					browser.rootDirectory();					break;				case '-':					View view = browser.getView();					Buffer buffer = view.getBuffer();					browser.setDirectory(buffer.getDirectory());					break;				default:					typeSelectBuffer.append(evt.getKeyChar());					doTypeSelect(typeSelectBuffer.toString(),true);					timer.stop();					timer.setInitialDelay(750);					timer.setRepeats(false);					timer.start();					break;				}				return;			}			if(!evt.isConsumed())				super.processKeyEvent(evt);		} //}}}		//{{{ processMouseEvent() method		protected void processMouseEvent(MouseEvent evt)		{			//ToolTipManager ttm = ToolTipManager.sharedInstance();			TreePath path = getPathForLocation(evt.getX(),evt.getY());			switch(evt.getID())			{			/* //{{{ MOUSE_ENTERED...			case MouseEvent.MOUSE_ENTERED:				toolTipInitialDelay = ttm.getInitialDelay();				toolTipReshowDelay = ttm.getReshowDelay();				ttm.setInitialDelay(200);				ttm.setReshowDelay(0);				super.processMouseEvent(evt);				break; //}}}			//{{{ MOUSE_EXITED...			case MouseEvent.MOUSE_EXITED:				ttm.setInitialDelay(toolTipInitialDelay);				ttm.setReshowDelay(toolTipReshowDelay);				super.processMouseEvent(evt);				break; //}}} */			//{{{ MOUSE_CLICKED...			case MouseEvent.MOUSE_CLICKED:				if(path != null)				{					// A double click is not only when clickCount == 2					// because every other click can open a new directory					if((evt.getModifiers() & MouseEvent.BUTTON1_MASK) != 0						&& evt.getClickCount() % 2 == 0)					{						setSelectionPath(path);						// don't pass double-clicks to tree, otherwise						// directory nodes will be expanded and we don't						// want that						browser.filesActivated((evt.isShiftDown()							? VFSBrowser.M_OPEN_NEW_VIEW							: VFSBrowser.M_OPEN),true);						break;					}					else if(GUIUtilities.isMiddleButton(evt.getModifiers()))					{						browser.filesActivated((evt.isShiftDown()							? VFSBrowser.M_OPEN_NEW_VIEW							: VFSBrowser.M_OPEN),true);					}					else if((evt.getModifiers() & MouseEvent.BUTTON1_MASK) != 0)					{						if(!isPathSelected(path))							setSelectionPath(path);					}					super.processMouseEvent(evt);					break;				}				else if(GUIUtilities.isPopupTrigger(evt))					break;			//}}}			//{{{ MOUSE_PRESSED...			case MouseEvent.MOUSE_PRESSED:				if((evt.getModifiers() & MouseEvent.BUTTON1_MASK) != 0)				{					if(evt.getClickCount() % 2 == 0)						break;				}				if(GUIUtilities.isMiddleButton(evt.getModifiers()))				{					if(!isPathSelected(path))						setSelectionPath(path);				}				else if(GUIUtilities.isPopupTrigger(evt))				{					if(popup != null && popup.isVisible())					{						popup.setVisible(false);						popup = null;						break;					}					if(path == null)						showFilePopup(null,this,evt.getPoint());					else					{						if(!isPathSelected(path))							setSelectionPath(path);						showFilePopup(getSelectedFiles(),this,evt.getPoint());					}					break;				}				super.processMouseEvent(evt);				break;			//}}}			//{{{ MOUSE_RELEASED...			case MouseEvent.MOUSE_RELEASED:				if(!GUIUtilities.isPopupTrigger(evt)					&& path != null)				{					browser.filesSelected();				}				if(evt.getClickCount() % 2 != 0)					super.processMouseEvent(evt);				break;			//}}}			default:				super.processMouseEvent(evt);				break;			}		} //}}}		//{{{ Private members		private int toolTipInitialDelay = -1;		private int toolTipReshowDelay = -1;		//{{{ cellRectIsVisible() method		private boolean cellRectIsVisible(Rectangle cellRect)		{			Rectangle vr = BrowserJTree.this.getVisibleRect();			return vr.contains(cellRect.x,cellRect.y) &&				vr.contains(cellRect.x + cellRect.width,				cellRect.y + cellRect.height);		} //}}}		//{{{ doTypeSelect() method		void doTypeSelect(String str, boolean ignoreCase)		{			if(getSelectionCount() == 0)				doTypeSelect(str,0,getRowCount(),ignoreCase);			else			{				int start = getMaxSelectionRow();				boolean retVal = doTypeSelect(str,start,getRowCount(),					ignoreCase);				if(!retVal)				{					// scan from selection to end failed, so					// scan from start to selection					doTypeSelect(str,0,start,ignoreCase);				}			}		} //}}}		//{{{ doTypeSelect() method		private boolean doTypeSelect(String str, int start, int end,			boolean ignoreCase)		{			for(int i = start; i < end; i++)			{				DefaultMutableTreeNode treeNode = (DefaultMutableTreeNode)					getPathForRow(i).getLastPathComponent();				Object obj = treeNode.getUserObject();				if(obj instanceof VFS.DirectoryEntry)				{					VFS.DirectoryEntry file = (VFS.DirectoryEntry)obj;					String matchAgainst = (MiscUtilities.isAbsolutePath(str)						? file.path : file.name);					if(matchAgainst.regionMatches(ignoreCase,						0,str,0,str.length()))					{						setSelectionRow(i);						scrollRowToVisible(i);						return true;					}				}			}			return false;		} //}}}		//}}}	} //}}}	//{{{ TreeHandler class	class TreeHandler implements TreeExpansionListener	{		//{{{ treeExpanded() method		public void treeExpanded(TreeExpansionEvent evt)		{			TreePath path = evt.getPath();			DefaultMutableTreeNode treeNode = (DefaultMutableTreeNode)				path.getLastPathComponent();			Object userObject = treeNode.getUserObject();			if(userObject instanceof VFS.DirectoryEntry)			{				loadDirectory(treeNode,((VFS.DirectoryEntry)					userObject).path,true);			}		} //}}}		//{{{ treeCollapsed() method		public void treeCollapsed(TreeExpansionEvent evt)		{			TreePath path = evt.getPath();			DefaultMutableTreeNode treeNode = (DefaultMutableTreeNode)				path.getLastPathComponent();			if(treeNode.getUserObject() instanceof VFS.DirectoryEntry)			{				// we add the placeholder so that the node has				// 1 child (otherwise the user won't be able to				// expand it again)				treeNode.removeAllChildren();				treeNode.add(new DefaultMutableTreeNode(new LoadingPlaceholder(),false));				model.reload(treeNode);			}		} //}}}	} //}}}	static class LoadingPlaceholder {}	//}}}}

⌨️ 快捷键说明

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