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

📄 searchdialog.java

📁 Java写的文本编辑器
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		wrap= new JCheckBox(jEdit.getProperty("search.wrap"));		wrap.setMnemonic(jEdit.getProperty("search.wrap.mnemonic")			.charAt(0));		searchSettings.add(wrap);		wrap.addActionListener(actionHandler);		return searchSettings;	}	private JPanel createMultiFilePanel()	{		JPanel multifile = new JPanel();		GridBagLayout layout = new GridBagLayout();		multifile.setLayout(layout);		GridBagConstraints cons = new GridBagConstraints();		cons.gridy = cons.gridwidth = cons.gridheight = 1;		cons.anchor = GridBagConstraints.WEST;		cons.fill = GridBagConstraints.HORIZONTAL;		MultiFileActionHandler actionListener = new MultiFileActionHandler();		filter = new HistoryTextField("search.filter");		filter.addActionListener(actionListener);		cons.insets = new Insets(0,0,3,0);		JLabel label = new JLabel(jEdit.getProperty("search.filterField"),			SwingConstants.RIGHT);		label.setBorder(new EmptyBorder(0,0,0,12));		label.setDisplayedMnemonic(jEdit.getProperty("search.filterField.mnemonic")			.charAt(0));		label.setLabelFor(filter);		cons.weightx = 0.0f;		layout.setConstraints(label,cons);		multifile.add(label);		cons.insets = new Insets(0,0,3,6);		cons.weightx = 1.0f;		layout.setConstraints(filter,cons);		multifile.add(filter);		cons.gridy++;		directory = new HistoryTextField("search.directory");		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 = 4;		searchSubDirectories = new JCheckBox(jEdit.getProperty(			"search.subdirs"));		searchSubDirectories.setMnemonic(jEdit.getProperty("search.subdirs.mnemonic")			.charAt(0));		layout.setConstraints(searchSubDirectories,cons);		multifile.add(searchSubDirectories);		return multifile;	}	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;	}	private void updateEnabled()	{		boolean replaceEnabled = !hyperSearch.isSelected();		stringReplace.setEnabled(replaceEnabled);		beanShellReplace.setEnabled(replaceEnabled);		replace.setEnabled(replaceEnabled);		replaceBtn.setEnabled(replaceEnabled);		replaceAndFindBtn.setEnabled(replaceEnabled);		replaceAllBtn.setEnabled(replaceEnabled);		wrap.setEnabled(replaceEnabled);		boolean reverseEnabled = replaceEnabled			&& searchCurrentBuffer.isSelected();		searchBack.setEnabled(reverseEnabled);		searchForward.setEnabled(reverseEnabled);		boolean regexpEnabled = (hyperSearch.isSelected()			|| !(searchBack.isEnabled() && searchBack.isSelected()));		regexp.setEnabled(regexpEnabled);		filter.setEnabled(searchAllBuffers.isSelected()			|| searchDirectory.isSelected());		boolean directoryEnabled = searchDirectory.isSelected();		directory.setEnabled(directoryEnabled);		choose.setEnabled(directoryEnabled);		searchSubDirectories.setEnabled(directoryEnabled);	}	private boolean save()	{		String filter = this.filter.getText();		this.filter.addCurrentToHistory();		if(filter.length() == 0)			filter = "*";		SearchFileSet fileset = SearchAndReplace.getSearchFileSet();		if(searchCurrentBuffer.isSelected())			fileset = new CurrentBufferSet();		else if(searchAllBuffers.isSelected())			fileset = new AllBufferSet(filter);		else if(searchDirectory.isSelected())		{			String directory = this.directory.getText();			this.directory.addCurrentToHistory();			boolean recurse = searchSubDirectories.isSelected();			if(fileset instanceof DirectoryListSet)			{				DirectoryListSet dset = (DirectoryListSet)fileset;				if(!dset.getDirectory().equals(directory)					|| !dset.getFileFilter().equals(filter)					|| !dset.isRecursive() == recurse)					fileset = new DirectoryListSet(directory,filter,recurse);			}			else				fileset = new DirectoryListSet(directory,filter,recurse);		}		else		{			// can't happen			fileset = null;		}		jEdit.setBooleanProperty("search.keepDialog.toggle",			keepDialog.isSelected());		jEdit.setBooleanProperty("search.hypersearch.toggle",			hyperSearch.isSelected());		boolean ok = true;		if(fileset.getBufferCount() == 0)		{			// oops			GUIUtilities.error(this,"empty-fileset",null);			ok = false;		}		else			SearchAndReplace.setSearchFileSet(fileset);		if(find.getText().length() != 0)		{			find.addCurrentToHistory();			SearchAndReplace.setSearchString(find.getText());			replace.addCurrentToHistory();			SearchAndReplace.setReplaceString(replace.getText());		}		else			ok = false;		return ok;	}	private void closeOrKeepDialog()	{		if(keepDialog.isSelected())			return;		else		{			GUIUtilities.saveGeometry(this,"search");			setVisible(false);		}	}	// 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;		}	}	class ReplaceActionHandler implements ActionListener	{		public void actionPerformed(ActionEvent evt)		{			replace.setModel(beanShellReplace.isSelected()				? "replace.script"				: "replace");			SearchAndReplace.setBeanShellReplace(				beanShellReplace.isSelected());		}	}	class SettingsActionHandler implements ActionListener	{		public void actionPerformed(ActionEvent evt)		{			Object source = evt.getSource();			if(source == ignoreCase)				SearchAndReplace.setIgnoreCase(ignoreCase.isSelected());			else if(source == regexp)				SearchAndReplace.setRegexp(regexp.isSelected());			else if(source == searchBack || source == searchForward)				SearchAndReplace.setReverseSearch(searchBack.isSelected());			else if(source == wrap)				SearchAndReplace.setAutoWrapAround(wrap.isSelected());			updateEnabled();		}	}	class MultiFileActionHandler implements ActionListener	{		public void actionPerformed(ActionEvent evt)		{			if(evt.getSource() == choose)			{				File dir = new File(directory.getText());				JFileChooser chooser = new JFileChooser(dir.getParent());				chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);				chooser.setSelectedFile(dir);				if(chooser.showOpenDialog(SearchDialog.this)					== JFileChooser.APPROVE_OPTION)					directory.setText(chooser.getSelectedFile().getPath());			}			else // source is directory or filter field			{				// just as if Enter was pressed in another				// text field				ok();			}		}	}	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 == replaceBtn)			{				save();				if(SearchAndReplace.replace(view))					closeOrKeepDialog();				else					getToolkit().beep();			}			else if(source == replaceAndFindBtn)			{				save();				if(SearchAndReplace.replace(view))					ok();				else					getToolkit().beep();			}			else if(source == replaceAllBtn)			{				setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));				save();				if(SearchAndReplace.replaceAll(view))					closeOrKeepDialog();				else					getToolkit().beep();				setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));			}		}	}}

⌨️ 快捷键说明

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