package com.nyohh.editor;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.beans.PropertyVetoException;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
import javax.swing.JTree;
import javax.swing.KeyStroke;
import javax.swing.tree.TreePath;
import com.nyohh.editor.commons.AddInfo;
import com.nyohh.editor.commons.EditFile;
import com.nyohh.editor.commons.WorkSpace;
import com.nyohh.editor.config.FileChooser;
import com.nyohh.editor.handler.add.AddFileHandler;
import com.nyohh.editor.handler.add.AddFolderHandler;
import com.nyohh.editor.handler.add.AddProjectHandler;
import com.nyohh.editor.handler.run.JavaRunHandler;
import com.nyohh.editor.handler.save.SaveMediator;
import com.nyohh.editor.handler.save.SaveMediatorConcrete;
import com.nyohh.editor.listener.EditDocumentListener;
import com.nyohh.editor.listener.IFrameListener;
import com.nyohh.editor.listener.TabListener;
import com.nyohh.editor.tree.ProjectTreeModel;
import com.nyohh.editor.tree.ProjectTreeNode;
import com.nyohh.editor.tree.TreeCreator;
/**
* 建立完EditorFrame,需要往这个JFrame里面添加组件<br>
* 添加组件建一个initFrame的方法,
*/
public class EditorFrame extends JFrame
{
private static final long serialVersionUID = 2742777849766916647L;
private JTabbedPane tabPane; // 多文件的tab标题
private JMenu editMenu; // 编辑菜单对象
private JMenu fileMenu; // 文件菜单
private JToolBar toolBar; // 工具条
private WorkSpace workSpace; // 命名空间
private TreeCreator treeCreator; // 负责创建树的对象
private JTree tree; // 项目树对象
private AddFrame addFrame; // 添加的界面
private JScrollPane treePane; // 存放树的可滚动容器
private JDesktopPane desk;// 创建一个多文档的桌面容器
private EditFile currentFile; // 当前正在编辑的文件对象
private List<EditFile> openFiles = new ArrayList<EditFile>();// 打开文件的集合
private JTextArea infoArea; // 用于显示信息的文本域
private IFrameListener iframeListener; // 窗口监听器
private SaveMediator saveMediator; // 保存文件的代理
private JavaRunHandler runHandler; // 运行class文件的处理类
public EditFile getCurrentFile()
{
return currentFile;
}
public JTabbedPane getTabPane()
{
return tabPane;
}
public JDesktopPane getDesk()
{
return desk;
}
public WorkSpace getWorkSpace()
{
return workSpace;
}
public JTree getTree()
{
return tree;
}
public TreeCreator getTreeCreator()
{
return treeCreator;
}
public void setCurrentFile(EditFile currentFile)
{
this.currentFile = currentFile;
}
/**
* 获取编辑器主界面项目树中所选中的节点
*/
public ProjectTreeNode getSelectNode()
{
// 获得当前树选择的节点在树中的路径
TreePath path = tree.getSelectionPath();
// 如果当前选择了节点
if (path != null)
{
// 创建一个ProjectTreeNode对象并用于返回
ProjectTreeNode selectNode = (ProjectTreeNode) path.getLastPathComponent();
return selectNode;
}
// 当前没有选择节就返回null
return null;
}
// 显示新增界面
private void showAddFrame(AddInfo info)
{
setEnabled(false); // 使EditorFrame变为不可用
addFrame = new AddFrame(info);
addFrame.pack();
addFrame.setVisible(true);
}
// 新建文件的Action对象
private Action fileNew = new AbstractAction("新建文件", new ImageIcon("images/newFile.gif"))
{
public void actionPerformed(ActionEvent e)
{
newFile();
}
};
// 新建文件的方法
private void newFile()
{
AddInfo info = new AddInfo("文件名称:", this, new AddFileHandler());
showAddFrame(info);
}
// 新建目录的Action对象
private Action folerNew = new AbstractAction("新建目录", new ImageIcon("images/newFile.gif"))
{
public void actionPerformed(ActionEvent e)
{
newFolder();
}
};
// 新建目录的方法
private void newFolder()
{
AddInfo info = new AddInfo("目录名称:", this, new AddFolderHandler());
showAddFrame(info);
}
// 新建项目的Action对象
private Action projectNew = new AbstractAction("新建项目", new ImageIcon("images/newFile.gif"))
{
public void actionPerformed(ActionEvent e)
{
newProject();
}
};
// 新建项目的方法
private void newProject()
{
AddInfo info = new AddInfo("项目名称:", this, new AddProjectHandler());
showAddFrame(info);
}
// 打开文件的Action对象
private Action open = new AbstractAction("打 开", new ImageIcon("images/open.gif"))
{
public void actionPerformed(ActionEvent e)
{
selectFile();
}
};
private void selectFile()
{
FileChooser fileChooser = new FileChooser(this);
}
// 保存文件的Action对象
private Action save = new AbstractAction("保 存", new ImageIcon("images/save.gif"))
{
public void actionPerformed(ActionEvent e)
{
saveFile(getCurrentFile());
}
};
// 刷新树的Action对象
private Action refresh = new AbstractAction("刷 新", new ImageIcon("images/refresh.gif"))
{
public void actionPerformed(ActionEvent e)
{
reloadNode(getSelectNode());
}
};
// 运行文件的Action对象
private Action run = new AbstractAction("运 行", new ImageIcon("images/run.gif"))
{
public void actionPerformed(ActionEvent e)
{
run();
}
};
// 运行文件的方法
private void run()
{
saveFile(getCurrentFile()); // 运行前先保存
String result = runHandler.run(this); // 将结果显示
infoArea.setText(result);
}
// 退出的Action对象
private Action exit = new AbstractAction("退 出")
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);// 直接退出
}
};
// 复制文本的Action对象
private Action copy = new AbstractAction("复 制", new ImageIcon("images/copy.gif"))
{
public void actionPerformed(ActionEvent e)
{
if (getCurrentFile() != null)
{
getCurrentFile().getEditPane().copy();
}
}
};
// 剪切文本的Action对象
private Action cut = new AbstractAction("剪 切", new ImageIcon("images/cut.gif"))
{
public void actionPerformed(ActionEvent e)
{
if (getCurrentFile() != null)
{
getCurrentFile().getEditPane().cut();
}
}
};
// 粘贴文本的Action对象
private Action paste = new AbstractAction("粘 贴", new ImageIcon("images/paste.gif"))
{
public void actionPerformed(ActionEvent e)
{
if (getCurrentFile() != null)
{
getCurrentFile().getEditPane().paste();
}
}
};
public EditorFrame(String title, TreeCreator treeCreator)
{
super(title); // 设置标题
this.treeCreator = treeCreator;
this.iframeListener = new IFrameListener(this);
this.saveMediator = new SaveMediatorConcrete();
this.runHandler = new JavaRunHandler();
}
public void initFrame(WorkSpace space)
{
this.workSpace = space;
// 创建主编辑区的tabPane
tabPane = new JTabbedPane(JTabbedPane.TOP, JTabbedPane.SCROLL_TAB_LAYOUT);
desk = new JDesktopPane();// 创建JDesktopPane对象
desk.setBackground(Color.GRAY);// 设置desk的�
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
简单IDE工具(练手项目八) (106个子文件)
EditorFrame.class 16KB
TreeCeatorImpl.class 5KB
EditPane.class 4KB
SyntaxFormatter.class 3KB
AddFrame.class 3KB
SpaceFrame.class 3KB
CommandUtil.class 3KB
AddProjectHandler.class 2KB
AddFileHandler.class 2KB
JavaRunHandler.class 2KB
FileUtil.class 2KB
JavaSaveHandler.class 2KB
AddFolderHandler.class 2KB
IFrameListener.class 2KB
TabListener.class 1KB
SaveMediatorConcrete.class 1KB
ProjectTreeNode.class 1KB
ProjectTreeModel.class 1KB
ConfirmButtonListener.class 1KB
SpaceChooser.class 1KB
EditFile.class 1KB
FileChooser.class 1KB
ImageUtil.class 1KB
AddFrame$1.class 1KB
EditorFrame$11.class 1KB
EditorFrame$10.class 1KB
EditorFrame$9.class 1KB
ProjectTreeSelectionListener.class 1KB
AddFrame$2.class 1KB
CommonSaveHandler.class 1KB
EditDocumentListener.class 1012B
EditorFrame$6.class 978B
EditorFrame$5.class 969B
AddInfo.class 962B
EditorFrame$7.class 890B
EditorFrame$1.class 890B
EditorFrame$4.class 890B
EditorFrame$2.class 890B
EditorFrame$3.class 890B
Main.class 880B
AddFrame$3.class 853B
ChoseButtonListener.class 827B
AddFrame$4.class 826B
EditorFrame$8.class 794B
SpaceFrame$1.class 748B
EditPane$1.class 690B
CompileConfig.class 503B
WorkSpace.class 481B
FileException.class 456B
SaveMediator.class 391B
TreeCreator.class 279B
AddHandler.class 230B
SaveHandler.class 201B
.classpath 232B
paste.gif 1021B
open.gif 1005B
save.gif 1001B
folder-open.gif 956B
folder-close.gif 952B
copy.gif 944B
run.gif 941B
cut.gif 940B
newFile.gif 923B
file.gif 388B
refresh.gif 114B
EditorFrame.java 21KB
TreeCeatorImpl.java 7KB
EditPane.java 5KB
SyntaxFormatter.java 4KB
AddFrame.java 4KB
SpaceFrame.java 3KB
CommandUtil.java 2KB
AddProjectHandler.java 2KB
JavaRunHandler.java 2KB
AddFileHandler.java 2KB
AddHandler.java 2KB
IFrameListener.java 1KB
FileUtil.java 1KB
TabListener.java 1KB
AddFolderHandler.java 1KB
JavaSaveHandler.java 1KB
TreeCreator.java 1KB
ProjectTreeNode.java 1KB
EditDocumentListener.java 1KB
EditFile.java 967B
ConfirmButtonListener.java 950B
ProjectTreeModel.java 940B
SaveMediatorConcrete.java 921B
SpaceChooser.java 921B
ProjectTreeSelectionListener.java 897B
FileChooser.java 866B
ImageUtil.java 810B
AddInfo.java 766B
SaveMediator.java 713B
ChoseButtonListener.java 660B
Main.java 581B
CommonSaveHandler.java 579B
CompileConfig.java 501B
SaveHandler.java 340B
FileException.java 313B
共 106 条
- 1
- 2
资源评论
小行星0906
- 粉丝: 7
- 资源: 29
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功