mirror of
https://github.com/dmolony/DiskBrowser.git
synced 2024-06-13 06:29:31 +00:00
cosmetic changes
This commit is contained in:
parent
b281bd0cec
commit
08da529ca3
|
@ -1,12 +1,23 @@
|
||||||
package com.bytezone.diskbrowser.gui;
|
package com.bytezone.diskbrowser.gui;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.Color;
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.awt.Font;
|
||||||
|
import java.awt.Graphics;
|
||||||
|
import java.awt.Graphics2D;
|
||||||
|
import java.awt.Insets;
|
||||||
|
import java.awt.RenderingHints;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.prefs.Preferences;
|
import java.util.prefs.Preferences;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.JPanel;
|
||||||
|
import javax.swing.JScrollPane;
|
||||||
|
import javax.swing.JTabbedPane;
|
||||||
|
import javax.swing.JTextArea;
|
||||||
|
import javax.swing.ScrollPaneConstants;
|
||||||
|
import javax.swing.SwingConstants;
|
||||||
import javax.swing.event.ChangeEvent;
|
import javax.swing.event.ChangeEvent;
|
||||||
import javax.swing.event.ChangeListener;
|
import javax.swing.event.ChangeListener;
|
||||||
|
|
||||||
|
@ -15,10 +26,10 @@ import com.bytezone.common.FontAction.FontChangeListener;
|
||||||
import com.bytezone.diskbrowser.disk.DiskAddress;
|
import com.bytezone.diskbrowser.disk.DiskAddress;
|
||||||
import com.bytezone.diskbrowser.disk.SectorList;
|
import com.bytezone.diskbrowser.disk.SectorList;
|
||||||
|
|
||||||
class DataPanel extends JTabbedPane implements DiskSelectionListener, FileSelectionListener,
|
class DataPanel extends JTabbedPane
|
||||||
SectorSelectionListener,
|
implements DiskSelectionListener, FileSelectionListener, SectorSelectionListener,
|
||||||
// PreferenceChangeListener,
|
// PreferenceChangeListener,
|
||||||
FileNodeSelectionListener, FontChangeListener
|
FileNodeSelectionListener, FontChangeListener
|
||||||
{
|
{
|
||||||
private static final int TEXT_WIDTH = 65;
|
private static final int TEXT_WIDTH = 65;
|
||||||
|
|
||||||
|
@ -30,7 +41,7 @@ class DataPanel extends JTabbedPane implements DiskSelectionListener, FileSelect
|
||||||
JScrollPane imagePane;
|
JScrollPane imagePane;
|
||||||
|
|
||||||
JTextArea formattedText;
|
JTextArea formattedText;
|
||||||
ImagePanel imagePanel; // internal class
|
ImagePanel imagePanel;// internal class
|
||||||
|
|
||||||
boolean imageVisible = false;
|
boolean imageVisible = false;
|
||||||
|
|
||||||
|
@ -58,11 +69,10 @@ class DataPanel extends JTabbedPane implements DiskSelectionListener, FileSelect
|
||||||
formattedText = new JTextArea (10, TEXT_WIDTH);
|
formattedText = new JTextArea (10, TEXT_WIDTH);
|
||||||
formattedPane = setPanel (formattedText, "Formatted");
|
formattedPane = setPanel (formattedText, "Formatted");
|
||||||
formattedText.setLineWrap (mh.lineWrapItem.isSelected ());
|
formattedText.setLineWrap (mh.lineWrapItem.isSelected ());
|
||||||
formattedText
|
formattedText.setText ("Please use the 'File->Set HOME folder...' command to "
|
||||||
.setText ("Please use the 'File->Set root folder' command to "
|
+ "\ntell DiskBrowser where your Apple disks are located."
|
||||||
+ "\ntell DiskBrowser where your Apple disks are located."
|
+ "\n\nTo see the contents of a disk in more detail, double-click"
|
||||||
+ "\n\nTo see the contents of a disk in more detail, double-click"
|
+ "\nthe disk. You will then be able to select individual files to view completely.");
|
||||||
+ "\nthe disk. You will then be able to select individual files to view completely.");
|
|
||||||
|
|
||||||
hexText = new JTextArea (10, TEXT_WIDTH);
|
hexText = new JTextArea (10, TEXT_WIDTH);
|
||||||
setPanel (hexText, "Hex dump");
|
setPanel (hexText, "Hex dump");
|
||||||
|
@ -72,9 +82,9 @@ class DataPanel extends JTabbedPane implements DiskSelectionListener, FileSelect
|
||||||
|
|
||||||
imagePanel = new ImagePanel ();
|
imagePanel = new ImagePanel ();
|
||||||
imagePane =
|
imagePane =
|
||||||
new JScrollPane (imagePanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
|
new JScrollPane (imagePanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
|
||||||
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
|
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
|
||||||
// imagePane.getVerticalScrollBar ().setUnitIncrement (font.getSize ());
|
// imagePane.getVerticalScrollBar ().setUnitIncrement (font.getSize ());
|
||||||
|
|
||||||
// setTabsFont (font);
|
// setTabsFont (font);
|
||||||
// this.setMinimumSize (new Dimension (800, 200));
|
// this.setMinimumSize (new Dimension (800, 200));
|
||||||
|
@ -136,8 +146,8 @@ class DataPanel extends JTabbedPane implements DiskSelectionListener, FileSelect
|
||||||
public String getCurrentText ()
|
public String getCurrentText ()
|
||||||
{
|
{
|
||||||
int index = getSelectedIndex ();
|
int index = getSelectedIndex ();
|
||||||
return index == 0 ? formattedText.getText () : index == 1 ? hexText.getText ()
|
return index == 0 ? formattedText.getText ()
|
||||||
: disassemblyText.getText ();
|
: index == 1 ? hexText.getText () : disassemblyText.getText ();
|
||||||
}
|
}
|
||||||
|
|
||||||
private JScrollPane setPanel (JTextArea outputPanel, String tabName)
|
private JScrollPane setPanel (JTextArea outputPanel, String tabName)
|
||||||
|
@ -146,9 +156,9 @@ class DataPanel extends JTabbedPane implements DiskSelectionListener, FileSelect
|
||||||
outputPanel.setMargin (new Insets (5, 5, 5, 5));
|
outputPanel.setMargin (new Insets (5, 5, 5, 5));
|
||||||
|
|
||||||
JScrollPane outputScrollPane =
|
JScrollPane outputScrollPane =
|
||||||
new JScrollPane (outputPanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
|
new JScrollPane (outputPanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
|
||||||
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
|
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
|
||||||
outputScrollPane.setBorder (null); // remove the ugly default border
|
outputScrollPane.setBorder (null);// remove the ugly default border
|
||||||
add (outputScrollPane, tabName);
|
add (outputScrollPane, tabName);
|
||||||
return outputScrollPane;
|
return outputScrollPane;
|
||||||
}
|
}
|
||||||
|
@ -274,7 +284,8 @@ class DataPanel extends JTabbedPane implements DiskSelectionListener, FileSelect
|
||||||
{
|
{
|
||||||
Graphics2D g2 = ((Graphics2D) g);
|
Graphics2D g2 = ((Graphics2D) g);
|
||||||
g2.transform (AffineTransform.getScaleInstance (scale, scale));
|
g2.transform (AffineTransform.getScaleInstance (scale, scale));
|
||||||
g2.drawImage (image, (getWidth () - image.getWidth () * scale) / 2 / scale, 4, this);
|
g2.drawImage (image, (getWidth () - image.getWidth () * scale) / 2 / scale, 4,
|
||||||
|
this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,14 @@ import java.awt.image.BufferedImage;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.TreeMap;
|
||||||
import java.util.zip.CRC32;
|
import java.util.zip.CRC32;
|
||||||
import java.util.zip.Checksum;
|
import java.util.zip.Checksum;
|
||||||
|
|
||||||
|
@ -25,8 +32,8 @@ public class TreeBuilder
|
||||||
{
|
{
|
||||||
private static SimpleDateFormat sdf = new SimpleDateFormat ("dd MMM yyyy");
|
private static SimpleDateFormat sdf = new SimpleDateFormat ("dd MMM yyyy");
|
||||||
private static final boolean FULL_TREE = false;
|
private static final boolean FULL_TREE = false;
|
||||||
private static final List<String> suffixes = Arrays.asList ("po", "dsk", "do", "hdv", "2mg",
|
private static final List<String> suffixes =
|
||||||
"d13", "sdk", "gz");
|
Arrays.asList ("po", "dsk", "do", "hdv", "2mg", "d13", "sdk", "gz");
|
||||||
|
|
||||||
FileComparator fc = new FileComparator ();
|
FileComparator fc = new FileComparator ();
|
||||||
JTree tree;
|
JTree tree;
|
||||||
|
@ -35,14 +42,15 @@ public class TreeBuilder
|
||||||
|
|
||||||
Map<String, Integer> totalFiles = new TreeMap<String, Integer> ();
|
Map<String, Integer> totalFiles = new TreeMap<String, Integer> ();
|
||||||
|
|
||||||
Map<String, List<DiskDetails>> duplicateDisks = new TreeMap<String, List<DiskDetails>> ();
|
Map<String, List<DiskDetails>> duplicateDisks =
|
||||||
|
new TreeMap<String, List<DiskDetails>> ();
|
||||||
Map<String, File> diskNames = new HashMap<String, File> ();
|
Map<String, File> diskNames = new HashMap<String, File> ();
|
||||||
Map<Long, List<File>> dosMap = new TreeMap<Long, List<File>> ();
|
Map<Long, List<File>> dosMap = new TreeMap<Long, List<File>> ();
|
||||||
|
|
||||||
public TreeBuilder (File folder)
|
public TreeBuilder (File folder)
|
||||||
{
|
{
|
||||||
assert (folder.exists ());
|
assert(folder.exists ());
|
||||||
assert (folder.isDirectory ());
|
assert(folder.isDirectory ());
|
||||||
|
|
||||||
long start = System.currentTimeMillis ();
|
long start = System.currentTimeMillis ();
|
||||||
|
|
||||||
|
@ -54,12 +62,12 @@ public class TreeBuilder
|
||||||
tree = new JTree (treeModel);
|
tree = new JTree (treeModel);
|
||||||
|
|
||||||
long duration = System.currentTimeMillis () - start;
|
long duration = System.currentTimeMillis () - start;
|
||||||
System.out
|
System.out.printf (
|
||||||
.printf ("Tree building took %,d milliseconds for %,d disk%s and %,d folder%s%n",
|
"Tree building took %,d milliseconds for %,d disk%s and %,d folder%s%n",
|
||||||
duration, totalDisks, (totalDisks == 1 ? "" : "s"), totalFolders,
|
duration, totalDisks, (totalDisks == 1 ? "" : "s"), totalFolders,
|
||||||
(totalFolders == 1 ? "" : "s"));
|
(totalFolders == 1 ? "" : "s"));
|
||||||
|
|
||||||
treeModel.setAsksAllowsChildren (true); // allows empty nodes to appear as folders
|
treeModel.setAsksAllowsChildren (true);// allows empty nodes to appear as folders
|
||||||
setDiskIcon ("/com/bytezone/diskbrowser/icons/disk.png");
|
setDiskIcon ("/com/bytezone/diskbrowser/icons/disk.png");
|
||||||
((FileNode) root.getUserObject ()).disks = totalDisks;
|
((FileNode) root.getUserObject ()).disks = totalDisks;
|
||||||
|
|
||||||
|
@ -102,7 +110,7 @@ public class TreeBuilder
|
||||||
totalFolders++;
|
totalFolders++;
|
||||||
|
|
||||||
if (FULL_TREE)
|
if (FULL_TREE)
|
||||||
addFiles (newNode, file); // recursion!
|
addFiles (newNode, file);// recursion!
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -123,7 +131,7 @@ public class TreeBuilder
|
||||||
}
|
}
|
||||||
|
|
||||||
if (file.length () != 143360 && file.length () != 116480 && file.length () != 819264
|
if (file.length () != 143360 && file.length () != 116480 && file.length () != 819264
|
||||||
&& file.length () < 200000)
|
&& file.length () < 200000)
|
||||||
{
|
{
|
||||||
String name = file.getName ().toLowerCase ();
|
String name = file.getName ().toLowerCase ();
|
||||||
if (!name.endsWith (".sdk") && !name.endsWith (".dsk.gz"))
|
if (!name.endsWith (".sdk") && !name.endsWith (".dsk.gz"))
|
||||||
|
@ -179,9 +187,9 @@ public class TreeBuilder
|
||||||
{
|
{
|
||||||
diskList = new ArrayList<DiskDetails> ();
|
diskList = new ArrayList<DiskDetails> ();
|
||||||
duplicateDisks.put (file.getName (), diskList);
|
duplicateDisks.put (file.getName (), diskList);
|
||||||
diskList.add (new DiskDetails (diskNames.get (file.getName ()))); // add the original
|
diskList.add (new DiskDetails (diskNames.get (file.getName ())));// add the original
|
||||||
}
|
}
|
||||||
diskList.add (new DiskDetails (file)); // add the duplicate
|
diskList.add (new DiskDetails (file));// add the duplicate
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
diskNames.put (file.getName (), file);
|
diskNames.put (file.getName (), file);
|
||||||
|
@ -203,7 +211,8 @@ public class TreeBuilder
|
||||||
if (url != null)
|
if (url != null)
|
||||||
{
|
{
|
||||||
ImageIcon icon = new ImageIcon (url);
|
ImageIcon icon = new ImageIcon (url);
|
||||||
DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer) tree.getCellRenderer ();
|
DefaultTreeCellRenderer renderer =
|
||||||
|
(DefaultTreeCellRenderer) tree.getCellRenderer ();
|
||||||
renderer.setLeafIcon (icon);
|
renderer.setLeafIcon (icon);
|
||||||
tree.setCellRenderer (renderer);
|
tree.setCellRenderer (renderer);
|
||||||
tree.setRowHeight (18);
|
tree.setRowHeight (18);
|
||||||
|
@ -273,9 +282,8 @@ public class TreeBuilder
|
||||||
{
|
{
|
||||||
String name = file.getName ();
|
String name = file.getName ();
|
||||||
if (name.length () > MAX_NAME_LENGTH)
|
if (name.length () > MAX_NAME_LENGTH)
|
||||||
name =
|
name = name.substring (0, PREFIX_LENGTH) + "..."
|
||||||
name.substring (0, PREFIX_LENGTH) + "..."
|
+ name.substring (name.length () - SUFFIX_LENGTH);
|
||||||
+ name.substring (name.length () - SUFFIX_LENGTH);
|
|
||||||
if (showDisks && disks > 0)
|
if (showDisks && disks > 0)
|
||||||
return String.format ("%s (%,d)", name, disks);
|
return String.format ("%s (%,d)", name, disks);
|
||||||
return name;
|
return name;
|
||||||
|
@ -288,9 +296,9 @@ public class TreeBuilder
|
||||||
|
|
||||||
text.append ("Directory : " + file.getAbsolutePath () + "\n\n");
|
text.append ("Directory : " + file.getAbsolutePath () + "\n\n");
|
||||||
text.append ("D File names "
|
text.append ("D File names "
|
||||||
+ " Date Size Type\n");
|
+ " Date Size Type\n");
|
||||||
text.append ("- ----------------------------------------"
|
text.append ("- ----------------------------------------"
|
||||||
+ " ----------- -------------- ---------\n");
|
+ " ----------- -------------- ---------\n");
|
||||||
for (File f : file.listFiles ())
|
for (File f : file.listFiles ())
|
||||||
{
|
{
|
||||||
String name = f.getName ();
|
String name = f.getName ();
|
||||||
|
@ -301,8 +309,9 @@ public class TreeBuilder
|
||||||
int pos = name.lastIndexOf ('.');
|
int pos = name.lastIndexOf ('.');
|
||||||
String type = pos > 0 && !f.isDirectory () ? name.substring (pos) : "";
|
String type = pos > 0 && !f.isDirectory () ? name.substring (pos) : "";
|
||||||
String size = f.isDirectory () ? "" : String.format ("%,14d", f.length ());
|
String size = f.isDirectory () ? "" : String.format ("%,14d", f.length ());
|
||||||
text.append (String.format ("%s %-40.40s %s %-14s %s%n", f.isDirectory () ? "D"
|
text.append (String.format ("%s %-40.40s %s %-14s %s%n",
|
||||||
: " ", name, sdf.format (d), size, type));
|
f.isDirectory () ? "D" : " ", name, sdf.format (d),
|
||||||
|
size, type));
|
||||||
}
|
}
|
||||||
if (text.length () > 0)
|
if (text.length () > 0)
|
||||||
text.deleteCharAt (text.length () - 1);
|
text.deleteCharAt (text.length () - 1);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user