📄 searchdialog.java
字号:
package org.loon.framework.ide.test.dialog;
/**
* <p>Title: LoonFramework</p>
* <p>Description:</p>
* <p>Copyright: Copyright (c) 2007</p>
* <p>Company: LoonFramework</p>
* @author chenpeng
* @email:ceponline@yahoo.com.cn
* @version 0.1
*/
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import org.loon.framework.ide.test.JavaIDE;
import org.loon.framework.ide.test.LookAndFeel;
public class SearchDialog extends JDialog
implements ActionListener
{
Container contentPane;
JTextField txtSearch;
JPanel pnlSearch;
JTextField txtChange;
JPanel pnlChange;
JPanel pnlNorth;
JLabel labelChange;
JCheckBox cbxChar;
JCheckBox cbxWay;
JLabel lblMsg;
JPanel pnlCenter;
JButton btnNext;
JButton btnChangeOne;
JButton btnChangeAll;
JButton btnCancel;
JPanel pnlEast;
private String strSearchText;
StringBuffer strBuf;
String str;
private JTextPane txtData;
JavaIDE owner;
/**
*
*/
private static final long serialVersionUID = 1L;
public SearchDialog(JavaIDE javaide)
{
super(javaide, "JavaIDE : 检索/替换", false);
txtSearch = new JTextField();
pnlSearch = new JPanel();
txtChange = new JTextField();
pnlChange = new JPanel();
pnlNorth = new JPanel();
labelChange = new JLabel("替换文字 : ", 4);
cbxChar = new JCheckBox("区别大小写", false);
cbxWay = new JCheckBox("上下检索", false);
lblMsg = new JLabel();
pnlCenter = new JPanel();
btnNext = new JButton("向下检索");
btnChangeOne = new JButton("替换");
btnChangeAll = new JButton("全部替换");
btnCancel = new JButton("关闭");
pnlEast = new JPanel();
strSearchText = null;
txtData = null;
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent windowevent)
{
setVisible(false);
}
});
owner = javaide;
contentPane = getContentPane();
contentPane.setLayout(new BorderLayout(10, 10));
pnlNorth.setLayout(new GridLayout(2, 1, 0, 5));
pnlSearch.setLayout(new GridLayout(1, 2));
pnlSearch.add(new JLabel("搜索列 : ", 4));
pnlSearch.add(txtSearch);
pnlChange.setLayout(new GridLayout(1, 2));
pnlChange.add(labelChange);
pnlChange.add(txtChange);
pnlNorth.add(pnlSearch);
pnlNorth.add(pnlChange);
contentPane.add("North", pnlNorth);
pnlCenter.setLayout(new GridLayout(3, 1));
pnlCenter.add(cbxChar);
pnlCenter.add(cbxWay);
pnlCenter.add(lblMsg);
contentPane.add("Center", pnlCenter);
pnlEast.setLayout(new GridLayout(4, 1, 0, 5));
pnlEast.add(btnNext);
pnlEast.add(btnChangeOne);
pnlEast.add(btnChangeAll);
pnlEast.add(btnCancel);
contentPane.add("East", pnlEast);
btnNext.addActionListener(this);
btnCancel.addActionListener(this);
btnChangeOne.addActionListener(this);
btnChangeAll.addActionListener(this);
txtSearch.setFont(new Font("宋体", 0, 12));
txtChange.setFont(new Font("宋体", 0, 12));
setResizable(false);
setLocationRelativeTo(javaide);
pack();
}
public void setLookAndFeel()
{
LookAndFeel.setLookAndFeel(contentPane);
}
public void search(JTextPane jtextpane)
{
txtData = jtextpane;
btnChangeOne.setEnabled(false);
btnChangeAll.setEnabled(false);
txtChange.setEnabled(false);
labelChange.setEnabled(false);
setVisible(true);
}
public void change(JTextPane jtextpane)
{
txtData = jtextpane;
btnChangeOne.setEnabled(true);
btnChangeAll.setEnabled(true);
txtChange.setEnabled(true);
labelChange.setEnabled(true);
setVisible(true);
}
public void change(JTextPane jtextpane, String s)
{
txtSearch.setText(s);
change(jtextpane);
txtChange.requestFocus();
}
public void actionPerformed(ActionEvent actionevent)
{
Object obj = actionevent.getSource();
if(obj == btnChangeOne)
changeOne();
if(obj == btnChangeAll)
changeAll();
if(obj == btnNext)
searchNext();
if(obj == btnCancel)
{
strSearchText = null;
setVisible(false);
}
owner.catchFocus();
}
public boolean searchNext()
{
lblMsg.setText("");
strSearchText = txtSearch.getText();
if(strSearchText.equals(""))
return false;
String s = txtData.getText();
if(!cbxChar.isSelected())
{
strSearchText = strSearchText.toLowerCase();
s = s.toLowerCase();
}
int k = 0;
boolean flag1 = cbxWay.isSelected();
if(!flag1)
{
int i = txtData.getSelectionStart() + 1;
k = s.indexOf(strSearchText, i);
} else
{
int j = txtData.getSelectionStart() - 1;
k = s.lastIndexOf(strSearchText, j);
}
if(k >= 0)
{
txtData.select(k, k + strSearchText.length());
} else
{
lblMsg.setText("搜索完毕");
return false;
}
return true;
}
/**
* 变更数据
* @return
*/
public boolean changeOne()
{
strSearchText = txtSearch.getText();
if(strSearchText.equals(""))
return false;
String s = txtData.getSelectedText();
if(s==null)return false;
if(!cbxChar.isSelected())
{
strSearchText = strSearchText.toLowerCase();
s = s.toLowerCase();
}
if(!s.equals(strSearchText))
{
searchNext();
return false;
} else
{
txtData.replaceSelection(txtChange.getText());
searchNext();
return true;
}
}
public boolean changeAll()
{
int i = JOptionPane.showConfirmDialog(owner, "是否替换?", "JavaIDE : 替换", 0);
if(i == 0)
{
txtData.select(0, 0);
cbxWay.setSelected(false);
for(; searchNext(); txtData.replaceSelection(txtChange.getText()));
} else
{
return false;
}
return true;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -