SourceBrowserWindow.java
资源名称:swingx.zip [点击查看]
上传用户:zhengdagz
上传日期:2014-03-06
资源大小:1956k
文件大小:8k
源码类别:
xml/soap/webservice
开发平台:
Java
- /*
- * SourceBrowserWindow.java
- *
- * Created on April 5, 2005, 9:00 AM
- */
- package org.jdesktop.demo;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.InputStream;
- import java.util.Vector;
- import javax.swing.JFrame;
- import javax.swing.text.rtf.RTFEditorKit;
- import javax.swing.tree.DefaultMutableTreeNode;
- import javax.swing.tree.DefaultTreeModel;
- import javax.swing.tree.TreeModel;
- import javax.swing.tree.TreeNode;
- import javax.swing.tree.TreePath;
- import org.jdesktop.swingx.JXTitledPanel;
- import org.jdesktop.swingx.util.WindowUtils;
- /**
- *
- * @author rbair
- */
- public class SourceBrowserWindow extends javax.swing.JFrame {
- private File rootDir;
- /** Creates new form SourceBrowserWindow */
- public SourceBrowserWindow(File sourceRootDir) {
- // rootDir = new File("/usr/local/src/swinglabs-demos/swinglabs-demos/src/java");
- rootDir = sourceRootDir;
- initComponents();
- setSize(800, 600);
- setLocation(WindowUtils.getPointForCentering(this));
- }
- public void setSelectedSourceFile(File sourceFile) {
- // Build vector of path elements
- File pathElement = sourceFile;
- Vector pathElements = new Vector();
- pathElements.add(pathElement);
- while (!pathElement.equals(rootDir)) {
- pathElement = pathElement.getParentFile();
- pathElements.insertElementAt(pathElement, 0);
- }
- // Now use path elements to do top-down search for corresponding tree node
- DefaultTreeModel treeModel = (DefaultTreeModel)sourceTree.getModel();
- DefaultMutableTreeNode pathNode = (DefaultMutableTreeNode)treeModel.getRoot();
- for(int i = 0; i < pathElements.size(); i++) {
- pathElement = (File)pathElements.get(i);
- for(int j = 0; j < pathNode.getChildCount(); j++) {
- DefaultMutableTreeNode node = (DefaultMutableTreeNode)pathNode.getChildAt(j);
- if (node.getUserObject().equals(pathElement)) {
- pathNode = node;
- break;
- }
- }
- }
- sourceTree.setSelectionPath(new TreePath(pathNode.getPath()));
- }
- /** This method is called from within the constructor to
- * initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is
- * always regenerated by the Form Editor.
- */
- // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
- private void initComponents() {
- java.awt.GridBagConstraints gridBagConstraints;
- jScrollPane1 = new javax.swing.JScrollPane();
- sourceTree = new javax.swing.JTree();
- jScrollPane2 = new javax.swing.JScrollPane();
- oldEditorPane = new org.jdesktop.swingx.JXEditorPane();
- jSplitPane1 = new javax.swing.JSplitPane();
- jMenuBar1 = new javax.swing.JMenuBar();
- jMenu1 = new javax.swing.JMenu();
- jMenuItem1 = new javax.swing.JMenuItem();
- jSeparator1 = new javax.swing.JSeparator();
- closeWindowMI = new javax.swing.JMenuItem();
- jScrollPane1.setBorder(null);
- sourceTree.setModel(createTreeModel());
- sourceTree.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
- public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
- sourceTreeValueChanged(evt);
- }
- });
- jScrollPane1.setViewportView(sourceTree);
- jScrollPane2.setBorder(null);
- oldEditorPane.setEditable(false);
- jScrollPane2.setViewportView(oldEditorPane);
- getContentPane().setLayout(new java.awt.GridBagLayout());
- setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
- jSplitPane1.setBorder(null);
- jSplitPane1.setDividerLocation(150);
- JXTitledPanel tp = new JXTitledPanel("Sources");
- tp.setContentContainer(jScrollPane1);
- jSplitPane1.setLeftComponent(tp);
- tp = new JXTitledPanel("Editor");
- tp.setContentContainer(jScrollPane2);
- jSplitPane1.setRightComponent(tp);
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
- gridBagConstraints.weightx = 1.0;
- gridBagConstraints.weighty = 1.0;
- gridBagConstraints.insets = new java.awt.Insets(12, 12, 11, 11);
- getContentPane().add(jSplitPane1, gridBagConstraints);
- jMenu1.setText("Menu");
- jMenuItem1.setText("Print");
- jMenu1.add(jMenuItem1);
- jMenu1.add(jSeparator1);
- closeWindowMI.setText("Close Window");
- closeWindowMI.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- closeWindowMIActionPerformed(evt);
- }
- });
- jMenu1.add(closeWindowMI);
- jMenuBar1.add(jMenu1);
- setJMenuBar(jMenuBar1);
- pack();
- }
- // </editor-fold>//GEN-END:initComponents
- private void sourceTreeValueChanged(javax.swing.event.TreeSelectionEvent evt) {//GEN-FIRST:event_sourceTreeValueChanged
- //get the selected node and if it is a file, open it in the source editor
- TreePath path = sourceTree.getSelectionPath();
- TreeNode node = (TreeNode)path.getLastPathComponent();
- if (node instanceof FileTreeNode) {
- File f = (File)((FileTreeNode)node).getUserObject();
- if (f.isFile()) {
- //read the contents of the file into a String
- try {
- // StringBuilder buffer = new StringBuilder();
- // byte[] bytes = new byte[1024];
- // int length = -1;
- // InputStream is = new FileInputStream(f);
- // while ((length = is.read(bytes)) != -1) {
- // buffer.append(new String(bytes, 0, length));
- // }
- // oldEditorPane.setEditorKit(new RTFEditorKit());
- // oldEditorPane.setText(buffer.toString());
- oldEditorPane.setPage(f.toURL());
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- }//GEN-LAST:event_sourceTreeValueChanged
- private void closeWindowMIActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_closeWindowMIActionPerformed
- setVisible(false);
- }//GEN-LAST:event_closeWindowMIActionPerformed
- // Variables declaration - do not modify//GEN-BEGIN:variables
- private javax.swing.JMenuItem closeWindowMI;
- private javax.swing.JMenu jMenu1;
- private javax.swing.JMenuBar jMenuBar1;
- private javax.swing.JMenuItem jMenuItem1;
- private javax.swing.JScrollPane jScrollPane1;
- private javax.swing.JScrollPane jScrollPane2;
- private javax.swing.JSeparator jSeparator1;
- private javax.swing.JSplitPane jSplitPane1;
- private javax.swing.JEditorPane oldEditorPane;
- private javax.swing.JTree sourceTree;
- // End of variables declaration//GEN-END:variables
- private TreeModel createTreeModel() {
- DefaultMutableTreeNode root = new DefaultMutableTreeNode("Sources");
- createDirectory(root, rootDir);
- return new DefaultTreeModel(root);
- }
- private void createDirectory(DefaultMutableTreeNode dirNode, File rootDir) {
- if (rootDir != null && dirNode != null) {
- for (File f : rootDir.listFiles()) {
- if (f.isDirectory()) {
- DefaultMutableTreeNode dir = new FileTreeNode(f);
- dirNode.add(dir);
- createDirectory(dir, f);
- } else if (f.isFile()) {
- DefaultMutableTreeNode file = new FileTreeNode(f);
- dirNode.add(file);
- }
- }
- }
- }
- private static final class FileTreeNode extends DefaultMutableTreeNode {
- public FileTreeNode(File f) {
- super(f);
- }
- public String toString() {
- File f = (File)getUserObject();
- if (f.isDirectory()) {
- return ((File)getUserObject()).getName() + "/";
- } else {
- return ((File)getUserObject()).getName();
- }
- }
- }
- }