📄 mainframe.java
字号:
package util4;import javax.swing.*;import javax.swing.border.*;import javax.swing.text.*;import javax.swing.event.*;import java.awt.*;import java.awt.event.*;import java.util.*;import java.io.*;import util2.*;import util3.*;import util5.*;public class MainFrame extends JFrame implements ChangeListener,EditorResListener, ERCListener{ static int windowCount=1; Border border1; JToolBar toolBar = new JToolBar(); Border border2; JButton newBut = new JButton(); JButton saveBut = new JButton(); JButton openBut = new JButton(); JMenuItem newMI = new JMenuItem(); JMenuBar mainMenuBar = new JMenuBar(); JMenuItem saveMI = new JMenuItem(); JMenuItem exitMI = new JMenuItem(); JMenu fileMenu = new JMenu(); JMenuItem saveAsMI = new JMenuItem(); JButton undoBut = new JButton(); JButton redoBut = new JButton(); JButton findBut = new JButton(); JSplitPane splitPan = new JSplitPane(); JTabbedPane leftTabPan = new JTabbedPane(); JTabbedPane rightTabPan = new JTabbedPane(); JMenuItem closeMI = new JMenuItem(); JMenu openMenu = new JMenu(); JMenuItem openRelaMI = new JMenuItem(); JMenu toolMenu = new JMenu(); JMenuItem findStrMI = new JMenuItem(); JPopupMenu popMen = new JPopupMenu(); JMenuItem closePMI = new JMenuItem(); JMenuItem findPMI = new JMenuItem(); JMenuItem eraseURMI = new JMenuItem(); JMenuItem newWinMI = new JMenuItem(); JMenuItem setupBrowMI = new JMenuItem(); JMenuItem viewPMI = new JMenuItem(); JMenuItem saveAllMI = new JMenuItem(); AboutDia aboutDia=new AboutDia(this,"About",false); Border border3; private JMenu encodingMenu = new JMenu(); private JRadioButtonMenuItem enc_defaultMI = new JRadioButtonMenuItem(); private JRadioButtonMenuItem enc_utf8MI = new JRadioButtonMenuItem(); private JMenu aboutMenu = new JMenu(); private JMenuItem aboutMI = new JMenuItem(); String[] str={"xml","dtd","xsl","wsdl","xsd","xslt","wml","xsql"}; ExampleFileFilter relaFilter=new ExampleFileFilter(str, "relate files"); YorNDia ynDia=new YorNDia(this,"",false); JFileChooser fileChooser; ContainEdi currenEditor=null; File iniFile=new File("init/default.ell"); NewAction newAction=new NewAction(); OpenAction openAction=new OpenAction(); SaveAction saveAction=new SaveAction(); SaveAsAction saveAsAction=new SaveAsAction(); CloseAction closeAction=new CloseAction(); ExitAction exitAction=new ExitAction(); FindStrAction findStrAction=new FindStrAction(); BrowseAction browseAction=new BrowseAction(); BtnPan leftDef=new BtnPan(this,"Default"); BtnPan leftEll=new BtnPan(this,"Extend"); LoadForEditor loadForEdi=new LoadForEditor(); SelectSaveDia ssd=new SelectSaveDia(this,"Select and save modified files",true); UndoRedoHandle undoRedoHandle=new UndoRedoHandle(undoBut,redoBut); Reporter reporter=new Reporter(this,"State report",false); StrSelDia strSelDia=new StrSelDia(this,"Find String"); String encoding; EncodeChangeAction encodeChangeAction=new EncodeChangeAction(); public MainFrame() { super("Simple XML Editor 2.4"); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } protected void processWindowEvent(WindowEvent e) { if (e.getID() == WindowEvent.WINDOW_CLOSING) { exitAction.actionPerformed(null); } } private void jbInit() throws Exception { border2 = BorderFactory.createEtchedBorder(Color.white,new Color(134, 134, 134)); border1 = new MatteBorder(null); border3 = new MatteBorder(null); toolBar.setBackground(SystemColor.activeCaptionBorder); toolBar.setBorder(border1); newBut.setBorder(border3); newBut.setToolTipText("new file"); newBut.setActionCommand("newBut"); newBut.setIcon(new ImageIcon(MainFrame.class.getResource("new.gif"))); saveBut.setBorder(border3); saveBut.setToolTipText("save file"); saveBut.setActionCommand("saveBut"); saveBut.setIcon(new ImageIcon(MainFrame.class.getResource("save.gif"))); openBut.setBorder(border3); openBut.setToolTipText("open file"); openBut.setActionCommand("openBut"); openBut.setIcon(new ImageIcon(MainFrame.class.getResource("open.gif"))); newMI.setText("New"); mainMenuBar.setBorder(border2); saveMI.setText("Save"); exitMI.setText("Exit"); fileMenu.setText("File"); saveAsMI.setText("Save as"); undoBut.setBorder(border3); undoBut.setToolTipText("Undo"); undoBut.setIcon(new ImageIcon(MainFrame.class.getResource("UNDO.jpg"))); toolBar.addSeparator(); redoBut.setBorder(border3); redoBut.setToolTipText("Redo"); redoBut.setActionCommand("redoBut"); redoBut.setIcon(new ImageIcon(MainFrame.class.getResource("REDO.jpg"))); findBut.setBorder(border3); findBut.setToolTipText("Find"); findBut.setActionCommand("Find"); findBut.setIcon(new ImageIcon(MainFrame.class.getResource("find.jpg"))); closeMI.setActionCommand("closeMI"); closeMI.setText("Close"); openMenu.setText("Open"); openRelaMI.setActionCommand("rela"); openRelaMI.setText("Relate files"); toolMenu.setText("Tool"); findStrMI.setText("Find string"); saveAllMI.setText("Save all"); rightTabPan.setFont(new java.awt.Font("Serif", 0, 12)); rightTabPan.setBorder(border3); popMen.setFont(new java.awt.Font("SansSerif", 1, 13)); popMen.setForeground(SystemColor.desktop); closePMI.setText("Close"); findPMI.setText("Find"); eraseURMI.setText("Erase undo redo"); newWinMI.setText("New window"); setupBrowMI.setText("Setup Browser"); viewPMI.setEnabled(false); viewPMI.setText("View it"); leftTabPan.setBorder(border3); encodingMenu.setText("Encoding"); enc_defaultMI.setText("System default"); enc_defaultMI.setSelected(true); enc_utf8MI.setText("UTF-8"); aboutMenu.setText("About"); aboutMI.setText("About..."); toolBar.add(newBut, null); toolBar.add(saveBut, null); toolBar.add(openBut, null); toolBar.addSeparator(); toolBar.add(undoBut, null); toolBar.add(redoBut, null); toolBar.addSeparator(); toolBar.add(findBut, null); this.getContentPane().add(splitPan, BorderLayout.CENTER); splitPan.add(leftTabPan, JSplitPane.LEFT); splitPan.add(rightTabPan, JSplitPane.RIGHT); mainMenuBar.add(fileMenu); mainMenuBar.add(toolMenu); mainMenuBar.add(encodingMenu); mainMenuBar.add(aboutMenu); fileMenu.add(newMI); fileMenu.addSeparator(); fileMenu.add(openMenu); fileMenu.add(closeMI); fileMenu.addSeparator(); fileMenu.add(saveMI); fileMenu.add(saveAsMI); fileMenu.add(saveAllMI); fileMenu.addSeparator(); fileMenu.add(exitMI); this.getContentPane().add(toolBar, BorderLayout.NORTH); openMenu.add(openRelaMI); toolMenu.add(findStrMI); toolMenu.addSeparator(); toolMenu.add(eraseURMI); toolMenu.addSeparator(); toolMenu.add(setupBrowMI); toolMenu.addSeparator(); toolMenu.add(newWinMI); popMen.add(closePMI); popMen.addSeparator(); popMen.add(findPMI); popMen.addSeparator(); popMen.add(viewPMI); encodingMenu.add(enc_defaultMI); encodingMenu.add(enc_utf8MI); setJMenuBar(mainMenuBar); //System.out.print("call for init. "); leftTabPan.addTab("Default",null,leftDef,"Default list"); leftTabPan.addTab("Extend",null,leftEll,"Extend list"); //this.leftTabPan.addTab("ELL",null,new BtnPan(),"ELEMENT list"); fileChooser=new JFileChooser(); rightTabPan.addChangeListener(this); newMI.addActionListener(newAction); newBut.addActionListener(newAction); openRelaMI.addActionListener(openAction); openBut.addActionListener(openAction); saveAsMI.addActionListener(this.saveAsAction); saveMI.addActionListener(this.saveAction); saveBut.addActionListener(this.saveAction); closeMI.addActionListener(this.closeAction); closePMI.addActionListener(this.closeAction); exitMI.addActionListener(this.exitAction); undoBut.setFocusPainted(false); redoBut.setFocusPainted(false); undoBut.setEnabled(false); redoBut.setEnabled(false); findBut.addActionListener(findStrAction); findStrMI.addActionListener(findStrAction); viewPMI.addActionListener(browseAction); this.splitPan.setDividerLocation(157); this.splitPan.setOneTouchExpandable(true); this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) { MainFrame.this.exitAction.actionPerformed(null); } }); undoBut.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ MainFrame.this.undoRedoHandle.undo(); MainFrame.this.currenEditor.getXeditor().requestFocus(); } }); redoBut.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ MainFrame.this.undoRedoHandle.redo(); MainFrame.this.currenEditor.getXeditor().requestFocus(); } }); saveAllMI.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ for(int i=0;i<rightTabPan.getComponentCount();i++){ //System.out.print("here "); ContainEdi ce=(ContainEdi)(rightTabPan.getComponentAt(i)); saveAsAction.saveIt(ce.getFile(),ce); } } }); eraseURMI.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ MainFrame.this.currenEditor.eraseUR(); } }); setupBrowMI.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ new SetupBrowserAction().actionPerformed(null); } }); newWinMI.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ MainFrame mf=new MainFrame(); mf.setBounds(60,20,690,540); mf.show(); MainFrame.this.windowCount++; } }); findPMI.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ MainFrame.this.findStrAction.find(); } }); aboutMI.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ aboutDia.setVisible(true); } }); this.encodeChangeAction.registerNotifyer(enc_defaultMI.getActionCommand(), System.getProperty("file.encoding"),enc_defaultMI); this.enc_defaultMI.addActionListener(encodeChangeAction); enc_defaultMI.doClick();//else their would be a null pointer this.encodeChangeAction.registerNotifyer(enc_utf8MI.getActionCommand(), "utf-8",enc_utf8MI); this.enc_utf8MI.addActionListener(encodeChangeAction); try{leftDef.importFile(this.iniFile);} catch(Exception excep){ this.reporter.setStateLab("File not found or document invalidation."); } try{ File file=new File(iniFile.getParent()+"/Browser"); BufferedReader dis=new BufferedReader(new FileReader(file)); String path=dis.readLine(); browseAction.setBrowsePath(path); } catch(Exception exc){} aboutMenu.add(aboutMI); } public void showStateReport(String s){ this.reporter.setStateLab(s); reporter.setVisible(true); }//listener method public void stateChanged(ChangeEvent e){//System.out.print("change. "); this.currenEditor=(ContainEdi)(this.rightTabPan.getSelectedComponent()); this.undoRedoHandle.update(); } public void dispPopMen(MouseEvent e){//System.out.println("pick"); this.popMen.show(currenEditor.getXeditor(),e.getX(),e.getY()); } public void btnEdit(String message,int offset){ //currenEditor.getXeditor().insert(message,currenEditor); try{ Xeditor edi=currenEditor.getXeditor(); edi.insert(message,edi.getCaretPosition()); edi.setCaretPosition((edi.getCaretPosition()-offset)); edi.requestFocus(); }catch(NullPointerException npe){} } public JFileChooser shareFileChooser(){ return this.fileChooser; } public YorNDia shareYorNDia(){ return this.ynDia; } public Reporter shareReporter(){ return this.reporter; } public File shareIniFile(){ return this.iniFile; }//useful classes/* protected class ImportEll implements Runnable { File file; BtnPan bpan; public ImportEll reSet(BtnPan bpan,File file){ this.bpan=bpan; this.file=file; return this; } public void run(){ BtnPan bpan=this.bpan; File file=this.file; try{//System.out.print("init. "); FileReader reader=new FileReader(file); BufferedReader breader=new BufferedReader(reader); String key="",value="",read=""; Vector v=new Vector(); int i=0; boolean onValue=false; while((read=breader.readLine())!=null){ if(read.charAt(0)=='!'){ if(i>0){v.addElement(new Messager(key,value)); value="";} key=read.substring(1); onValue=false; } else if(read.charAt(0)=='@'){ browseAction.setBrowsePath(read.substring(1)); } else{ if(onValue) value=value+"\n"+read; else value=value+read; onValue=true; } i++; } v.addElement(new Messager(key,value)); Messager[] msgarr=new Messager[v.size()];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -