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

📄 jarutil.java

📁 Ftp服务1.0
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            mCompressor.addObserver(mJarTree);
            mCompressor.open();
            mCurrentOpenFile = null;
        } catch (Exception ex) {
            mCompressor = null;
        }

        setAppStatus();
    }

    // new jar menu handle
    private void mjNewJarMenuActionPerformed (ActionEvent evt) {

        // get filename
        String newJar = GuiUtils.getFileName(mSelf);
        if (newJar == null) {
            return;
        }

        // if exists get confirmation
        File jarFile = new File(newJar);
        if (jarFile.exists()) {
            boolean yes = GuiUtils.getConfirmation(mSelf, "Do you want to overwrite " + jarFile + "?");
            if (!yes) {
                return;
            }
        }

        // open compresor
        try {
            mCompressor = new JarCompressor(new File(newJar));
            mCompressor.addObserver(mJarTable);
            mCompressor.addObserver(mJarTree);
            mCompressor.open();
            mCurrentOpenFile = null;
        } catch (Exception ex) {
            mCompressor = null;
        }

        setAppStatus();
    }

    // open menu handler
    private void mjOpenMenuActionPerformed (ActionEvent evt) {
        String zipFile = GuiUtils.getFileName(mSelf);
        if (zipFile == null) {
            return;
        }

        mCurrentOpenFile = new File(zipFile);
        mCompressor = null;

        openFile();
    }

    // add menu handler
    private void mjAddMenuActionPerformed (ActionEvent evt) {

        File selectedFile = mFileChooser.getFileName(mSelf);
        if (selectedFile == null) {
            return;
        }

        boolean recursive = mFileChooser.isRecursive();
        boolean pathInfo = mFileChooser.isPathInfo();
        int level = mFileChooser.getCompressionLevel();
        mCompressor.addFile(selectedFile, recursive, pathInfo, level);
    }

    // close menu handle
    private void mjCloseMenuActionPerformed (ActionEvent evt) {

        mCompressor.close();
        mCurrentOpenFile = new File(mCompressor.toString());
        mCompressor = null;
        setAppStatus();
    }

    // extract all menu handler
    private void mjExtractAllMenuActionPerformed (ActionEvent evt) {

        String dir = GuiUtils.getDirName(mSelf);
        if (dir == null) {
            return;
        }

        File zipDir = new File(dir);
        JarExtractor extr = new JarAllExtractor(mCurrentOpenFile, zipDir);
        new ExtractorDialog(mSelf, extr);
        
    }

    // extract selection menu handler
    private void mjExtractSelectMenuActionPerformed (ActionEvent evt) {
        
        JarUI currUI = null;
        if (mJarTable.isActive())  {
            currUI = mJarTable;
        }
        else  {
            currUI = mJarTree;
        }
        
        ZipEntry ze[] = currUI.getSelectedEntries();
        
        if (ze == null) {
            return;
        }

        String dirName = GuiUtils.getDirName(mSelf);
        if (dirName == null) {
            return;
        }

        File dirFile = new File(dirName);
        JarExtractor extr = new JarSelectiveExtractor(ze, mCurrentOpenFile, dirFile);
        new ExtractorDialog(mSelf, extr);
    }

    // exit menu handles
    private void mjExitMenuActionPerformed (ActionEvent evt) {
        if (GuiUtils.getConfirmation(mSelf, "Do you really want to exit?")) {
            mSelf.setVisible(false);
            mSelf.dispose();
            System.exit(0);
        }
    }

    // windows L&F menu handle
    private void mjWindowsMenuActionPerformed (ActionEvent evt) {
        mjMetalMenu.setState(false);
        mjWindowsMenu.setState(true);
        mjMotifMenu.setState(false);
        menuLfHandle("Windows", "com.sun.java.swing.plaf.windows.WindowsLookAndFeel");    
    }

    // metal L&F menu handle
    private void mjMetalMenuActionPerformed (ActionEvent evt) {
        mjMetalMenu.setState(true);
        mjWindowsMenu.setState(false);
        mjMotifMenu.setState(false);
        menuLfHandle("Metal", "javax.swing.plaf.metal.MetalLookAndFeel");
    }

    // motif L&F menu handle
    private void mjMotifMenuActionPerformed (ActionEvent evt) {
        mjMetalMenu.setState(false);
        mjWindowsMenu.setState(false);
        mjMotifMenu.setState(true);
        menuLfHandle("Motif", "com.sun.java.swing.plaf.motif.MotifLookAndFeel");
    }
    
    // table miew menu handle
    private void mjTableViewMenuActionPerformed (ActionEvent evt)  {
        mjTableViewMenu.setState(true);
        mjTreeViewMenu.setState(false);
        if (!mJarTable.isActive())  {
            changePanel(mJarTable.getPanel());
        }
        mJarTable.setActive(true);
        mJarTree.setActive(false);
    }

    // tree view menu handle
    private void mjTreeViewMenuActionPerformed (ActionEvent evt)  {
        mjTableViewMenu.setState(false);
        mjTreeViewMenu.setState(true);
        if (!mJarTree.isActive())  {
            changePanel(mJarTree.getPanel());
        }
        mJarTable.setActive(false);
        mJarTree.setActive(true);
    }

    /**
     * about menu handler
     */
    private void mjAboutMenuActionPerformed (ActionEvent evt)  {
        AboutDialog abtDlg = new AboutDialog(mSelf, true);
        abtDlg.setImage(SPLASH_IMG);
        abtDlg.setText("rana_b@yahoo.com");
        abtDlg.setButtonText("Close");
        abtDlg.setForegroundColor(Color.blue);
        abtDlg.display();
    }
    
    /**
     * open jar/zip file
     */
    private void openFile()  {
        JarViewer jarView = new JarViewer(mCurrentOpenFile);
        jarView.addObserver(mJarTable);
        jarView.addObserver(mJarTree);
        jarView.view();
        setAppStatus();
    } 

    /**
     * set look and feel
     */
    private void menuLfHandle(String name, String lnfName) {

        try {
            UIManager.setLookAndFeel(lnfName);
            SwingUtilities.updateComponentTreeUI(this);
            GuiUtils.updateLnF();  
            mJarTable.updateLnF();
            mJarTree.updateLnF();
        } catch (ClassNotFoundException ex) {
            GuiUtils.showErrorMessage(this, "Class " + lnfName + " not found.");
        } catch (InstantiationException ex) {
            GuiUtils.showErrorMessage(this, "Cannot instantiate " + lnfName);
        } catch (UnsupportedLookAndFeelException ex) {
            GuiUtils.showErrorMessage(this, "Unsupported Look & Feel " + name);
        } catch (Exception ex) {
            GuiUtils.showErrorMessage(this, ex.getLocalizedMessage());
        }
    }


    /*
     * Handle window closing event.
     */
    protected void processWindowEvent(WindowEvent e) {

        int id = e.getID();
        if (id == WindowEvent.WINDOW_CLOSING) {
            if ( !GuiUtils.getConfirmation(mSelf, "Do you really want to exit?") ) {
                return;
            }

            super.processWindowEvent(e);
            mSelf.setVisible(false);
            mSelf.dispose();
            System.exit(0);
        } 
        else {
            super.processWindowEvent(e);
        }
    }

    /**
     * set menu status
     */
    private void setAppStatus() {

        // set window title
        if (mCurrentOpenFile != null) {
            mSelf.setTitle(APP_NAME + " - " + mCurrentOpenFile.getAbsolutePath());
        } else if (mCompressor != null) {
            mSelf.setTitle(APP_NAME + " - " + mCompressor.toString());
        } else {
            mSelf.setTitle(APP_NAME);
        }

        // set menu status
        if (mCurrentOpenFile != null) {
            mjNewJarMenu.setEnabled(true);
            mjNewZipMenu.setEnabled(true);
            mjOpenMenu.setEnabled(true);
            mjAddMenu.setEnabled(false);
            mjCloseMenu.setEnabled(false);
            mjExtractAllMenu.setEnabled(true);
            mjExtractSelectMenu.setEnabled(true);
        } else if (mCompressor != null) {
            mjNewJarMenu.setEnabled(false);
            mjNewZipMenu.setEnabled(false);
            mjOpenMenu.setEnabled(false);
            mjAddMenu.setEnabled(true);
            mjCloseMenu.setEnabled(true);
            mjExtractAllMenu.setEnabled(false);
            mjExtractSelectMenu.setEnabled(false);
        } else {
            mjNewJarMenu.setEnabled(true);
            mjNewZipMenu.setEnabled(true);
            mjOpenMenu.setEnabled(true);
            mjAddMenu.setEnabled(false);
            mjCloseMenu.setEnabled(false);
            mjExtractAllMenu.setEnabled(false);
            mjExtractSelectMenu.setEnabled(false);
        }

    }

    /**
     * change panel
     */
    private void changePanel(JPanel currPane)  {
        mjTopPane.removeAll();
        mjTopPane.add(currPane, BorderLayout.CENTER);
        mjTopPane.validate();
        mjTopPane.repaint();
    }
        
    // program starting point
    public static void main(String args[]) {

        String fileStr = null;
        if (args.length > 0) {
            fileStr = args[0];
        }

        JarUtil mj = new JarUtil(fileStr);
    }

}

⌨️ 快捷键说明

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