📄 jarutil.java
字号:
/*
* JarUtil.java
*
*/
package ranab.jar;
import java.util.zip.ZipEntry;
import java.util.jar.JarFile;
import java.io.File;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.EtchedBorder;
import ranab.gui.*;
import ranab.jar.view.*;
/**
* Main JarUtil GUI frame.
*
* @author <a href="mailto:rana_b@yahoo.com">Rana Bhattacharyya</a>
*/
public
class JarUtil extends JFrame {
private final static String SPLASH_IMG = "ranab/jar/jar.gif";
private final static String APP_NAME = "JarUtil";
private JMenuBar mjMenuBar;
private JMenu mjFileMenu;
private JMenu mjNewMenu;
private JMenuItem mjNewJarMenu;
private JMenuItem mjNewZipMenu;
private JMenuItem mjOpenMenu;
private JMenuItem mjAddMenu;
private JMenuItem mjCloseMenu;
private JMenu mjExtractMenu;
private JMenuItem mjExtractAllMenu;
private JMenuItem mjExtractSelectMenu;
private JSeparator mjExitSeparator;
private JMenuItem mjExitMenu;
private JMenu mjCustomizeMenu;
private JMenu mjLookFeelMenu;
private JCheckBoxMenuItem mjMetalMenu;
private JCheckBoxMenuItem mjWindowsMenu;
private JCheckBoxMenuItem mjMotifMenu;
private JMenu mjViewMenu;
private JCheckBoxMenuItem mjTableViewMenu;
private JCheckBoxMenuItem mjTreeViewMenu;
private JMenu mjHelpMenu;
private JMenuItem mjAboutMenu;
private JPanel mjTopPane;
private JarUtil mSelf;
private JarTable mJarTable;
private JarTree mJarTree;
private File mCurrentOpenFile;
private Compressor mCompressor;
private AddFileChooser mFileChooser;
/**
* Creates new form JFrame
*/
public JarUtil(String zipFile) {
// show splash window
JWindow splashWin = GuiUtils.createSplashWindow(SPLASH_IMG);
if (splashWin != null) {
splashWin.setVisible(true);
}
initComponents ();
pack ();
setSize(new Dimension(700, 600));
GuiUtils.setLocation(this);
mCurrentOpenFile = null;
mCompressor = null;
mSelf = this;
setAppStatus();
// hide splash window
if (splashWin != null) {
splashWin.setVisible(false);
splashWin.dispose();
}
setVisible(true);
if (zipFile != null) {
mCurrentOpenFile = new File(zipFile);
openFile();
}
}
/**
* This method is called from within the constructor to
* initialize the form.
*/
private void initComponents () {
mjMenuBar = new JMenuBar ();
mjFileMenu = new JMenu ("File");
mjNewMenu = new JMenu ("New");
mjNewJarMenu = new JMenuItem ("Jar");
mjNewZipMenu = new JMenuItem ("Zip");
mjOpenMenu = new JMenuItem ("Open");
mjAddMenu = new JMenuItem ("Add");
mjCloseMenu = new JMenuItem ("Close");
mjExtractMenu = new JMenu ("Extract");
mjExtractAllMenu = new JMenuItem ("All");
mjExtractSelectMenu = new JMenuItem ("Selection");
mjExitSeparator = new JSeparator ();
mjExitMenu = new JMenuItem ("Exit");
mjCustomizeMenu = new JMenu("Customize");
mjLookFeelMenu = new JMenu ("Look & Feel");
mjMetalMenu = new JCheckBoxMenuItem ("Metal", true);
mjWindowsMenu = new JCheckBoxMenuItem ("Windows", false);
mjMotifMenu = new JCheckBoxMenuItem ("Motif", false);
mjViewMenu = new JMenu("View");
mjTableViewMenu = new JCheckBoxMenuItem("Table", true);
mjTreeViewMenu = new JCheckBoxMenuItem("Tree", false);
mjHelpMenu = new JMenu("Help");
mjAboutMenu = new JMenuItem("About");
mFileChooser = new AddFileChooser();
// new file menu
mjNewJarMenu.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent evt) {
mjNewJarMenuActionPerformed (evt);
}
}
);
mjNewMenu.add (mjNewJarMenu);
mjNewZipMenu.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent evt) {
mjNewZipMenuActionPerformed (evt);
}
}
);
mjNewMenu.add (mjNewZipMenu);
mjFileMenu.add (mjNewMenu);
// open menu
mjOpenMenu.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent evt) {
mjOpenMenuActionPerformed (evt);
}
}
);
mjFileMenu.add (mjOpenMenu);
// add menu
mjAddMenu.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent evt) {
mjAddMenuActionPerformed (evt);
}
}
);
mjFileMenu.add (mjAddMenu);
// close menu
mjCloseMenu.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent evt) {
mjCloseMenuActionPerformed (evt);
}
}
);
mjFileMenu.add (mjCloseMenu);
// extract menu
mjExtractAllMenu.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent evt) {
mjExtractAllMenuActionPerformed (evt);
}
}
);
mjExtractMenu.add(mjExtractAllMenu);
mjExtractSelectMenu.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent evt) {
mjExtractSelectMenuActionPerformed (evt);
}
}
);
mjExtractMenu.add(mjExtractSelectMenu);
mjFileMenu.add (mjExtractMenu);
mjFileMenu.add (mjExitSeparator);
// exit menu
mjExitMenu.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent evt) {
mjExitMenuActionPerformed (evt);
}
}
);
mjFileMenu.add (mjExitMenu);
mjMenuBar.add (mjFileMenu);
// look and feel menu
mjMetalMenu.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent evt) {
mjMetalMenuActionPerformed (evt);
}
}
);
mjLookFeelMenu.add (mjMetalMenu);
mjWindowsMenu.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent evt) {
mjWindowsMenuActionPerformed (evt);
}
}
);
mjLookFeelMenu.add (mjWindowsMenu);
mjMotifMenu.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent evt) {
mjMotifMenuActionPerformed (evt);
}
}
);
mjLookFeelMenu.add (mjMotifMenu);
mjCustomizeMenu.add (mjLookFeelMenu);
// view menu
mjTableViewMenu.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent evt) {
mjTableViewMenuActionPerformed (evt);
}
}
);
mjViewMenu.add (mjTableViewMenu);
mjTreeViewMenu.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent evt) {
mjTreeViewMenuActionPerformed (evt);
}
}
);
mjViewMenu.add (mjTreeViewMenu);
mjCustomizeMenu.add(mjViewMenu);
mjMenuBar.add (mjCustomizeMenu);
// help menu
mjAboutMenu.addActionListener (new ActionListener() {
public void actionPerformed(ActionEvent evt) {
mjAboutMenuActionPerformed (evt);
}
}
);
mjHelpMenu.add (mjAboutMenu);
mjMenuBar.add (mjHelpMenu);
// draw table pane
mjTopPane = new JPanel();
mjTopPane.setLayout(new BorderLayout());
mJarTable = new JarTable(mjTopPane);
mJarTable.setActive(true);
mJarTree = new JarTree(mjTopPane);
mJarTree.setActive(false);
mjTopPane.setBackground(Color.white);
mjTopPane.add(mJarTable.getPanel(), BorderLayout.CENTER);
getContentPane ().add (mjTopPane, BorderLayout.CENTER);
setJMenuBar (mjMenuBar);
}
///// all menu handlers /////
// new zip menu handle
private void mjNewZipMenuActionPerformed (ActionEvent evt) {
// get filename
String newZip = GuiUtils.getFileName(mSelf);
if (newZip == null) {
return;
}
// if exists get confirmation
File zipFile = new File(newZip);
if (zipFile.exists()) {
boolean yes = GuiUtils.getConfirmation(mSelf, "Do you want to overwrite " + zipFile + "?");
if (!yes) {
return;
}
}
// open compressor
try {
mCompressor = new ZipCompressor(zipFile);
mCompressor.addObserver(mJarTable);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -