📄 jarutil.java
字号:
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 + -