mirror of
https://github.com/dmolony/DiskBrowser.git
synced 2024-05-28 08:41:29 +00:00
method header lines
This commit is contained in:
parent
1043b8964f
commit
343e5da6d9
|
@ -9,9 +9,13 @@ import javax.swing.KeyStroke;
|
|||
|
||||
import com.bytezone.common.DefaultAction;
|
||||
|
||||
public class AboutAction extends DefaultAction
|
||||
// -----------------------------------------------------------------------------------//
|
||||
class AboutAction extends DefaultAction
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
public AboutAction ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
AboutAction ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
super ("About...", "Display build information", "/com/bytezone/diskbrowser/icons/");
|
||||
putValue (Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke ("alt A"));
|
||||
|
@ -21,13 +25,17 @@ public class AboutAction extends DefaultAction
|
|||
setIcon (Action.LARGE_ICON_KEY, "information_32.png");
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public void actionPerformed (ActionEvent e)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
about ();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void about ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
// int build = 0;
|
||||
// String buildDate = "<no date>";
|
||||
|
|
|
@ -21,13 +21,17 @@ import com.bytezone.diskbrowser.disk.DualDosDisk;
|
|||
import com.bytezone.diskbrowser.disk.FormattedDisk;
|
||||
import com.bytezone.diskbrowser.gui.RedoHandler.RedoEvent;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
class AppleDiskTab extends AbstractTab
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
FormattedDisk disk;
|
||||
|
||||
// restoring from a file selection
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public AppleDiskTab (FormattedDisk disk, DiskAndFileSelector selector,
|
||||
RedoHandler redoHandler, Font font, FileSelectedEvent event)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
super (redoHandler, selector, font);
|
||||
create (disk);
|
||||
|
@ -35,8 +39,10 @@ class AppleDiskTab extends AbstractTab
|
|||
}
|
||||
|
||||
// restoring from a sector selection
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public AppleDiskTab (FormattedDisk disk, DiskAndFileSelector selector,
|
||||
RedoHandler redoHandler, Font font, SectorSelectedEvent event)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
super (redoHandler, selector, font);
|
||||
create (disk);
|
||||
|
@ -46,8 +52,10 @@ class AppleDiskTab extends AbstractTab
|
|||
// This constructor is only called when lastFileUsed is not null, but the disk
|
||||
// couldn't find the file entry. Either the file has been deleted, or it is a disk
|
||||
// with redefined files (Wizardry, Infocom etc).
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public AppleDiskTab (FormattedDisk disk, DiskAndFileSelector selector,
|
||||
RedoHandler redoHandler, Font font, String lastFileUsed)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
super (redoHandler, selector, font);
|
||||
System.out.println ("****************** File not found");
|
||||
|
@ -63,8 +71,10 @@ class AppleDiskTab extends AbstractTab
|
|||
}
|
||||
|
||||
// User is selecting a new disk from the catalog
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public AppleDiskTab (FormattedDisk disk, DiskAndFileSelector selector,
|
||||
RedoHandler redoHandler, Font font)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
super (redoHandler, selector, font);
|
||||
create (disk);
|
||||
|
@ -76,15 +86,19 @@ class AppleDiskTab extends AbstractTab
|
|||
redoHandler.fileSelected (new FileSelectedEvent (this, afs));
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private void create (FormattedDisk disk)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
this.disk = disk;
|
||||
setTree (disk.getCatalogTree ());
|
||||
setSelectionListener (tree);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public void activate ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
// System.out.println ("=========== Activating AppleDiskTab =============");
|
||||
eventHandler.redo = true;
|
||||
|
@ -94,8 +108,10 @@ class AppleDiskTab extends AbstractTab
|
|||
redoHandler.setCurrentData (redoData);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public void refresh () // called when the user gives ALT-R command
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
Object o = getSelectedObject ();
|
||||
String currentFile = (o == null) ? null : ((AppleFileSource) o).getUniqueName ();
|
||||
|
@ -105,7 +121,9 @@ class AppleDiskTab extends AbstractTab
|
|||
selectNode (currentFile);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private void selectNode (String nodeName)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
DefaultMutableTreeNode selectNode = null;
|
||||
if (nodeName != null)
|
||||
|
@ -118,7 +136,9 @@ class AppleDiskTab extends AbstractTab
|
|||
System.out.println ("First node not found");
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
void redoEvent (RedoEvent event)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
AppleFileSource afs = ((FileSelectedEvent) event.value).appleFileSource;
|
||||
FileSelectedEvent fileSelectedEvent = (FileSelectedEvent) event.value;
|
||||
|
@ -130,7 +150,9 @@ class AppleDiskTab extends AbstractTab
|
|||
selectNode (fileSelectedEvent.appleFileSource.getUniqueName ());
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private DefaultMutableTreeNode findNode (String nodeName)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
DefaultMutableTreeNode rootNode = getRootNode ();
|
||||
|
||||
|
@ -154,7 +176,9 @@ class AppleDiskTab extends AbstractTab
|
|||
return null;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public boolean contains (FormattedDisk disk)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
return this.disk.getAbsolutePath ().equals (disk.getAbsolutePath ());
|
||||
}
|
||||
|
@ -162,7 +186,9 @@ class AppleDiskTab extends AbstractTab
|
|||
// This action is triggered by AppleDiskTab.selectNode (String), which calls
|
||||
// AbstractTab.showNode (DefaultMutableTreeNode). That will trigger this listener
|
||||
// ONLY if the value is different, so it is set to null first to force the event.
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private void setSelectionListener (JTree tree)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
tree.addTreeSelectionListener (new TreeSelectionListener ()
|
||||
{
|
||||
|
|
|
@ -1,14 +1,18 @@
|
|||
package com.bytezone.diskbrowser.gui;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
public class AssemblerPreferences
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
public boolean showTargets = true;
|
||||
public boolean showStrings = true;
|
||||
public boolean offsetFromZero = false;
|
||||
public boolean showHeader = true;
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public String toString ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
StringBuilder text = new StringBuilder ();
|
||||
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package com.bytezone.diskbrowser.gui;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
public interface AssemblerPreferencesListener
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
public void setAssemblerPreferences (AssemblerPreferences assemblerPreferences);
|
||||
}
|
|
@ -1,6 +1,8 @@
|
|||
package com.bytezone.diskbrowser.gui;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
public class BasicPreferences
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
public boolean splitRem = false;
|
||||
public boolean alignAssign = true;
|
||||
|
@ -11,8 +13,10 @@ public class BasicPreferences
|
|||
public int wrapPrintAt = 40;
|
||||
public int wrapRemAt = 60;
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public String toString ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
StringBuilder text = new StringBuilder ();
|
||||
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package com.bytezone.diskbrowser.gui;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
public interface BasicPreferencesListener
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
public void setBasicPreferences (BasicPreferences basicPreferences);
|
||||
}
|
||||
|
|
|
@ -8,11 +8,15 @@ import javax.swing.AbstractAction;
|
|||
import javax.swing.Action;
|
||||
import javax.swing.KeyStroke;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
public class CloseTabAction extends AbstractAction
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
CatalogPanel catalogPanel;
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public CloseTabAction (CatalogPanel catalogPanel)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
super ("Close Tab");
|
||||
putValue (Action.SHORT_DESCRIPTION, "Close the current disk tab");
|
||||
|
@ -23,8 +27,10 @@ public class CloseTabAction extends AbstractAction
|
|||
this.catalogPanel = catalogPanel;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public void actionPerformed (ActionEvent e)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
catalogPanel.closeCurrentTab ();
|
||||
}
|
||||
|
|
|
@ -8,11 +8,15 @@ import javax.swing.Action;
|
|||
import javax.swing.JMenuItem;
|
||||
import javax.swing.KeyStroke;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
public class ColourQuirksAction extends AbstractAction
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
private final DataPanel owner;
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public ColourQuirksAction (DataPanel owner)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
super ("Smear HGR");
|
||||
putValue (Action.SHORT_DESCRIPTION, "Display pixels like a TV screen");
|
||||
|
@ -21,8 +25,10 @@ public class ColourQuirksAction extends AbstractAction
|
|||
this.owner = owner;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public void actionPerformed (ActionEvent e)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
owner.setColourQuirks (((JMenuItem) e.getSource ()).isSelected ());
|
||||
}
|
||||
|
|
|
@ -6,18 +6,25 @@ import javax.swing.JOptionPane;
|
|||
|
||||
import com.bytezone.common.DefaultAction;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
class CreateDatabaseAction extends DefaultAction
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public CreateDatabaseAction ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
super ("Create Database", "Not working yet", null);
|
||||
// putValue (Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke ("alt A"));
|
||||
// putValue (Action.MNEMONIC_KEY, KeyEvent.VK_A);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public void actionPerformed (ActionEvent e)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
JOptionPane.showMessageDialog (null, "Coming soon...", "Database",
|
||||
JOptionPane.INFORMATION_MESSAGE);
|
||||
JOptionPane.INFORMATION_MESSAGE);
|
||||
}
|
||||
}
|
|
@ -1,26 +1,46 @@
|
|||
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.image.BufferedImage;
|
||||
import java.util.Enumeration;
|
||||
import java.util.List;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.AbstractButton;
|
||||
import javax.swing.ButtonGroup;
|
||||
import javax.swing.JCheckBoxMenuItem;
|
||||
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.ChangeListener;
|
||||
|
||||
import com.bytezone.common.FontAction.FontChangeEvent;
|
||||
import com.bytezone.common.FontAction.FontChangeListener;
|
||||
import com.bytezone.diskbrowser.applefile.*;
|
||||
import com.bytezone.diskbrowser.applefile.ApplesoftBasicProgram;
|
||||
import com.bytezone.diskbrowser.applefile.AssemblerProgram;
|
||||
import com.bytezone.diskbrowser.applefile.HiResImage;
|
||||
import com.bytezone.diskbrowser.applefile.Palette;
|
||||
import com.bytezone.diskbrowser.applefile.PaletteFactory.CycleDirection;
|
||||
import com.bytezone.diskbrowser.applefile.QuickDrawFont;
|
||||
import com.bytezone.diskbrowser.applefile.VisicalcFile;
|
||||
import com.bytezone.diskbrowser.disk.DiskAddress;
|
||||
import com.bytezone.diskbrowser.disk.SectorList;
|
||||
|
||||
class DataPanel extends JTabbedPane
|
||||
implements DiskSelectionListener, FileSelectionListener, SectorSelectionListener,
|
||||
FileNodeSelectionListener, FontChangeListener, BasicPreferencesListener,
|
||||
AssemblerPreferencesListener
|
||||
// -----------------------------------------------------------------------------------//
|
||||
class DataPanel extends JTabbedPane implements DiskSelectionListener,
|
||||
FileSelectionListener, SectorSelectionListener, FileNodeSelectionListener,
|
||||
FontChangeListener, BasicPreferencesListener, AssemblerPreferencesListener
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
private static final int TEXT_WIDTH = 65;
|
||||
private static final int BACKGROUND = 245;
|
||||
|
@ -46,7 +66,9 @@ class DataPanel extends JTabbedPane
|
|||
|
||||
final MenuHandler menuHandler;
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public DataPanel (MenuHandler mh)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
this.menuHandler = mh;
|
||||
setTabPlacement (SwingConstants.BOTTOM);
|
||||
|
@ -141,7 +163,9 @@ class DataPanel extends JTabbedPane
|
|||
menuHandler.prevPaletteItem.setAction (new PreviousPaletteAction (this, buttonGroup));
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void selectPalette (Palette palette)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
HiResImage.getPaletteFactory ().setCurrentPalette (palette);
|
||||
if (currentDataSource instanceof HiResImage)
|
||||
|
@ -152,7 +176,9 @@ class DataPanel extends JTabbedPane
|
|||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public Palette cyclePalette (CycleDirection direction)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
Palette palette = HiResImage.getPaletteFactory ().cyclePalette (direction);
|
||||
if (currentDataSource instanceof HiResImage)
|
||||
|
@ -164,12 +190,16 @@ class DataPanel extends JTabbedPane
|
|||
return palette;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
void setLineWrap (boolean lineWrap)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
formattedText.setLineWrap (lineWrap);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void setColourQuirks (boolean value)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
if (currentDataSource instanceof HiResImage)
|
||||
{
|
||||
|
@ -179,7 +209,9 @@ class DataPanel extends JTabbedPane
|
|||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void setMonochrome (boolean value)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
if (currentDataSource instanceof HiResImage)
|
||||
{
|
||||
|
@ -189,7 +221,9 @@ class DataPanel extends JTabbedPane
|
|||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void setDebug (boolean value)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
debugMode = value;
|
||||
|
||||
|
@ -207,7 +241,9 @@ class DataPanel extends JTabbedPane
|
|||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private void setTabsFont (Font font)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
formattedText.setFont (font);
|
||||
hexText.setFont (font);
|
||||
|
@ -215,14 +251,18 @@ class DataPanel extends JTabbedPane
|
|||
imagePane.getVerticalScrollBar ().setUnitIncrement (font.getSize ());
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public String getCurrentText ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
int index = getSelectedIndex ();
|
||||
return index == 0 ? formattedText.getText ()
|
||||
: index == 1 ? hexText.getText () : disassemblyText.getText ();
|
||||
return index == 0 ? formattedText.getText () : index == 1 ? hexText.getText ()
|
||||
: disassemblyText.getText ();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private JScrollPane setPanel (JTextArea outputPanel, String tabName)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
outputPanel.setEditable (false);
|
||||
outputPanel.setMargin (new Insets (5, 5, 5, 5));
|
||||
|
@ -235,7 +275,9 @@ class DataPanel extends JTabbedPane
|
|||
return outputScrollPane;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private void setDataSource (DataSource dataSource)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
currentDataSource = dataSource;
|
||||
|
||||
|
@ -304,7 +346,9 @@ class DataPanel extends JTabbedPane
|
|||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private void removeImage ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
if (imageVisible)
|
||||
{
|
||||
|
@ -316,13 +360,17 @@ class DataPanel extends JTabbedPane
|
|||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private void setText (JTextArea textArea, String text)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
textArea.setText (text);
|
||||
textArea.setCaretPosition (0);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private class ImagePanel extends JPanel
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
private BufferedImage image;
|
||||
private int scale = 1;
|
||||
|
@ -377,8 +425,10 @@ class DataPanel extends JTabbedPane
|
|||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public void diskSelected (DiskSelectedEvent event)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
setSelectedIndex (0);
|
||||
setDataSource (null);
|
||||
|
@ -388,15 +438,19 @@ class DataPanel extends JTabbedPane
|
|||
System.out.println ("bollocks in diskSelected()");
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public void fileSelected (FileSelectedEvent event)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
DataSource dataSource = event.appleFileSource.getDataSource ();
|
||||
setDataSource (dataSource);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public void sectorSelected (SectorSelectedEvent event)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
List<DiskAddress> sectors = event.getSectors ();
|
||||
if (sectors == null || sectors.size () == 0)
|
||||
|
@ -412,29 +466,37 @@ class DataPanel extends JTabbedPane
|
|||
setDataSource (new SectorList (event.getFormattedDisk (), sectors));
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public void fileNodeSelected (FileNodeSelectedEvent event)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
setSelectedIndex (0);
|
||||
setDataSource (event.getFileNode ());
|
||||
// FileNode node = event.getFileNode ();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public void changeFont (FontChangeEvent fontChangeEvent)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
setTabsFont (fontChangeEvent.font);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public void setBasicPreferences (BasicPreferences basicPreferences)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
if (currentDataSource instanceof ApplesoftBasicProgram)
|
||||
setDataSource (currentDataSource);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public void setAssemblerPreferences (AssemblerPreferences assemblerPreferences)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
if (currentDataSource instanceof AssemblerProgram)
|
||||
setDataSource (currentDataSource);
|
||||
|
|
|
@ -4,7 +4,9 @@ import java.awt.image.BufferedImage;
|
|||
|
||||
import javax.swing.JComponent;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
public interface DataSource
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
public String getText ();
|
||||
|
||||
|
|
|
@ -7,11 +7,15 @@ import javax.swing.Action;
|
|||
import javax.swing.JMenuItem;
|
||||
import javax.swing.KeyStroke;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
public class DebuggingAction extends AbstractAction
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
private final DataPanel owner;
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public DebuggingAction (DataPanel owner)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
super ("Debugging");
|
||||
putValue (Action.SHORT_DESCRIPTION, "Show debugging information");
|
||||
|
@ -19,8 +23,10 @@ public class DebuggingAction extends AbstractAction
|
|||
this.owner = owner;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public void actionPerformed (ActionEvent e)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
owner.setDebug (((JMenuItem) e.getSource ()).isSelected ());
|
||||
}
|
||||
|
|
|
@ -7,7 +7,9 @@ import com.bytezone.diskbrowser.applefile.AppleFileSource;
|
|||
import com.bytezone.diskbrowser.disk.FormattedDisk;
|
||||
import com.bytezone.diskbrowser.gui.TreeBuilder.FileNode;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
class DiskAndFileSelector
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
EventListenerList listenerList = new EventListenerList ();
|
||||
FormattedDisk currentDisk;
|
||||
|
@ -16,22 +18,30 @@ class DiskAndFileSelector
|
|||
/*
|
||||
* Apple DiskSelection routines
|
||||
*/
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void addDiskSelectionListener (DiskSelectionListener listener)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
listenerList.add (DiskSelectionListener.class, listener);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void removeDiskSelectionListener (DiskSelectionListener listener)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
listenerList.remove (DiskSelectionListener.class, listener);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void addFileNodeSelectionListener (FileNodeSelectionListener listener)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
listenerList.add (FileNodeSelectionListener.class, listener);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void removeFileNodeSelectionListener (FileNodeSelectionListener listener)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
listenerList.remove (FileNodeSelectionListener.class, listener);
|
||||
}
|
||||
|
@ -59,7 +69,9 @@ class DiskAndFileSelector
|
|||
// }
|
||||
// }
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
void fireDiskSelectionEvent (FileNode node)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
if (node.file.isDirectory ())
|
||||
{
|
||||
|
@ -77,7 +89,9 @@ class DiskAndFileSelector
|
|||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
void fireFileNodeSelectionEvent (FileNode node)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
FileNodeSelectedEvent e = new FileNodeSelectedEvent (this, node);
|
||||
e.redo = redo;
|
||||
|
@ -87,7 +101,9 @@ class DiskAndFileSelector
|
|||
listener.fileNodeSelected (e);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
void fireDiskSelectionEvent (FormattedDisk disk)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
if (disk == currentDisk)
|
||||
{
|
||||
|
@ -110,21 +126,23 @@ class DiskAndFileSelector
|
|||
currentDisk = disk;
|
||||
}
|
||||
|
||||
/*
|
||||
* Apple FileSelection routines
|
||||
*/
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void addFileSelectionListener (FileSelectionListener listener)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
listenerList.add (FileSelectionListener.class, listener);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void removeFileSelectionListener (FileSelectionListener listener)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
listenerList.remove (FileSelectionListener.class, listener);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
void fireFileSelectionEvent (AppleFileSource file)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
assert file != null;
|
||||
currentDisk = null;
|
||||
|
|
|
@ -1,6 +1,12 @@
|
|||
package com.bytezone.diskbrowser.gui;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.Color;
|
||||
import java.awt.Cursor;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Point;
|
||||
import java.awt.Rectangle;
|
||||
import java.awt.event.InputEvent;
|
||||
import java.awt.event.KeyAdapter;
|
||||
import java.awt.event.KeyEvent;
|
||||
|
@ -19,7 +25,9 @@ import com.bytezone.diskbrowser.gui.DiskLayoutPanel.LayoutDetails;
|
|||
import com.bytezone.diskbrowser.gui.RedoHandler.RedoEvent;
|
||||
import com.bytezone.diskbrowser.gui.RedoHandler.RedoListener;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
class DiskLayoutImage extends DiskPanel implements Scrollable, RedoListener
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
private static final Cursor crosshairCursor = new Cursor (Cursor.CROSSHAIR_CURSOR);
|
||||
private static final Color[] lightColors =
|
||||
|
@ -33,7 +41,9 @@ class DiskLayoutImage extends DiskPanel implements Scrollable, RedoListener
|
|||
private int gridWidth = 8;
|
||||
private int gridHeight = 35;
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public DiskLayoutImage ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
setPreferredSize (new Dimension (240 + 1, 525 + 1));
|
||||
addMouseListener (new MyMouseListener ());
|
||||
|
@ -45,8 +55,10 @@ class DiskLayoutImage extends DiskPanel implements Scrollable, RedoListener
|
|||
addKeyListener (new MyKeyListener ());
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public void setDisk (FormattedDisk disk, LayoutDetails details)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
super.setDisk (disk, details);
|
||||
|
||||
|
@ -60,12 +72,16 @@ class DiskLayoutImage extends DiskPanel implements Scrollable, RedoListener
|
|||
repaint ();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public FormattedDisk getDisk ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
return formattedDisk;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void setShowFreeSectors (boolean showFree)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
if (showFree != showFreeSectors)
|
||||
{
|
||||
|
@ -74,7 +90,9 @@ class DiskLayoutImage extends DiskPanel implements Scrollable, RedoListener
|
|||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
void setSelection (List<DiskAddress> sectors)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
selectionHandler.setSelection (sectors);
|
||||
if (sectors != null && sectors.size () > 0)
|
||||
|
@ -86,8 +104,10 @@ class DiskLayoutImage extends DiskPanel implements Scrollable, RedoListener
|
|||
repaint ();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
protected void paintComponent (Graphics g)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
super.paintComponent (g);
|
||||
|
||||
|
@ -130,8 +150,10 @@ class DiskLayoutImage extends DiskPanel implements Scrollable, RedoListener
|
|||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private void drawBlock (Graphics2D g, SectorType type, int x, int y, boolean flagFree,
|
||||
boolean selected)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
g.setColor (type.colour);
|
||||
g.fillRect (x + 1, y + 1, blockWidth - 1, blockHeight - 1);
|
||||
|
@ -148,7 +170,9 @@ class DiskLayoutImage extends DiskPanel implements Scrollable, RedoListener
|
|||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private Color getContrastColor (SectorType type)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
for (Color color : lightColors)
|
||||
if (type.colour == color)
|
||||
|
@ -156,40 +180,52 @@ class DiskLayoutImage extends DiskPanel implements Scrollable, RedoListener
|
|||
return Color.WHITE;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public Dimension getPreferredScrollableViewportSize ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
return new Dimension (240 + 1, 525 + 1); // floppy disk size
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public int getScrollableUnitIncrement (Rectangle visibleRect, int orientation,
|
||||
int direction)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
return orientation == SwingConstants.HORIZONTAL ? blockWidth : blockHeight;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public int getScrollableBlockIncrement (Rectangle visibleRect, int orientation,
|
||||
int direction)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
return orientation == SwingConstants.HORIZONTAL ? blockWidth * 4 : blockHeight * 10;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public boolean getScrollableTracksViewportHeight ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public boolean getScrollableTracksViewportWidth ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public void redo (RedoEvent redoEvent)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
redo = true;
|
||||
SectorSelectedEvent event = (SectorSelectedEvent) redoEvent.value;
|
||||
|
@ -200,14 +236,18 @@ class DiskLayoutImage extends DiskPanel implements Scrollable, RedoListener
|
|||
requestFocusInWindow ();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private void fireSectorSelectionEvent ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
SectorSelectedEvent event =
|
||||
new SectorSelectedEvent (this, selectionHandler.getHighlights (), formattedDisk);
|
||||
fireSectorSelectionEvent (event);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private void fireSectorSelectionEvent (SectorSelectedEvent event)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
event.redo = redo;
|
||||
SectorSelectionListener[] listeners =
|
||||
|
@ -216,17 +256,23 @@ class DiskLayoutImage extends DiskPanel implements Scrollable, RedoListener
|
|||
listener.sectorSelected (event);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void addSectorSelectionListener (SectorSelectionListener listener)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
listenerList.add (SectorSelectionListener.class, listener);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void removeSectorSelectionListener (SectorSelectionListener listener)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
listenerList.remove (SectorSelectionListener.class, listener);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
class MyKeyListener extends KeyAdapter
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
@Override
|
||||
public void keyPressed (KeyEvent e)
|
||||
|
@ -244,7 +290,9 @@ class DiskLayoutImage extends DiskPanel implements Scrollable, RedoListener
|
|||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
class MyMouseListener extends MouseAdapter
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
private Cursor currentCursor;
|
||||
|
||||
|
|
|
@ -24,8 +24,10 @@ import com.bytezone.diskbrowser.disk.FormattedDisk;
|
|||
import com.bytezone.diskbrowser.gui.RedoHandler.RedoEvent;
|
||||
import com.bytezone.diskbrowser.gui.RedoHandler.RedoListener;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
class DiskLayoutPanel extends JPanel
|
||||
implements DiskSelectionListener, FileSelectionListener, RedoListener
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
private static final int SIZE = 15; // basic unit of a display block
|
||||
|
||||
|
@ -36,7 +38,9 @@ class DiskLayoutPanel extends JPanel
|
|||
private final JScrollPane sp;
|
||||
private LayoutDetails layout;
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public DiskLayoutPanel ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
super (new BorderLayout ());
|
||||
|
||||
|
@ -63,7 +67,9 @@ class DiskLayoutPanel extends JPanel
|
|||
add (legendPanel, BorderLayout.SOUTH);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void setDisk (final FormattedDisk disk)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
layout = new LayoutDetails (disk);
|
||||
diskLayoutImage.setDisk (disk, layout);
|
||||
|
@ -105,41 +111,55 @@ class DiskLayoutPanel extends JPanel
|
|||
repaint ();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void setHex (boolean hex)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
verticalRuler.setHex (hex);
|
||||
horizontalRuler.setHex (hex);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void setBlock (boolean block)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
verticalRuler.setTrackMode (block);
|
||||
horizontalRuler.setTrackMode (block);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void setFree (boolean free)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
diskLayoutImage.setShowFreeSectors (free);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void addSectorSelectionListener (SectorSelectionListener listener)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
diskLayoutImage.addSectorSelectionListener (listener);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void removeSectorSelectionListener (SectorSelectionListener listener)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
diskLayoutImage.removeSectorSelectionListener (listener);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public void diskSelected (DiskSelectedEvent event)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
setDisk (event.getFormattedDisk ());
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public void fileSelected (FileSelectedEvent event)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
// This can happen if a file is selected from a dual-dos disk
|
||||
checkCorrectDisk (event.appleFileSource.getFormattedDisk ());
|
||||
|
@ -147,7 +167,9 @@ class DiskLayoutPanel extends JPanel
|
|||
diskLayoutImage.setSelection (event.appleFileSource.getSectors ());
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
class LayoutDetails
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
Dimension block;
|
||||
Dimension grid;
|
||||
|
@ -178,7 +200,9 @@ class DiskLayoutPanel extends JPanel
|
|||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
class Corner extends JComponent
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
Color backgroundColor = Color.WHITE;
|
||||
boolean showHex = true;
|
||||
|
|
|
@ -12,7 +12,9 @@ import com.bytezone.diskbrowser.disk.Disk;
|
|||
import com.bytezone.diskbrowser.disk.DiskAddress;
|
||||
import com.bytezone.diskbrowser.disk.FormattedDisk;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
class DiskLayoutSelection implements Iterable<DiskAddress>
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
private final List<DiskAddress> highlights;
|
||||
|
||||
|
@ -21,7 +23,9 @@ class DiskLayoutSelection implements Iterable<DiskAddress>
|
|||
highlights = new ArrayList<> ();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void doClick (Disk disk, DiskAddress da, boolean extend, boolean append)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
/*
|
||||
* Single click without modifiers - just replace previous highlights with the new
|
||||
|
@ -67,7 +71,9 @@ class DiskLayoutSelection implements Iterable<DiskAddress>
|
|||
Collections.sort (highlights);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
void cursorMove (FormattedDisk formattedDisk, KeyEvent e)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
if (highlights.size () == 0)
|
||||
{
|
||||
|
@ -121,25 +127,33 @@ class DiskLayoutSelection implements Iterable<DiskAddress>
|
|||
Collections.sort (highlights);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private void addHighlight (DiskAddress da)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
assert da != null;
|
||||
highlights.add (da);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public Iterator<DiskAddress> iterator ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
return highlights.iterator ();
|
||||
}
|
||||
|
||||
// This must return a copy, or the redo function will get very confused
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public List<DiskAddress> getHighlights ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
return new ArrayList<> (highlights);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public boolean isSelected (DiskAddress da)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
for (DiskAddress selection : highlights)
|
||||
if (selection != null && da.matches (selection))
|
||||
|
@ -147,7 +161,9 @@ class DiskLayoutSelection implements Iterable<DiskAddress>
|
|||
return false;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void setSelection (List<DiskAddress> list)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
// sparse files contain empty blocks
|
||||
highlights.clear ();
|
||||
|
@ -157,14 +173,18 @@ class DiskLayoutSelection implements Iterable<DiskAddress>
|
|||
highlights.add (da);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private boolean checkContiguous ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
int range = highlights.get (highlights.size () - 1).getBlock ()
|
||||
- highlights.get (0).getBlock () + 1;
|
||||
return (range == highlights.size ());
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private void extendHighlights (Disk disk, DiskAddress da)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
int lo, hi;
|
||||
|
||||
|
@ -185,7 +205,9 @@ class DiskLayoutSelection implements Iterable<DiskAddress>
|
|||
addHighlight (disk.getDiskAddress (i));
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private void adjustHighlights (Disk disk, DiskAddress da)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
// If we are outside the discontiguous range, just extend as usual
|
||||
if (da.getBlock () < highlights.get (0).getBlock ()
|
||||
|
|
Loading…
Reference in New Issue
Block a user