[zhyi~subversion:55] JarDependencyWalker final version.
- From: zhyi@kenai.com
- To: commits@zhyi.kenai.com
- Subject: [zhyi~subversion:55] JarDependencyWalker final version.
- Date: Sun, 29 Nov 2009 07:24:14 +0000
Project: zhyi
Repository: subversion
Revision: 55
Author: zhyi
Date: 2009-11-29 07:24:11 UTC
Link:
Log Message:
------------
JarDependencyWalker final version.
Revisions:
----------
55
Modified Paths:
---------------
JarDependencyWalker/nbproject/project.properties
JarDependencyWalker/src/com/zhyi/jdw/ui/JarDependencyWalkerFrame.java
JarDependencyWalker
JarDependencyWalker/src/com/zhyi/jdw/ui/JarDependencyWalkerFrame.form
Added Paths:
------------
JarDependencyWalker/src/com/zhyi/jdw/common
JarDependencyWalker/src/com/zhyi/jdw/common/JarFileWrapper.java
Diffs:
------
Index: JarDependencyWalker/nbproject/project.properties
===================================================================
--- JarDependencyWalker/nbproject/project.properties (revision 54)
+++ JarDependencyWalker/nbproject/project.properties (revision 55)
@@ -46,7 +46,7 @@
javadoc.use=true
javadoc.version=false
javadoc.windowtitle=
-main.class=
+main.class=com.zhyi.jdw.ui.JarDependencyWalkerFrame
manifest.file=manifest.mf
meta.inf.dir=${src.dir}/META-INF
platform.active=default_platform
Index: JarDependencyWalker/src/com/zhyi/jdw/common/JarFileWrapper.java
===================================================================
--- JarDependencyWalker/src/com/zhyi/jdw/common/JarFileWrapper.java
(revision 0)
+++ JarDependencyWalker/src/com/zhyi/jdw/common/JarFileWrapper.java
(revision 55)
@@ -0,0 +1,46 @@
+/*
+ * FileWrapper.java
+ *
+ * Copyright (C) 2009 Zhao Yi
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.zhyi.jdw.common;
+
+import com.zhyi.zylib.toolkit.FileToolkit;
+import java.util.jar.JarFile;
+
+/**
+ * Wraps {@code java.util.jar.JarFile} for providing the file name instead of
+ * the file path via {@code toString()}.
+ * @author Zhao Yi
+ */
+public class JarFileWrapper {
+
+ private JarFile jar;
+
+ public JarFileWrapper(JarFile jar) {
+ this.jar = jar;
+ }
+
+ public JarFile getJarFile() {
+ return jar;
+ }
+
+ @Override
+ public String toString() {
+ return FileToolkit.getFileNameFromPath(jar.getName());
+ }
+
+}
Index: JarDependencyWalker/src/com/zhyi/jdw/ui/JarDependencyWalkerFrame.java
===================================================================
--- JarDependencyWalker/src/com/zhyi/jdw/ui/JarDependencyWalkerFrame.java
(revision 54)
+++ JarDependencyWalker/src/com/zhyi/jdw/ui/JarDependencyWalkerFrame.java
(revision 55)
@@ -18,12 +18,37 @@
*/
package com.zhyi.jdw.ui;
+import com.zhyi.jdw.common.JarFileWrapper;
+import com.zhyi.zylib.toolkit.ExceptionToolkit;
import com.zhyi.zylib.toolkit.SwingToolkit;
+import java.awt.Component;
import java.awt.EventQueue;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+import java.util.Enumeration;
+import java.util.Vector;
+import java.util.jar.JarFile;
+import javax.swing.DefaultListModel;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
+import javax.swing.JButton;
+import javax.swing.JFileChooser;
import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JOptionPane;
+import javax.swing.JScrollPane;
+import javax.swing.JSeparator;
+import javax.swing.JTable;
+import javax.swing.JTextField;
+import javax.swing.LayoutStyle.ComponentPlacement;
+import javax.swing.SwingConstants;
+import javax.swing.SwingWorker;
import javax.swing.WindowConstants;
+import javax.swing.filechooser.FileNameExtensionFilter;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableColumnModel;
/**
* The main frame.
@@ -31,6 +56,14 @@
*/
public class JarDependencyWalkerFrame extends JFrame {
+ private final Vector<String> columnNames = new Vector<String>();
+ {
+ columnNames.add("Jar File");
+ columnNames.add("Depends On");
+ };
+
+ private DefaultListModel listModel = new DefaultListModel();
+
public JarDependencyWalkerFrame() {
initComponents();
}
@@ -44,24 +77,225 @@
// <editor-fold defaultstate="collapsed" desc="Generated
Code">//GEN-BEGIN:initComponents
private void initComponents() {
+ jarFileChooser = new JFileChooser();
+ jarListScrollPane = new JScrollPane();
+ jarList = new JList(listModel);
+ addButton = new JButton();
+ removeButton = new JButton();
+ separator = new JSeparator();
+ goButton = new JButton();
+ resultTableScrollPane = new JScrollPane();
+ resultTable = new JTable();
+ summaryLabel = new JLabel();
+ summaryTextField = new JTextField();
+ copyButton = new JButton();
+ jButton1 = new JButton();
+
+ jarFileChooser.setMultiSelectionEnabled(true);
+ jarFileChooser.setFileFilter(
+ new FileNameExtensionFilter("Jar File (*.jar)", "jar"));
+
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setTitle("Jar Dependency Walker");
setResizable(false);
+ jarList.setLayoutOrientation(JList.HORIZONTAL_WRAP);
+ jarList.setVisibleRowCount(-1);
+ jarListScrollPane.setViewportView(jarList);
+
+ addButton.setText("Add...");
+ addButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent evt) {
+ addButtonActionPerformed(evt);
+ }
+ });
+
+ removeButton.setText("Remove");
+ removeButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent evt) {
+ removeButtonActionPerformed(evt);
+ }
+ });
+
+ goButton.setText("Go");
+ goButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent evt) {
+ goButtonActionPerformed(evt);
+ }
+ });
+
+ updateResult(new Result());
+ resultTableScrollPane.setViewportView(resultTable);
+
+ summaryLabel.setText("Summary:");
+
+ summaryTextField.setEditable(false);
+
+ copyButton.setText("Copy");
+ copyButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent evt) {
+ copyButtonActionPerformed(evt);
+ }
+ });
+
+ jButton1.setText("About...");
+ jButton1.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent evt) {
+ jButton1ActionPerformed(evt);
+ }
+ });
+
GroupLayout layout = new GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(Alignment.LEADING)
- .addGap(0, 400, Short.MAX_VALUE)
+ .addGroup(layout.createSequentialGroup()
+ .addGroup(layout.createParallelGroup(Alignment.LEADING)
+ .addComponent(separator, GroupLayout.DEFAULT_SIZE, 470,
Short.MAX_VALUE)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(summaryLabel)
+ .addPreferredGap(ComponentPlacement.RELATED)
+ .addComponent(summaryTextField,
GroupLayout.DEFAULT_SIZE, 234, Short.MAX_VALUE)
+ .addPreferredGap(ComponentPlacement.RELATED)
+ .addComponent(copyButton)
+ .addPreferredGap(ComponentPlacement.RELATED)
+ .addComponent(jButton1))
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+
.addGroup(layout.createParallelGroup(Alignment.LEADING)
+ .addComponent(resultTableScrollPane,
GroupLayout.DEFAULT_SIZE, 460, Short.MAX_VALUE)
+ .addGroup(layout.createSequentialGroup()
+
.addGroup(layout.createParallelGroup(Alignment.LEADING)
+ .addComponent(addButton)
+ .addComponent(removeButton))
+ .addPreferredGap(ComponentPlacement.RELATED)
+ .addComponent(jarListScrollPane,
GroupLayout.DEFAULT_SIZE, 334, Short.MAX_VALUE)
+ .addPreferredGap(ComponentPlacement.RELATED)
+ .addComponent(goButton)))))
+ .addContainerGap())
);
+
+ layout.linkSize(SwingConstants.HORIZONTAL, new Component[]
{addButton, removeButton});
+
+ layout.linkSize(SwingConstants.HORIZONTAL, new Component[]
{copyButton, jButton1});
+
layout.setVerticalGroup(
layout.createParallelGroup(Alignment.LEADING)
- .addGap(0, 300, Short.MAX_VALUE)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(layout.createParallelGroup(Alignment.LEADING,
false)
+ .addComponent(goButton, GroupLayout.DEFAULT_SIZE,
GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jarListScrollPane)
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(addButton)
+ .addPreferredGap(ComponentPlacement.RELATED)
+ .addComponent(removeButton)))
+ .addPreferredGap(ComponentPlacement.RELATED)
+ .addComponent(separator, GroupLayout.PREFERRED_SIZE, 2,
GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(ComponentPlacement.RELATED)
+ .addComponent(resultTableScrollPane,
GroupLayout.DEFAULT_SIZE, 185, Short.MAX_VALUE)
+ .addPreferredGap(ComponentPlacement.RELATED)
+ .addGroup(layout.createParallelGroup(Alignment.BASELINE)
+ .addComponent(summaryLabel)
+ .addComponent(summaryTextField,
GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
GroupLayout.PREFERRED_SIZE)
+ .addComponent(copyButton)
+ .addComponent(jButton1))
+ .addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
+ private void addButtonActionPerformed(ActionEvent evt)
{//GEN-FIRST:event_addButtonActionPerformed
+ if (jarFileChooser.showOpenDialog(this) ==
JFileChooser.APPROVE_OPTION) {
+ for (File jar : jarFileChooser.getSelectedFiles()) {
+ try {
+ listModel.addElement(new JarFileWrapper(new
JarFile(jar)));
+ } catch (Exception ex) {
+ JOptionPane.showMessageDialog(this, ex.getMessage(),
+ "Error", JOptionPane.ERROR_MESSAGE);
+ }
+ }
+ }
+ }//GEN-LAST:event_addButtonActionPerformed
+
+ private void removeButtonActionPerformed(ActionEvent evt)
{//GEN-FIRST:event_removeButtonActionPerformed
+ for (int i : jarList.getSelectedIndices()) {
+ listModel.remove(i);
+ }
+ }//GEN-LAST:event_removeButtonActionPerformed
+
+ private void goButtonActionPerformed(ActionEvent evt)
{//GEN-FIRST:event_goButtonActionPerformed
+ goButton.setEnabled(false);
+ new SwingWorker<Result, Void>() {
+
+ @Override
+ protected Result doInBackground() throws Exception {
+ Result result = new Result();
+ Vector<Vector<String>> results = new
Vector<Vector<String>>();
+ Enumeration<?> e = listModel.elements();
+ while (e.hasMoreElements()) {
+ JarFileWrapper jarWrapper = (JarFileWrapper)
e.nextElement();
+ JarFile jar = jarWrapper.getJarFile();
+ Vector<String> row = new Vector<String>();
+ row.add(jarWrapper.toString());
+ String libs =
jar.getManifest().getMainAttributes().getValue("Class-Path");
+ row.add(libs);
+ result.data.add(row);
+ result.summary += (libs + " ");
+ }
+ result.summary = result.summary.substring(
+ 0, result.summary.length() - 1);
+ return result;
+ }
+
+ @Override
+ protected void done() {
+ try {
+ updateResult(get());
+ } catch (Exception ex) {
+ JOptionPane.showMessageDialog(
+ JarDependencyWalkerFrame.this,
+ ExceptionToolkit.getRootCause(ex).getMessage(),
+ "Error", JOptionPane.ERROR_MESSAGE);
+ } finally {
+ goButton.setEnabled(true);
+ }
+ }
+
+ }.execute();
+ }//GEN-LAST:event_goButtonActionPerformed
+
+ private void copyButtonActionPerformed(ActionEvent evt)
{//GEN-FIRST:event_copyButtonActionPerformed
+ summaryTextField.copy();
+ }//GEN-LAST:event_copyButtonActionPerformed
+
+ private void jButton1ActionPerformed(ActionEvent evt)
{//GEN-FIRST:event_jButton1ActionPerformed
+ JOptionPane.showMessageDialog(this,
+ "<html><h2>Jar Dependency Walker</h2>"
+ + "A tool for analyzing Jar dependencies from
manifests.<br><br>"
+ + "Copyright © 2009 Zhao Yi (shinzey@msn.com)<br>"
+ + "Licensed under GNU General Public License Version
3</html>",
+ "About Jar Dependency Walker",
JOptionPane.INFORMATION_MESSAGE);
+ }//GEN-LAST:event_jButton1ActionPerformed
+
+ private void updateResult(Result result) {
+ resultTable.setModel(new DefaultTableModel(result.data, columnNames)
{
+
+ @Override
+ public boolean isCellEditable(int row, int column) {
+ return false;
+ }
+
+ });
+ int tableWidth =
resultTable.getPreferredScrollableViewportSize().width;
+ TableColumnModel columnModel = resultTable.getColumnModel();
+ columnModel.getColumn(0).setPreferredWidth(150);
+ columnModel.getColumn(1).setPreferredWidth(tableWidth - 150);
+ summaryTextField.setText(result.summary);
+ }
+
public static void main(String[] args) {
SwingToolkit.initApplication();
EventQueue.invokeLater(new Runnable() {
@@ -77,6 +311,26 @@
}
// Variables declaration - do not modify//GEN-BEGIN:variables
+ private JButton addButton;
+ private JButton copyButton;
+ private JButton goButton;
+ private JButton jButton1;
+ private JFileChooser jarFileChooser;
+ private JList jarList;
+ private JScrollPane jarListScrollPane;
+ private JButton removeButton;
+ private JTable resultTable;
+ private JScrollPane resultTableScrollPane;
+ private JSeparator separator;
+ private JLabel summaryLabel;
+ private JTextField summaryTextField;
// End of variables declaration//GEN-END:variables
+ private class Result {
+
+ private Vector<Vector<String>> data = new Vector<Vector<String>>();
+ private String summary = "";
+
+ }
+
}
Index: JarDependencyWalker/src/com/zhyi/jdw/ui/JarDependencyWalkerFrame.form
===================================================================
--- JarDependencyWalker/src/com/zhyi/jdw/ui/JarDependencyWalkerFrame.form
(revision 54)
+++ JarDependencyWalker/src/com/zhyi/jdw/ui/JarDependencyWalkerFrame.form
(revision 55)
@@ -1,6 +1,16 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.3" maxVersion="1.7"
type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+ <NonVisualComponents>
+ <Component class="javax.swing.JFileChooser" name="jarFileChooser">
+ <Properties>
+ <Property name="multiSelectionEnabled" type="boolean" value="true"/>
+ </Properties>
+ <AuxValues>
+ <AuxValue name="JavaCodeGenerator_InitCodePost"
type="java.lang.String" value="jarFileChooser.setFileFilter(
 new
FileNameExtensionFilter("Jar File (*.jar)", "jar"));"/>
+ </AuxValues>
+ </Component>
+ </NonVisualComponents>
<Properties>
<Property name="defaultCloseOperation" type="int" value="3"/>
<Property name="title" type="java.lang.String" value="Jar Dependency
Walker"/>
@@ -24,13 +34,153 @@
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
- <EmptySpace min="0" pref="400" max="32767" attributes="0"/>
+ <Group type="102" attributes="0">
+ <Group type="103" groupAlignment="0" attributes="0">
+ <Component id="separator" alignment="0" pref="470"
max="32767" attributes="0"/>
+ <Group type="102" alignment="0" attributes="0">
+ <EmptySpace max="-2" attributes="0"/>
+ <Component id="summaryLabel" min="-2" max="-2"
attributes="0"/>
+ <EmptySpace max="-2" attributes="0"/>
+ <Component id="summaryTextField" pref="234"
max="32767" attributes="0"/>
+ <EmptySpace max="-2" attributes="0"/>
+ <Component id="copyButton" linkSize="2" min="-2"
max="-2" attributes="0"/>
+ <EmptySpace max="-2" attributes="0"/>
+ <Component id="jButton1" linkSize="2" min="-2"
max="-2" attributes="0"/>
+ </Group>
+ <Group type="102" alignment="0" attributes="0">
+ <EmptySpace max="-2" attributes="0"/>
+ <Group type="103" groupAlignment="0" attributes="0">
+ <Component id="resultTableScrollPane"
alignment="0" pref="460" max="32767" attributes="0"/>
+ <Group type="102" alignment="0" attributes="0">
+ <Group type="103" groupAlignment="0"
attributes="0">
+ <Component id="addButton" linkSize="1"
alignment="0" min="-2" max="-2" attributes="0"/>
+ <Component id="removeButton" linkSize="1"
alignment="0" min="-2" max="-2" attributes="0"/>
+ </Group>
+ <EmptySpace max="-2" attributes="0"/>
+ <Component id="jarListScrollPane" pref="334"
max="32767" attributes="0"/>
+ <EmptySpace max="-2" attributes="0"/>
+ <Component id="goButton" min="-2" max="-2"
attributes="0"/>
+ </Group>
+ </Group>
+ </Group>
+ </Group>
+ <EmptySpace max="-2" attributes="0"/>
+ </Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
- <EmptySpace min="0" pref="300" max="32767" attributes="0"/>
+ <Group type="102" alignment="0" attributes="0">
+ <EmptySpace max="-2" attributes="0"/>
+ <Group type="103" groupAlignment="0" max="-2" attributes="0">
+ <Component id="goButton" max="32767" attributes="1"/>
+ <Component id="jarListScrollPane" alignment="0"
max="32767" attributes="1"/>
+ <Group type="102" alignment="0" attributes="0">
+ <Component id="addButton" min="-2" max="-2"
attributes="0"/>
+ <EmptySpace max="-2" attributes="0"/>
+ <Component id="removeButton" min="-2" max="-2"
attributes="0"/>
+ </Group>
+ </Group>
+ <EmptySpace max="-2" attributes="0"/>
+ <Component id="separator" min="-2" pref="2" max="-2"
attributes="0"/>
+ <EmptySpace max="-2" attributes="0"/>
+ <Component id="resultTableScrollPane" pref="185" max="32767"
attributes="0"/>
+ <EmptySpace max="-2" attributes="0"/>
+ <Group type="103" groupAlignment="3" attributes="0">
+ <Component id="summaryLabel" alignment="3" min="-2"
max="-2" attributes="0"/>
+ <Component id="summaryTextField" alignment="3" min="-2"
max="-2" attributes="0"/>
+ <Component id="copyButton" alignment="3" min="-2" max="-2"
attributes="0"/>
+ <Component id="jButton1" alignment="3" min="-2" max="-2"
attributes="0"/>
+ </Group>
+ <EmptySpace max="-2" attributes="0"/>
+ </Group>
</Group>
</DimensionLayout>
</Layout>
+ <SubComponents>
+ <Container class="javax.swing.JScrollPane" name="jarListScrollPane">
+ <AuxValues>
+ <AuxValue name="autoScrollPane" type="java.lang.Boolean"
value="true"/>
+ </AuxValues>
+
+ <Layout
class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
+ <SubComponents>
+ <Component class="javax.swing.JList" name="jarList">
+ <Properties>
+ <Property name="layoutOrientation" type="int" value="2"/>
+ <Property name="visibleRowCount" type="int" value="-1"/>
+ </Properties>
+ <AuxValues>
+ <AuxValue name="JavaCodeGenerator_CreateCodeCustom"
type="java.lang.String" value="new JList(listModel);"/>
+ </AuxValues>
+ </Component>
+ </SubComponents>
+ </Container>
+ <Component class="javax.swing.JButton" name="addButton">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Add..."/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed"
listener="java.awt.event.ActionListener"
parameters="java.awt.event.ActionEvent" handler="addButtonActionPerformed"/>
+ </Events>
+ </Component>
+ <Component class="javax.swing.JButton" name="removeButton">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Remove"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed"
listener="java.awt.event.ActionListener"
parameters="java.awt.event.ActionEvent"
handler="removeButtonActionPerformed"/>
+ </Events>
+ </Component>
+ <Component class="javax.swing.JSeparator" name="separator">
+ </Component>
+ <Component class="javax.swing.JButton" name="goButton">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Go"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed"
listener="java.awt.event.ActionListener"
parameters="java.awt.event.ActionEvent" handler="goButtonActionPerformed"/>
+ </Events>
+ </Component>
+ <Container class="javax.swing.JScrollPane" name="resultTableScrollPane">
+ <AuxValues>
+ <AuxValue name="autoScrollPane" type="java.lang.Boolean"
value="true"/>
+ </AuxValues>
+
+ <Layout
class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
+ <SubComponents>
+ <Component class="javax.swing.JTable" name="resultTable">
+ <AuxValues>
+ <AuxValue name="JavaCodeGenerator_InitCodePre"
type="java.lang.String" value="updateResult(new Result());"/>
+ </AuxValues>
+ </Component>
+ </SubComponents>
+ </Container>
+ <Component class="javax.swing.JLabel" name="summaryLabel">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Summary:"/>
+ </Properties>
+ </Component>
+ <Component class="javax.swing.JTextField" name="summaryTextField">
+ <Properties>
+ <Property name="editable" type="boolean" value="false"/>
+ </Properties>
+ </Component>
+ <Component class="javax.swing.JButton" name="copyButton">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Copy"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed"
listener="java.awt.event.ActionListener"
parameters="java.awt.event.ActionEvent" handler="copyButtonActionPerformed"/>
+ </Events>
+ </Component>
+ <Component class="javax.swing.JButton" name="jButton1">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="About..."/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed"
listener="java.awt.event.ActionListener"
parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/>
+ </Events>
+ </Component>
+ </SubComponents>
</Form>
Property changes on: JarDependencyWalker
___________________________________________________________________
Added: svn:ignore
+ build
dist
|
[zhyi~subversion:55] JarDependencyWalker final version. |
zhyi | 11/29/2009 |





