📄 minieditor.java
字号:
}
// else if(ae.getSource() == menuFilePrintSetup) {
// ta.printItSetup(ta.getText(), ta.getFont());
// todo...
// }
else if(ae.getSource() == menuFileSave) {
OutputStreamWriter osw;
if(fns != null) {
try{
osw = new OutputStreamWriter(
new BufferedOutputStream(
new FileOutputStream(fns)));
osw.write(ta.getText(), 0, ta.getText().length());
osw.close();
fileStatus.setText("file saved");
} catch(IOException e) {
}
if(fileStatus.getText().endsWith("*")) {
fileStatus.setText(fileStatus.getText().substring(0,
fileStatus.getText().length() - 1));
}
}
else {
Frame saveFileFrame = new Frame("Save file");
FileDialog fileDialog = new FileDialog(saveFileFrame);
fileDialog.setMode(FileDialog.SAVE);
fileDialog.setFile("*.txt;*.java");
fileDialog.show();
String file = fileDialog.getFile();
String directory = fileDialog.getDirectory();
if(file != null) {
fns = directory + file;
try{
osw = new OutputStreamWriter(
new BufferedOutputStream(
new FileOutputStream(fns)));
osw.write(ta.getText(), 0, ta.getText().length());
osw.close();
fileStatus.setText("file saved");
} catch(IOException e) {
}
}
}
}
else if(ae.getSource() == menuFileSaveAs) {
OutputStreamWriter osw;
Frame saveFileFrame = new Frame("Save file");
FileDialog fileDialog = new FileDialog(saveFileFrame);
fileDialog.setMode(FileDialog.SAVE);
fileDialog.setFile("*.txt;*.java");
fileDialog.show();
String file = fileDialog.getFile();
String directory = fileDialog.getDirectory();
if(file != null) {
fns = directory + file;
try{
osw = new OutputStreamWriter(
new BufferedOutputStream(
new FileOutputStream(fns)));
osw.write(ta.getText(), 0, ta.getText().length());
osw.close();
fileStatus.setText("file saved");
} catch(IOException e) {
}
}
}
else if(ae.getSource() == menuFileExit) {
System.exit(0);
}
else if(ae.getSource() == menuEditUndo) {
if(undo.canUndo()) {
try {
undo.undo();
} catch(CannotUndoException ex) {
System.out.println("Unable to undo: " + ex);
ex.printStackTrace();
}
if(!undo.canUndo())
menuEditUndo.setEnabled(false);
}
// else
// menuEditUndo.setEnabled(false);
}
else if(ae.getSource() == menuEditRedo) {
// todo...
}
else if(ae.getSource() == menuEditCut) {
ta.cut();
}
else if(ae.getSource() == menuEditCopy) {
ta.copy();
}
else if(ae.getSource() == menuEditPaste) {
ta.paste();
}
else if(ae.getSource() == menuEditDeleteSelection) {
ta.replaceRange("", ta.getSelectionStart(), ta.getSelectionEnd());
}
else if(ae.getSource() == menuEditDeleteLine) {
String str = ta.getText();
int pos = ta.getCaretPosition();
int lineStart = 0, lineEnd = 0;
lineStart = str.substring(0, pos).lastIndexOf('\12');
lineEnd = str.indexOf('\15', pos);
lineStart = (lineStart == -1) ? 0 : (lineStart - 1);
ta.replaceRange("", lineStart, lineEnd);
lineStart = (lineStart == 0) ? 0 : (lineStart + 2);
ta.setCaretPosition(lineStart);
}
else if(ae.getSource() == menuEditDeleteWord) {
String str = ta.getText();
int pos = ta.getCaretPosition();
int wordStart = 0, wordEnd = 0;
wordEnd = wordLocation(str, pos, true);
if(wordEnd == pos) {
wordStart = pos;
wordEnd = pos + 1;
ta.replaceRange("", wordStart, wordEnd);
}
else {
wordStart = wordLocation(str, pos, false);
if(wordStart == -1)
ta.replaceRange("", 0, wordEnd);
else
ta.replaceRange("", wordStart, wordEnd);
}
}
else if(ae.getSource() == menuEditFind) {
JDialog ds = new JDialog(this, "Find", true);
ds.getContentPane().setLayout(new FlowLayout());
ds.setResizable(false);
tfs = new TextField(15);
ds.getContentPane().add(tfs);
bs = new Button("Find");
bs.addActionListener(this);
Button bsc = new Button("Cancel");
bsc.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent bOke) {
dispose();
foundCount = 0;
}
});
ds.getContentPane().add(bs);
ds.getContentPane().add(bsc);
JLabel dsMessage1 = new JLabel("Found counts: ");
dsMessage2 = new JLabel(" 0");
dsLoop = new Checkbox("Loop");
dsLoop.setState(findingLoop);
dsMatchCase = new Checkbox("Match Case");
ds.getContentPane().add(dsLoop);
ds.getContentPane().add(dsMatchCase);
ds.getContentPane().add(dsMessage1);
ds.getContentPane().add(dsMessage2);
ds.setLocation(120, 120);
ds.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
FindStartPos = 0;
}
});
ds.setSize(250,110);
ds.setVisible(true);
}
else if(ae.getSource() == bs) {
int a = 0, b = 0;
String str1, str2, str3, str4, strA, strB;
str1 = ta.getText();
str2 = str1.toLowerCase();
str3 = tfs.getText();
str4 = str3.toLowerCase();
if(dsMatchCase.getState()) {
strA = str1;
strB = str3;
}
else {
strA = str2;
strB = str4;
}
a = strA.indexOf(strB, FindStartPos);
if(a > -1) {
ta.setCaretPosition(a);
b = tfs.getText().length();
ta.select(a, a + b);
FindStartPos = a + b;
foundCount++;
dsMessage2.setText(foundCount+"");
}
else {
if(dsLoop.getState()) {
JOptionPane.showMessageDialog(null, "End of file.", "Find result",1);
FindStartPos = 0;
}
else {
JOptionPane.showMessageDialog(null, "End of file.", "Find result",1);
}
foundCount = 0;
}
}
else if(ae.getSource() == menuEditReplace) {
JDialog dr = new JDialog(this, "Replace", true);
dr.getContentPane().setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = 2;
gbc.gridheight =1;
// gbc.fill = gbc.HORIZONTAL; gbc.anchor = gbc.CENTER;
Panel p1 = new Panel();
dr.getContentPane().add(p1);
// drMatchCase = new Checkbox("Match Case");
// gbc.gridx = 1;
// gbc.gridy = 1;
// gbc.gridwidth = 1;
// gbc.gridheight =1;
// dr.getContentPane().add(drMatchCase);
gbc.gridx = 2;
gbc.gridy = 0;
gbc.gridwidth = 1;
gbc.gridheight =1;
// gbc.fill = gbc.NONE; gbc.anchor = gbc.EAST;
Panel p2 = new Panel();
p1.setLayout(new GridLayout(5, 1));
p2.setLayout(new GridLayout(4, 1));
dr.getContentPane().add(p2);
JLabel drMessage1 = new JLabel("Replace: ");
JLabel drMessage2 = new JLabel("With: ");
drMatchCase = new Checkbox("Match Case");
tfro = new TextField(15);
tfrn = new TextField(15);
p1.add(drMessage1);
p1.add(tfro);
p1.add(drMessage2);
p1.add(tfrn);
p1.add(drMatchCase);
brf = new Button("Find");
// brf.addActionListener(this);
brf.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent brfe) {
int a = 0, b = 0;
String str1, str2, str3, str4, strA, strB;
str1 = ta.getText();
str2 = str1.toLowerCase();
str3 = tfro.getText();
str4 = str3.toLowerCase();
if(drMatchCase.getState()) {
strA = str1;
strB = str3;
}
else {
strA = str2;
strB = str4;
}
a = strA.indexOf(strB, FindStartPos);
if(a > -1) {
ta.setCaretPosition(a);
b = tfro.getText().length();
ta.select(a, a + b);
FindStartPos = a + b;
foundCount++;
}
else {
JOptionPane.showMessageDialog(null, "End of file.", "Result",1);
foundCount = 0;
}
}
});
brr = new Button("Replace");
brr.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent brre) {
if(tfrn.getText().length() == 0 && ta.getSelectedText() != null)
ta.replaceSelection("");
if(tfrn.getText().length() > 0 && ta.getSelectedText() != null)
ta.replaceSelection(tfrn.getText());
int a = 0, b = 0;
String str1, str2, str3, str4, strA, strB;
str1 = ta.getText();
str2 = str1.toLowerCase();
str3 = tfro.getText();
str4 = str3.toLowerCase();
if(drMatchCase.getState()) {
strA = str1;
strB = str3;
}
else {
strA = str2;
strB = str4;
}
a = strA.indexOf(strB, FindStartPos);
if(a > -1) {
ta.setCaretPosition(a);
b = tfro.getText().length();
ta.select(a, a + b);
FindStartPos = a + b;
foundCount++;
}
else {
JOptionPane.showMessageDialog(null, "End of file.", "Result",1);
foundCount = 0;
}
}
});
brra = new Button("Replace All");
brra.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent brrae) {
int a = 0;
while( a > -1) {
int b = 0;
String str1, str2, str3, str4, strA, strB;
str1 = ta.getText();
str2 = str1.toLowerCase();
str3 = tfro.getText();
str4 = str3.toLowerCase();
if(drMatchCase.getState()) {
strA = str1;
strB = str3;
}
else {
strA = str2;
strB = str4;
}
a = strA.indexOf(strB, FindStartPos);
if(a > -1) {
ta.setCaretPosition(a);
b = tfro.getText().length();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -