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

📄 vfsbrowser.java

📁 用java 编写的源码开放的文本编辑器。有很多有用的特性
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
	private JPanel createMenuBar()	{		JPanel menuBar = new JPanel();		menuBar.setLayout(new BoxLayout(menuBar,BoxLayout.X_AXIS));		menuBar.setBorder(new EmptyBorder(0,0,1,0));		menuBar.add(new CommandsMenuButton());		menuBar.add(Box.createHorizontalStrut(3));		menuBar.add(new PluginsMenuButton());		menuBar.add(Box.createHorizontalStrut(3));		menuBar.add(new FavoritesMenuButton());		return menuBar;	} //}}}	//{{{ createToolBar() method	private JToolBar createToolBar()	{		JToolBar toolBar = new JToolBar();		toolBar.setFloatable(false);		toolBar.add(up = createToolButton("up"));		toolBar.add(reload = createToolButton("reload"));		toolBar.add(roots = createToolButton("roots"));		toolBar.add(home = createToolButton("home"));		toolBar.add(synchronize = createToolButton("synchronize"));		if(mode == BROWSER)			toolBar.add(newFile = createToolButton("new-file"));		toolBar.add(newDirectory = createToolButton("new-directory"));		if(mode == BROWSER)			toolBar.add(searchInDirectory = createToolButton("search-in-directory"));		return toolBar;	} //}}}	//{{{ createToolButton() method	private JButton createToolButton(String name)	{		JButton button = new RolloverButton();		String prefix = "vfs.browser.commands.";		String iconName = jEdit.getProperty(			prefix + name + ".icon");		if(iconName != null)		{			Icon icon = GUIUtilities.loadIcon(iconName);			if(icon != null)				button.setIcon(icon);			else			{				Log.log(Log.ERROR,this,"Missing icon: "					+ iconName);			}		}		else			Log.log(Log.ERROR,this,"Missing icon name: " + name);		button.setToolTipText(jEdit.getProperty(prefix + name + ".label"));		button.addActionListener(new ActionHandler());		return button;	} //}}}	//{{{ propertiesChanged() method	private void propertiesChanged()	{		showHiddenFiles = jEdit.getBooleanProperty("vfs.browser.showHiddenFiles");		sortMixFilesAndDirs = jEdit.getBooleanProperty("vfs.browser.sortMixFilesAndDirs");		sortIgnoreCase = jEdit.getBooleanProperty("vfs.browser.sortIgnoreCase");		doubleClickClose = jEdit.getBooleanProperty("vfs.browser.doubleClickClose");		browserView.propertiesChanged();		if(mode == BROWSER)		{			boolean showToolbar = jEdit.getBooleanProperty("vfs.browser.showToolbar");			if(showToolbar && toolbar == null)			{				toolbar = createToolBar();				toolbar.add(Box.createGlue());				toolbarBox.add(toolbar,0);				revalidate();			}			else if(!showToolbar && toolbar != null)			{				toolbarBox.remove(toolbar);				toolbar = null;				revalidate();			}		}		if(path != null)			reloadDirectory();	} //}}}	/* We do this stuff because the browser is not able to handle	 * more than one request yet */	//{{{ startRequest() method	private boolean startRequest()	{		if(requestRunning)		{			// dump stack trace for debugging purposes			Log.log(Log.DEBUG,this,new Throwable("For debugging purposes"));			GUIUtilities.error(this,"browser-multiple-io",null);			return false;		}		else		{			requestRunning = true;			return true;		}	} //}}}	//{{{ updateFilterEnabled() method	private void updateFilterEnabled()	{		filterField.setEnabled(filterCheckbox.isSelected());	} //}}}	//{{{ maybeReloadDirectory() method	private void maybeReloadDirectory(String dir)	{		// this is a dirty hack and it relies on the fact		// that updates for parents are sent before updates		// for the changed nodes themselves (if this was not		// the case, the browser wouldn't be updated properly		// on delete, etc).		//		// to avoid causing '> 1 request' errors, don't reload		// directory if request already active		if(requestRunning)			return;		// save a file -> sends vfs update. if a VFS file dialog box		// is shown from the same event frame as the save, the		// VFSUpdate will be delivered before the directory is loaded,		// and before the path is set.		if(path != null)		{			try			{				requestRunning = true;				browserView.maybeReloadDirectory(dir);			}			finally			{				VFSManager.runInAWTThread(new Runnable()				{					public void run()					{						requestRunning = false;					}				});			}		}	} //}}}	//}}}	//{{{ Inner classes	//{{{ ActionHandler class	class ActionHandler implements ActionListener	{		public void actionPerformed(ActionEvent evt)		{			Object source = evt.getSource();			if(source == pathField || source == filterField				|| source == filterCheckbox)			{				updateFilterEnabled();				String path = pathField.getText();				if(path != null)					setDirectory(path);				browserView.focusOnFileView();			}			else if(source == up)			{				VFS vfs = VFSManager.getVFSForPath(path);				setDirectory(vfs.getParentOfPath(path));			}			else if(source == reload)				reloadDirectory();			else if(source == roots)				rootDirectory();			else if(source == home)				setDirectory(System.getProperty("user.home"));			else if(source == synchronize)			{				Buffer buffer = view.getBuffer();				setDirectory(buffer.getDirectory());			}			else if(source == newFile)				newFile();			else if(source == newDirectory)				mkdir();			else if(source == searchInDirectory)				searchInDirectory();		}	} //}}}	//{{{ CommandsMenuButton class	class CommandsMenuButton extends JButton	{		//{{{ CommandsMenuButton constructor		CommandsMenuButton()		{			setText(jEdit.getProperty("vfs.browser.commands.label"));			setIcon(GUIUtilities.loadIcon("ToolbarMenu.gif"));			setHorizontalTextPosition(SwingConstants.LEADING);			popup = new BrowserCommandsMenu(VFSBrowser.this,null);			CommandsMenuButton.this.setRequestFocusEnabled(false);			setMargin(new Insets(1,1,1,1));			CommandsMenuButton.this.addMouseListener(new MouseHandler());			if(OperatingSystem.isMacOSLF())				CommandsMenuButton.this.putClientProperty("JButton.buttonType","toolbar");		} //}}}		BrowserCommandsMenu popup;		//{{{ MouseHandler class		class MouseHandler extends MouseAdapter		{			public void mousePressed(MouseEvent evt)			{				if(!popup.isVisible())				{					// Update 'show hidden files' check box					popup.update();					GUIUtilities.showPopupMenu(						popup,CommandsMenuButton.this,0,						CommandsMenuButton.this.getHeight(),						false);				}				else				{					popup.setVisible(false);				}			}		} //}}}	} //}}}	//{{{ PluginsMenuButton class	class PluginsMenuButton extends JButton	{		//{{{ PluginsMenuButton constructor		PluginsMenuButton()		{			setText(jEdit.getProperty("vfs.browser.plugins.label"));			setIcon(GUIUtilities.loadIcon("ToolbarMenu.gif"));			setHorizontalTextPosition(SwingConstants.LEADING);			PluginsMenuButton.this.setRequestFocusEnabled(false);			setMargin(new Insets(1,1,1,1));			PluginsMenuButton.this.addMouseListener(new MouseHandler());			popup = new JPopupMenu();			ActionHandler actionHandler = new ActionHandler();			JMenuItem mi = new JMenuItem(jEdit.getProperty(				"vfs.browser.plugins.plugin-manager.label"));			mi.setActionCommand("plugin-manager");			mi.addActionListener(actionHandler);			popup.add(mi);			popup.addSeparator();			// put them in a vector for sorting			Vector vec = new Vector();			Enumeration enum = VFSManager.getFilesystems();			while(enum.hasMoreElements())			{				VFS vfs = (VFS)enum.nextElement();				if((vfs.getCapabilities() & VFS.BROWSE_CAP) == 0)					continue;				JMenuItem menuItem = new JMenuItem(jEdit.getProperty(					"vfs." + vfs.getName() + ".label"));				menuItem.setActionCommand(vfs.getName());				menuItem.addActionListener(actionHandler);				vec.addElement(menuItem);			}			if(vec.size() != 0)			{				MiscUtilities.quicksort(vec,new MiscUtilities.MenuItemCompare());				for(int i = 0; i < vec.size(); i++)					popup.add((JMenuItem)vec.elementAt(i));			}			else			{				mi = new JMenuItem(jEdit.getProperty(					"vfs.browser.plugins.no-plugins.label"));				mi.setEnabled(false);				popup.add(mi);			}			if(OperatingSystem.isMacOSLF())				PluginsMenuButton.this.putClientProperty("JButton.buttonType","toolbar");		} //}}}		JPopupMenu popup;		//{{{ ActionHandler class		class ActionHandler implements ActionListener		{			public void actionPerformed(ActionEvent evt)			{				if(evt.getActionCommand().equals("plugin-manager"))				{					new org.gjt.sp.jedit.pluginmgr.PluginManager(						JOptionPane.getFrameForComponent(						VFSBrowser.this));				}				else				{					VFS vfs = VFSManager.getVFSByName(evt.getActionCommand());					String directory = vfs.showBrowseDialog(null,						VFSBrowser.this);					if(directory != null)						setDirectory(directory);				}			}		} //}}}		//{{{ MouseHandler class		class MouseHandler extends MouseAdapter		{			public void mousePressed(MouseEvent evt)			{				if(!popup.isVisible())				{					GUIUtilities.showPopupMenu(						popup,PluginsMenuButton.this,0,						PluginsMenuButton.this.getHeight(),						false);				}				else				{					popup.setVisible(false);				}			}		} //}}}	} //}}}	//{{{ FavoritesMenuButton class	class FavoritesMenuButton extends JButton	{		//{{{ FavoritesMenuButton constructor		FavoritesMenuButton()		{			setText(jEdit.getProperty("vfs.browser.favorites.label"));			setIcon(GUIUtilities.loadIcon("ToolbarMenu.gif"));			setHorizontalTextPosition(SwingConstants.LEADING);			FavoritesMenuButton.this.setRequestFocusEnabled(false);			setMargin(new Insets(1,1,1,1));			FavoritesMenuButton.this.addMouseListener(new MouseHandler());			if(OperatingSystem.isMacOSLF())				FavoritesMenuButton.this.putClientProperty("JButton.buttonType","toolbar");		} //}}}		JPopupMenu popup;		//{{{ ActionHandler class		class ActionHandler implements ActionListener		{			public void actionPerformed(ActionEvent evt)			{				String actionCommand = evt.getActionCommand();				if(actionCommand.equals("add-to-favorites"))				{					// if any directories are selected, add					// them, otherwise add current directory					Vector toAdd = new Vector();					VFS.DirectoryEntry[] selected = getSelectedFiles();					for(int i = 0; i < selected.length; i++)					{						VFS.DirectoryEntry file = selected[i];						if(file.type == VFS.DirectoryEntry.FILE)						{							toAdd.addElement(MiscUtilities								.getParentOfPath(file.path));						}						else							toAdd.addElement(file.path);					}					if(toAdd.size() != 0)					{						for(int i = 0; i < toAdd.size(); i++)						{							FavoritesVFS.addToFavorites((String)toAdd.elementAt(i));						}					}					else					{						if(path.equals(FavoritesVFS.PROTOCOL + ":"))						{							GUIUtilities.error(VFSBrowser.this,								"vfs.browser.recurse-favorites",								null);						}						else						{							FavoritesVFS.addToFavorites(path);						}					}				}				else					setDirectory(actionCommand);			}		} //}}}		//{{{ MouseHandler class		class MouseHandler extends MouseAdapter		{			public void mousePressed(MouseEvent evt)			{				if(popup == null || !popup.isVisible())				{					popup = new JPopupMenu();					ActionHandler actionHandler = new ActionHandler();					JMenuItem mi = new JMenuItem(						jEdit.getProperty(						"vfs.browser.favorites"						+ ".add-to-favorites.label"));					mi.setActionCommand("add-to-favorites");					mi.addActionListener(actionHandler);					popup.add(mi);					mi = new JMenuItem(						jEdit.getProperty(						"vfs.browser.favorites"						+ ".edit-favorites.label"));					mi.setActionCommand("favorites:");					mi.addActionListener(actionHandler);					popup.add(mi);					popup.addSeparator();					Object[] favorites = FavoritesVFS.getFavorites();					if(favorites.length == 0)					{						mi = new JMenuItem(							jEdit.getProperty(							"vfs.browser.favorites"							+ ".no-favorites.label"));						mi.setEnabled(false);						popup.add(mi);					}					else					{						MiscUtilities.quicksort(favorites,							new MiscUtilities.StringICaseCompare());						for(int i = 0; i < favorites.length; i++)						{							mi = new JMenuItem(favorites[i].toString());							mi.setIcon(FileCellRenderer.dirIcon);							mi.addActionListener(actionHandler);							popup.add(mi);						}					}					GUIUtilities.showPopupMenu(						popup,FavoritesMenuButton.this,0,						FavoritesMenuButton.this.getHeight(),						false);				}				else				{					popup.setVisible(false);					popup = null;				}			}		} //}}}	} //}}}	//}}}}

⌨️ 快捷键说明

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