⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainframe.java

📁 一个简单的操作系统模拟程序 java+swing 可进行一般的文件操作 进程建立及删除等
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
                        if((commend.length == 1) || commend[1].equals("/") || commend[1].equals(".") || commend[1].equals("..")){ // the invalid arguments
                            cmdOutputLabel.setText(sysPrompt + " mkdir: invalid argument.");
                        } else if( (treeModel.getChild(commend[1].split("/"))) != null){
                                    cmdOutputLabel.setText(sysPrompt + " mkdir: file already exist.");
                                } else if((treeModel.getParent(commend[1].split("/"))) == null){
                                            cmdOutputLabel.setText(sysPrompt + " mkdir: wrong path or dictory");
                                        } else {
                                            String fileName;
                                            String[] dentry;
                                            String tmpFileName;
                                    
                                            //split the path
                                            dentry = commend[1].split("/");
                                            //get the file name
                                            tmpFileName = dentry[dentry.length - 1];
                                            if(tmpFileName.length() > 10){ //for the situation that the length of file name is larger than 10
                                                fileName = tmpFileName.substring(0,9);
                                            } else {
                                                fileName = tmpFileName;
                                            }
                                            //create the inode
                                            INode newINode = new INode(fileName,simDisk); 
                                            DefaultMutableTreeNode newChild = new DefaultMutableTreeNode(newINode);
                                            newChild.setAllowsChildren(true);
                                            //insert the new tree node into the tree
                                            try{
                                                DefaultMutableTreeNode parent = (DefaultMutableTreeNode)treeModel.getParent(dentry);
                                                treeModel.insertNodeInto(newChild,parent,parent.getChildCount());
                                                cmdOutputLabel.setText(sysPrompt + " mkdir: create dirctory " + fileName + " scessfully !");
                                        
                                                TreeNode[]   nodes   =   treeModel.getPathToRoot(newChild);   
                                                TreePath   pathToRoot   =   new   TreePath(nodes);   
                                                fileTree.scrollPathToVisible(pathToRoot);
                                                this.calculateDisk();
                                            }
                                            catch(IllegalStateException exception){
                                                cmdOutputLabel.setText(sysPrompt + " mkdir: file is not allow to have children");
                                            }
                                        }
//                    cmdOutputLabel.setText(sysPrompt + "mkdir");
                    } else if(commend[0].equals("del")){ //the delete commend
                                if((commend.length == 1) || commend[1].equals("/") || commend[1].equals(".") || commend[1].equals("..")){ // the invalid arguments
                                    cmdOutputLabel.setText(sysPrompt + " del: invalid argument.");
                                } else if((treeModel.getChild(commend[1].split("/"))) == null){
                                            cmdOutputLabel.setText(sysPrompt + " del: file do not exist."); 
                                        } else if(treeModel.getChild(commend[1].split("/")).getAllowsChildren()){//if allow children ,then it is a dirctory .del can not del a dirctory
                                                    cmdOutputLabel.setText(sysPrompt + " del: can not delete a dirctory");
                                                } else {
                                                    treeModel.removeNodeFromParent((DefaultMutableTreeNode)treeModel.getChild(commend[1].split("/")));
                                                    String fileName;
                                                    String[] dentry;
                                                    
                                                    dentry = commend[1].split("/");
                                                    fileName = dentry[dentry.length - 1];
                                                    cmdOutputLabel.setText(sysPrompt + " del: delete file " + fileName + " sucessfully !");
                                                    this.calculateDisk();
                                                }
//                                    cmdOutputLabel.setText(sysPrompt + "delete");
                            } else if(commend[0].equals("rm")){ //the rm commend
                                        if((commend.length == 1) || commend[1].equals("/") || commend[1].equals(".") || commend[1].equals("..")){ // the invalid arguments
                                            cmdOutputLabel.setText(sysPrompt + " rm: invalid argument.");
                                        } else if((treeModel.getChild(commend[1].split("/"))) == null){
                                                    cmdOutputLabel.setText(sysPrompt + " rm: file do not exist."); 
                                                } else {
                                                    if((((DefaultMutableTreeNode)treeModel.getChild(commend[1].split("/"))).getChildCount()) > 0){
                                                        int result = JOptionPane.showConfirmDialog(null,"Dirctory is not null,still want to remove it?","Need Confirm",JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE);
                                                        if(result == JOptionPane.YES_OPTION){
                                                            treeModel.removeNodeFromParent((DefaultMutableTreeNode)treeModel.getChild(commend[1].split("/")));
                                                            String fileName;
                                                            String[] dentry;
                                                    
                                                            dentry = commend[1].split("/");
                                                            fileName = dentry[dentry.length - 1];
                                                            cmdOutputLabel.setText(sysPrompt + " rm: delete " + fileName + " sucessfully !");
                                                            this.calculateDisk();
                                                        }else {
                                                            cmdOutputLabel.setText(sysPrompt + " rm: aborted,since dirctory is not null.");
                                                        }
                                                    } else {
                                                        treeModel.removeNodeFromParent((DefaultMutableTreeNode)treeModel.getChild(commend[1].split("/")));
                                                        String fileName;
                                                        String[] dentry;
                                                    
                                                        dentry = commend[1].split("/");
                                                        fileName = dentry[dentry.length - 1];
                                                        cmdOutputLabel.setText(sysPrompt + " rm: delete " + fileName + " sucessfully !");
                                                        this.calculateDisk();
                                                    }
                                                    
                                                }
//                                    cmdOutputLabel.setText(sysPrompt + "rm");
                                    } else if(commend[0].equals("edit")){ //the edit commend
                                               if((commend.length == 1) || commend[1].equals("/") || commend[1].equals(".") || commend[1].equals("..")){ // the invalid arguments
                                                    cmdOutputLabel.setText(sysPrompt + " edit: invalid argument.");
                                                } else if((treeModel.getChild(commend[1].split("/"))) == null){
                                                            cmdOutputLabel.setText(sysPrompt + " edit: file do not exist."); 
                                                        } else if(treeModel.getChild(commend[1].split("/")).getAllowsChildren()){//if allow children ,then it is a dirctory .del can not del a dirctory
                                                                    cmdOutputLabel.setText(sysPrompt + " edit: can not edit a dirctory");
                                                                } else {
                                                                    INode targetINode;
                                                                    targetINode = (INode)((DefaultMutableTreeNode)treeModel.getChild(commend[1].split("/"))).getUserObject();
                                                                    EditorFrame editor = new EditorFrame(this,targetINode);
                                                                    editor.setVisible(true);
                                                                    this.calculateDisk();
                                                                }
//                                              cmdOutputLabel.setText(sysPrompt + "edit");
                                            } else if(commend[0].equals("run")){ //the run commend
                                                        if((commend.length == 1) || commend[1].equals("/") || commend[1].equals(".") || commend[1].equals("..")){ // the invalid arguments
                                                            cmdOutputLabel.setText(sysPrompt + " run: invalid argument.");
                                                        } else if((treeModel.getChild(commend[1].split("/"))) == null){
                                                                    cmdOutputLabel.setText(sysPrompt + " run: file do not exist."); 
                                                                } else if(treeModel.getChild(commend[1].split("/")).getAllowsChildren()){//if allow children ,then it is a dirctory .del can not del a dirctory
                                                                            cmdOutputLabel.setText(sysPrompt + " run:target is not a executable file");
                                                                        } else {
                                                                            INode targetINode;
                                                                            TreeNode targetTreeNode = treeModel.getChild(commend[1].split("/"));
                                                                            targetINode = (INode)((DefaultMutableTreeNode)targetTreeNode).getUserObject();
                                                                            String targetName = targetINode.toString();
                                                                            int returnState = sysKernel.create(targetName,targetINode.readContent(),targetTreeNode);
                                                                            if(returnState == -1){
                                                                                cmdOutputLabel.setText(sysPrompt + " run:there is no free pcb");
                                                                            } else if(returnState == -2){
                                                                                    cmdOutputLabel.setText(sysPrompt + " run:there is no free memory");
                                                                                } else {
                                                                                    cmdOutputLabel.setText(sysPrompt + " run: Process: " + targetName + " create!");
                                                                                }
                                                                        }
//                                                        cmdOutputLabel.setText(sysPrompt + "run");
                                                    } else if(commend[0].equals("cp")){ //the copy commend
                                                                
                                                                cmdOutputLabel.setText(sysPrompt + "copy");
                                                            } else if(commend[0].equals("mv")){ //the move commend
                                                            
                                                                        cmdOutputLabel.setText(sysPrompt + "move");
                                                                    } else if(commend[0].equals("cd")){ //the change dir commend
                                                                                if((commend.length == 1)){ // the invalid arguments
                                                                                    cmdOutputLabel.setText(sysPrompt + " cd: invalid argument.");
                                                                                } else if(commend[1].equals("/")){
                                                                                            treeModel.setCurrentNode(rootNode);
                                                                                            this.setSysPrompt();
                                                                                            cmdOutputLabel.setText(sysPrompt + " cd: change dirctory sucessfully !");
                                                                                        } else if((treeModel.getChild(commend[1].split("/"))) == null){
                                                                                                    cmdOutputLabel.setText(sysPrompt + " cd: dirctory do not exist.");
                                                                                                } else if(!treeModel.getChild(commend[1].split("/")).getAllowsChildren()){
                                                                                                            cmdOutputLabel.setText(sysPrompt + " cd: can not change dirctory to a file.");
                                                                                                        } else{
                                                                                                            treeModel.setCurrentNode(treeModel.getChild(commend[1].split("/")));
                                                                                                            this.setSysPrompt();
                                                                                                            cmdOutputLabel.setText(sysPrompt + " cd: change dirctory sucessfully !");
                                                                                                        }
//                                                                              cmdOutputLabel.setText(sysPrompt + "cd");
                                                                            } else { // invalid commend
                                                                                cmdOutputLabel.setText(sysPrompt + "invalid commend");
                                                                            }
        }
        
        cmdInputField.setText("");        
    }//GEN-LAST:event_cmdInputFieldActionPerformed
    
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new MainFrame().setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JLabel IRDisplayLabel;
    private javax.swing.JLabel IRPromptLabel;
    private javax.swing.JMenu TipMenu;
    private javax.swing.JMenuItem aboutMenuItem;
    private javax.swing.JTextArea blockProcArea;
    private javax.swing.JLabel blockProcLabel;
    private javax.swing.JLabel cmdHistoryLabel;
    private javax.swing.JTextField cmdInputField;
    private javax.swing.JLabel cmdInputLabel;
    private javax.swing.JLabel cmdOutputLabel;
    private javax.swing.JMenuItem cmdtipsMenuItem;
    private javax.swing.JTextArea devAArea;
    private javax.swing.JLabel devALabel;
    private javax.swing.JLabel devATime;
    private javax.swing.JTextArea devBArea;
    private javax.swing.JLabel devBLabel;
    private javax.swing.JLabel devBTime;
    private javax.swing.JTextArea devCArea;
    private javax.swing.JLabel devCLabel;
    private javax.swing.JLabel devCTime;
    private javax.swing.JTextArea diskUsageArea;
    private javax.swing.JProgressBar diskUsageBar;
    private javax.swing.JLabel diskUsageLabel;
    private javax.swing.JTree fileTree;
    private javax.swing.JTextArea finalResultArea;
    private javax.swing.JLabel finalResultLabel;
    private javax.swing.JMenu helpMenu;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JScrollPane jScrollPane4;
    private javax.swing.JScrollPane jScrollPane5;
    private javax.swing.JScrollPane jScrollPane6;
    private javax.swing.JScrollPane jScrollPane7;
    private javax.swing.JScrollPane jScrollPane8;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -