|
TarTool example source code file (ArchivePanel.java)
The TarTool ArchivePanel.java source code/* ** This code has been placed into the Public Domain. ** This code was written by Timothy Gerard Endres in 1999. ** */ package com.ice.tartool; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.zip.*; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import javax.swing.*; import javax.swing.border.*; import com.ice.tar.TarEntry; import com.ice.tar.TarInputStream; import com.ice.util.AWTUtilities; import com.ice.util.UserProperties; public class ArchivePanel extends JPanel implements ActionListener { private static final String DIV_LOC_PROP = "archivePanel.divider.location"; protected ArchiveTreePanel treePan; protected JTextField infoTitle; protected JTextArea infoText; protected JToolBar toolBar; protected JSplitPane split; protected DecimalFormat sizeFormat; protected DecimalFormat sizeKFormat; protected SimpleDateFormat modTimeFormat; protected String fileDlgDir = null; public ArchivePanel() { super(); this.setLayout( new BorderLayout() ); this.toolBar = new JToolBar(); this.toolBar.setFloatable( false ); this.populateToolbar( this.toolBar ); this.add( "North", toolBar ); this.treePan = new ArchiveTreePanel(); this.treePan.addActionListener( this ); this.treePan.setMinimumSize( new Dimension( 25, 125 ) ); this.treePan.setPreferredSize( new Dimension( 450, 300 ) ); JPanel textPan = new JPanel(); textPan.setLayout( new BorderLayout() ); textPan.setBorder( new TitledBorder( new EtchedBorder( EtchedBorder.RAISED ), "Details" ) ); this.infoTitle = new JTextField(); this.infoTitle.setOpaque( false ); this.infoTitle.setBorder( new EmptyBorder( 1, 0, 3, 0 ) ); this.infoTitle.setFont( new Font( "SansSerif", Font.BOLD, 14 ) ); textPan.add( "North", this.infoTitle ); this.infoText = new JTextArea(); this.infoText.setOpaque( false ); this.infoText.setMinimumSize( new Dimension( 25, 50 ) ); this.infoText.setPreferredSize( new Dimension( 450, 100 ) ); this.infoText.setFont( new Font( "SansSerif", Font.PLAIN, 12 ) ); textPan.add( "Center", this.infoText ); this.split = new JSplitPane( JSplitPane.VERTICAL_SPLIT, true, this.treePan, textPan ); this.add( "Center", this.split ); this.modTimeFormat = new SimpleDateFormat( "MMM dd, yyyy 'at' hh:mm:ss a z" ); this.sizeFormat = new DecimalFormat( "###,###,###,###" ); this.sizeKFormat = new DecimalFormat( "###,###,###,###.0" ); } protected void loadLayoutProps() { int loc = UserProperties.getProperty( DIV_LOC_PROP, -1 ); if ( loc == -1 ) { this.split.setDividerLocation( 0.75 ); } else { this.split.setDividerLocation( loc ); } } protected void saveLayoutProps() { int loc = this.split.getDividerLocation(); UserProperties.setDynamicProperty ( TarTool.CONFIG_MAIN, DIV_LOC_PROP, "" + loc ); } public void adjustDividerLocation() { this.split.setDividerLocation( 0.8 ); } public void openArchive( File archiveFile ) throws IOException { this.treePan.openArchive( archiveFile ); } public void actionPerformed( ActionEvent event ) { String command = event.getActionCommand(); if ( command.startsWith( "EXTRACT" ) ) { this.treePan.actionPerformed( event ); } else if ( command.equals( "NODE_SELECTED" ) ) { ArchiveTreeNode ch = (ArchiveTreeNode) event.getSource(); TarEntry entry = ch.getEntry(); String modTimeStr = this.modTimeFormat.format( entry.getModTime() ); StringBuffer info = new StringBuffer(); if ( ch == this.treePan.getRootNode() ) { this.infoTitle.setText( /*"Archive: " +*/ ch.getName() ); String dirStr = this.sizeFormat.format( ch.getTotalDirectoryCount() ); String fileStr = this.sizeFormat.format( ch.getTotalFileCount() ); info.append( "Archive contains " + fileStr + " files.\n" ); info.append( "Archive contains " + dirStr + " directories.\n" ); } else if ( entry.isDirectory() ) { this.infoTitle.setText( /*"Directory: " +*/ entry.getName() ); info.append( "User ID = " + entry.getUserId() + ", " ); info.append( "Name = '" + entry.getUserName() + "'.\n" ); info.append( "Group ID = " + entry.getGroupId() + ", " ); info.append( "Name = '" + entry.getGroupName() + "'.\n" ); String dirStr = this.sizeFormat.format( ch.getDirectoryCount() ); String fileStr = this.sizeFormat.format( ch.getFileCount() ); info.append ( "Directory contains " + fileStr + " files and " + dirStr + " directories.\n" ); } else { this.infoTitle.setText( /*"File: " +*/ entry.getName() ); info.append( "User ID = " + entry.getUserId() + ", " ); info.append( "Name = '" + entry.getUserName() + "'.\n" ); info.append( "Group ID = " + entry.getGroupId() + ", " ); info.append( "Name = '" + entry.getGroupName() + "'.\n" ); String sizeByteStr = this.sizeFormat.format( entry.getSize() ); String sizeKiloStr = this.sizeKFormat.format ( ((double)entry.getSize()) / 1024.0 ); info.append ( "Size " + sizeByteStr + " ( " + sizeKiloStr + "K ) bytes.\n" ); } this.infoText.setText( info.toString() ); } else if ( command.equals( "OPEN" ) ) { File archiveFile = null; FileDialog dlg = new FileDialog( (Frame) this.getTopLevelAncestor(), "Open Tar Archive", FileDialog.LOAD ); if ( this.fileDlgDir != null ) dlg.setDirectory( this.fileDlgDir ); dlg.show(); String fileName = dlg.getFile(); this.fileDlgDir = dlg.getDirectory(); if ( fileName != null && this.fileDlgDir != null ) { File f = new File( this.fileDlgDir, fileName ); if ( f.exists() && f.isFile() && f.canRead() ) { try { this.treePan.openArchive( f ); } catch ( IOException ex ) { ex.printStackTrace(); // UNDONE } } } } else if ( command.equals( "CLOSE" ) ) { try { this.infoText.setText( "" ); this.infoTitle.setText( "" ); this.treePan.closeArchive(); } catch ( IOException ex ) { ex.printStackTrace(); } } else if ( command.equals( "EXTRACT" ) ) { } else { System.err.println ( "UNKNOWN Command '" + command + "'" ); } } private void populateToolbar( JToolBar toolBar ) { try { Image iconImg; Image iOpen = AWTUtilities.getImageResource ( "/com/ice/tartool/images/open.gif" ); Image iClose = AWTUtilities.getImageResource ( "/com/ice/tartool/images/close.gif" ); Image iExtract = AWTUtilities.getImageResource ( "/com/ice/tartool/images/extract.gif" ); Icon icon; JButton btn; icon = new ImageIcon( iOpen ); btn = new JButton( icon ); btn.addActionListener( this ); btn.setActionCommand( "OPEN" ); btn.setToolTipText( "Open Tar Archive" ); toolBar.add( btn ); toolBar.addSeparator(); icon = new ImageIcon( iClose ); btn = new JButton( icon ); btn.addActionListener( this ); btn.setActionCommand( "CLOSE" ); btn.setToolTipText( "Close Archive" ); toolBar.add( btn ); toolBar.addSeparator(); icon = new ImageIcon( iExtract ); btn = new JButton( icon ); btn.addActionListener( this ); btn.setActionCommand( "EXTRACT" ); btn.setToolTipText( "Extract Selected Files" ); toolBar.add( btn ); } catch ( IOException ex ) { ex.printStackTrace(); } } } Other TarTool examples (source code examples)Here is a short list of links related to this TarTool ArchivePanel.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.