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

📄 searchdialog.java

📁 开源的java 编辑器源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		multifile.add(filter);		cons.gridwidth = 1;		cons.weightx = 0.0f;		cons.insets = new Insets(0,0,3,0);		synchronize = new JButton(jEdit.getProperty(			"search.synchronize"));		synchronize.setMnemonic(jEdit.getProperty(			"search.synchronize.mnemonic")			.charAt(0));		synchronize.addActionListener(actionListener);		layout.setConstraints(synchronize,cons);		multifile.add(synchronize);		cons.gridy++;		directory = new HistoryTextField("search.directory");		directory.setColumns(25);		directory.addActionListener(actionListener);		label = new JLabel(jEdit.getProperty("search.directoryField"),			SwingConstants.RIGHT);		label.setBorder(new EmptyBorder(0,0,0,12));		label.setDisplayedMnemonic(jEdit.getProperty("search.directoryField.mnemonic")			.charAt(0));		label.setLabelFor(directory);		cons.insets = new Insets(0,0,3,0);		cons.weightx = 0.0f;		layout.setConstraints(label,cons);		multifile.add(label);		cons.insets = new Insets(0,0,3,6);		cons.weightx = 1.0f;		cons.gridwidth = 2;		layout.setConstraints(directory,cons);		multifile.add(directory);		choose = new JButton(jEdit.getProperty("search.choose"));		choose.setMnemonic(jEdit.getProperty("search.choose.mnemonic")			.charAt(0));		cons.insets = new Insets(0,0,3,0);		cons.weightx = 0.0f;		cons.gridwidth = 1;		layout.setConstraints(choose,cons);		multifile.add(choose);		choose.addActionListener(actionListener);		cons.insets = new Insets(0,0,0,0);		cons.gridy++;		cons.gridwidth = 3; 		searchSubDirectories = new JCheckBox(jEdit.getProperty( 			"search.subdirs")); 		layout.setConstraints(searchSubDirectories,cons); 		multifile.add(searchSubDirectories);		return multifile;	} //}}}	//{{{ createButtonsPanel() method	private Box createButtonsPanel()	{		Box box = new Box(BoxLayout.Y_AXIS);		ButtonActionHandler actionHandler = new ButtonActionHandler();		box.add(Box.createVerticalStrut(12));		JPanel grid = new JPanel(new GridLayout(5,1,0,12));		findBtn = new JButton(jEdit.getProperty("search.findBtn"));		getRootPane().setDefaultButton(findBtn);		grid.add(findBtn);		findBtn.addActionListener(actionHandler);		/* replaceBtn = new JButton(jEdit.getProperty("search.replaceBtn"));		replaceBtn.setMnemonic(jEdit.getProperty("search.replaceBtn.mnemonic")			.charAt(0));		grid.add(replaceBtn);		replaceBtn.addActionListener(actionHandler); */		replaceAndFindBtn = new JButton(jEdit.getProperty("search.replaceAndFindBtn"));		replaceAndFindBtn.setMnemonic(jEdit.getProperty("search.replaceAndFindBtn.mnemonic")			.charAt(0));		grid.add(replaceAndFindBtn);		replaceAndFindBtn.addActionListener(actionHandler);		replaceAllBtn = new JButton(jEdit.getProperty("search.replaceAllBtn"));		replaceAllBtn.setMnemonic(jEdit.getProperty("search.replaceAllBtn.mnemonic")			.charAt(0));		grid.add(replaceAllBtn);		replaceAllBtn.addActionListener(actionHandler);		closeBtn = new JButton(jEdit.getProperty("common.close"));		grid.add(closeBtn);		closeBtn.addActionListener(actionHandler);		grid.setMaximumSize(grid.getPreferredSize());		box.add(grid);		box.add(Box.createGlue());		return box;	} //}}}	//{{{ updateEnabled() method	private void updateEnabled()	{		wrap.setEnabled(!hyperSearch.isSelected()			&& !searchSelection.isSelected());		boolean reverseEnabled = !hyperSearch.isSelected()			&& searchCurrentBuffer.isSelected()			&& !regexp.isSelected();		searchBack.setEnabled(reverseEnabled);		searchForward.setEnabled(reverseEnabled);		if(!reverseEnabled)			searchForward.setSelected(true);		filter.setEnabled(searchAllBuffers.isSelected()			|| searchDirectory.isSelected());		directory.setEnabled(searchDirectory.isSelected());		choose.setEnabled(searchDirectory.isSelected());		searchSubDirectories.setEnabled(searchDirectory.isSelected());		synchronize.setEnabled(searchAllBuffers.isSelected()			|| searchDirectory.isSelected());		findBtn.setEnabled(!searchSelection.isSelected()			|| hyperSearch.isSelected());		replaceAndFindBtn.setEnabled(!hyperSearch.isSelected()			&& !searchSelection.isSelected());	} //}}}	//{{{ save() method	/**	 * @param cancel If true, we don't bother the user with warning messages	 */	private boolean save(boolean cancel)	{		try		{			// prevents us from handling SearchSettingsChanged			// as a result of below			saving = true;			SearchAndReplace.setIgnoreCase(ignoreCase.isSelected());			SearchAndReplace.setRegexp(regexp.isSelected());			SearchAndReplace.setReverseSearch(searchBack.isSelected());			SearchAndReplace.setAutoWrapAround(wrap.isSelected());			String filter = this.filter.getText();			this.filter.addCurrentToHistory();			if(filter.length() == 0)				filter = "*";			SearchFileSet fileset = SearchAndReplace.getSearchFileSet();			boolean recurse = searchSubDirectories.isSelected();			if(searchSelection.isSelected())				fileset = new CurrentBufferSet();			else if(searchCurrentBuffer.isSelected())			{				fileset = new CurrentBufferSet();				jEdit.setBooleanProperty("search.hypersearch.toggle",					hyperSearch.isSelected());			}			else if(searchAllBuffers.isSelected())				fileset = new AllBufferSet(filter);			else if(searchDirectory.isSelected())			{				String directory = this.directory.getText();				this.directory.addCurrentToHistory();				directory = MiscUtilities.constructPath(					view.getBuffer().getDirectory(),directory);				if((VFSManager.getVFSForPath(directory).getCapabilities()					& VFS.LOW_LATENCY_CAP) == 0)				{					if(cancel)						return false;					int retVal = GUIUtilities.confirm(						SearchDialog.this,"remote-dir-search",						null,JOptionPane.YES_NO_OPTION,						JOptionPane.WARNING_MESSAGE);					if(retVal != JOptionPane.YES_OPTION)						return false;				}				if(fileset instanceof DirectoryListSet)				{					DirectoryListSet dset = (DirectoryListSet)fileset;					dset.setDirectory(directory);					dset.setFileFilter(filter);					dset.setRecursive(recurse);					EditBus.send(new SearchSettingsChanged(null));				}				else					fileset = new DirectoryListSet(directory,filter,recurse);			}			else			{				// can't happen				fileset = null;			}			jEdit.setBooleanProperty("search.subdirs.toggle",				recurse);			jEdit.setBooleanProperty("search.keepDialog.toggle",				keepDialog.isSelected());			SearchAndReplace.setSearchFileSet(fileset);			replace.addCurrentToHistory();			SearchAndReplace.setReplaceString(replace.getText());			if(find.getText().length() == 0)			{				if(!cancel)					getToolkit().beep();				return false;			}			find.addCurrentToHistory();			SearchAndReplace.setSearchString(find.getText());			return true;		}		finally		{			saving = false;		}	} //}}}	//{{{ synchronizeMultiFileSettings() method	private void synchronizeMultiFileSettings()	{		directory.setText(view.getBuffer().getDirectory());		SearchFileSet fileset = SearchAndReplace.getSearchFileSet();		if(fileset instanceof AllBufferSet)		{			filter.setText(((AllBufferSet)fileset)				.getFileFilter());		}		else		{			filter.setText("*" + MiscUtilities				.getFileExtension(view.getBuffer()				.getName()));		}	} //}}}	//{{{ closeOrKeepDialog() method	private void closeOrKeepDialog()	{		if(keepDialog.isSelected())		{			// Windows bug workaround in case a YES/NO confirm			// was shown			// ... but if HyperSearch results window is floating,			// the workaround causes problems!			if(!hyperSearch.isSelected())			{				toFront();				requestFocus();				find.requestFocus();			}			return;		}		else		{			GUIUtilities.saveGeometry(this,"search");			setVisible(false);		}	} //}}}	//{{{ load() method	private void load()	{		ignoreCase.setSelected(SearchAndReplace.getIgnoreCase());		regexp.setSelected(SearchAndReplace.getRegexp());		wrap.setSelected(SearchAndReplace.getAutoWrapAround());		if(SearchAndReplace.getReverseSearch())			searchBack.setSelected(true);		else			searchForward.setSelected(true);		if(SearchAndReplace.getBeanShellReplace())		{			replace.setModel("replace.script");			beanShellReplace.setSelected(true);		}		else		{			replace.setModel("replace");			stringReplace.setSelected(true);		}		SearchFileSet fileset = SearchAndReplace.getSearchFileSet();		HistoryModel model = filter.getModel();		if(model.getSize() != 0)			filter.setText(model.getItem(0));		else		{			filter.setText("*" + MiscUtilities				.getFileExtension(view.getBuffer()				.getName()));		}		model = directory.getModel();		if(model.getSize() != 0)			directory.setText(model.getItem(0));		else			directory.setText(view.getBuffer().getDirectory());		searchSubDirectories.setSelected(jEdit.getBooleanProperty(			"search.subdirs.toggle"));		if(fileset instanceof DirectoryListSet)		{			filter.setText(((DirectoryListSet)fileset)				.getFileFilter());			directory.setText(((DirectoryListSet)fileset)				.getDirectory());			searchSubDirectories.setSelected(((DirectoryListSet)fileset)				.isRecursive());		}		else if(fileset instanceof AllBufferSet)		{			filter.setText(((AllBufferSet)fileset)				.getFileFilter());		}		directory.addCurrentToHistory();		keepDialog.setSelected(jEdit.getBooleanProperty(			"search.keepDialog.toggle"));	} //}}}	//}}}	//{{{ Inner classes	//{{{ MyJRadioButton class	// used for the stringReplace and beanShell replace radio buttons,	// so that the user can press tab to go from the find field to the	// replace field in one go	class MyJRadioButton extends JRadioButton	{		MyJRadioButton(String label)		{			super(label);		}		public boolean isFocusTraversable()		{			return false;		}	} //}}}	//{{{ ReplaceActionHandler class	class ReplaceActionHandler implements ActionListener	{		public void actionPerformed(ActionEvent evt)		{			replace.setModel(beanShellReplace.isSelected()				? "replace.script"				: "replace");			SearchAndReplace.setBeanShellReplace(				beanShellReplace.isSelected());		}	} //}}}	//{{{ SettingsActionHandler class	class SettingsActionHandler implements ActionListener	{		public void actionPerformed(ActionEvent evt)		{			Object source = evt.getSource();			if(source == searchCurrentBuffer)				hyperSearch.setSelected(false);			else if(source == searchSelection				|| source == searchAllBuffers				|| source == searchDirectory)				hyperSearch.setSelected(true);			save(true);			updateEnabled();		}	} //}}}	//{{{ MultiFileActionHandler class	class MultiFileActionHandler implements ActionListener	{		public void actionPerformed(ActionEvent evt)		{			if(evt.getSource() == choose)			{				String[] dirs = GUIUtilities.showVFSFileDialog(					view,directory.getText(),					VFSBrowser.CHOOSE_DIRECTORY_DIALOG,					false);				if(dirs != null)					directory.setText(dirs[0]);			}			else if(evt.getSource() == synchronize)			{				synchronizeMultiFileSettings();			}			else // source is directory or filter field			{				// just as if Enter was pressed in another				// text field				ok();			}		}	} //}}}	//{{{ ButtonActionHandler class	class ButtonActionHandler implements ActionListener	{		public void actionPerformed(ActionEvent evt)		{			Object source = evt.getSource();			if(source == closeBtn)				cancel();			else if(source == findBtn || source == find				|| source == replace)			{				ok();			}			else if(source == replaceAndFindBtn)			{				save(false);				if(SearchAndReplace.replace(view))					ok();				else					getToolkit().beep();			}			else if(source == replaceAllBtn)			{				if(searchSelection.isSelected() &&					view.getTextArea().getSelectionCount()					== 0)				{					GUIUtilities.error(view,"search-no-selection",null);					return;				}				setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));				if(!save(false))				{					setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));					getToolkit().beep();					return;				}				if(searchSelection.isSelected())				{					if(SearchAndReplace.replace(view))						closeOrKeepDialog();					else						getToolkit().beep();				}				else				{					if(SearchAndReplace.replaceAll(view))						closeOrKeepDialog();					else						getToolkit().beep();				}				setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));			}		}	} //}}}	//}}}}

⌨️ 快捷键说明

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