fixed the hide panel actions

This commit is contained in:
Denis Molony 2021-06-04 16:53:04 +10:00
parent dc551285bb
commit ea0a827331
9 changed files with 144 additions and 133 deletions

View File

@ -438,6 +438,7 @@ public class DataPanel extends JTabbedPane
{
setSelectedIndex (0);
setDataSource (null);
if (event.getFormattedDisk () != null)
setDataSource (event.getFormattedDisk ().getCatalog ().getDataSource ());
else

View File

@ -6,6 +6,8 @@ import java.awt.Desktop;
import java.awt.EventQueue;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.List;
import java.util.prefs.Preferences;
@ -22,7 +24,8 @@ import javax.swing.UIManager;
import com.bytezone.diskbrowser.duplicates.RootFolderData;
// -----------------------------------------------------------------------------------//
public class DiskBrowser extends JFrame implements DiskSelectionListener, QuitListener
public class DiskBrowser extends JFrame
implements DiskSelectionListener, QuitListener, PropertyChangeListener
// -----------------------------------------------------------------------------------//
{
private static String[] args;
@ -37,6 +40,12 @@ public class DiskBrowser extends JFrame implements DiskSelectionListener, QuitLi
private final List<QuitListener> quitListeners = new ArrayList<> ();
private final JPanel catalogBorderPanel;
private final JPanel layoutBorderPanel;
HideCatalogAction hideCatalogAction = new HideCatalogAction ();
HideLayoutAction hideLayoutAction = new HideLayoutAction ();
// ---------------------------------------------------------------------------------//
public DiskBrowser ()
// ---------------------------------------------------------------------------------//
@ -61,7 +70,7 @@ public class DiskBrowser extends JFrame implements DiskSelectionListener, QuitLi
// create and add the left-hand catalog panel
CatalogPanel catalogPanel = new CatalogPanel (redoHandler);
JPanel catalogBorderPanel = addPanel (catalogPanel, "Catalog", BorderLayout.WEST);
catalogBorderPanel = addPanel (catalogPanel, "Catalog", BorderLayout.WEST);
// create and add the centre output panel
DataPanel dataPanel = new DataPanel (menuHandler);
@ -69,8 +78,7 @@ public class DiskBrowser extends JFrame implements DiskSelectionListener, QuitLi
// create and add the right-hand disk layout panel
DiskLayoutPanel diskLayoutPanel = new DiskLayoutPanel ();
JPanel layoutBorderPanel =
addPanel (diskLayoutPanel, "Disk layout", BorderLayout.EAST);
layoutBorderPanel = addPanel (diskLayoutPanel, "Disk layout", BorderLayout.EAST);
// create actions
DuplicateAction duplicateAction = new DuplicateAction (rootFolderData);
@ -80,13 +88,13 @@ public class DiskBrowser extends JFrame implements DiskSelectionListener, QuitLi
// PreferencesAction preferencesAction = new PreferencesAction (this, prefs);
AbstractAction print = new PrintAction (dataPanel);
// AboutAction aboutAction = new AboutAction ();
HideCatalogAction hideCatalogAction =
new HideCatalogAction (this, catalogBorderPanel);
HideLayoutAction hideLayoutAction = new HideLayoutAction (this, layoutBorderPanel);
ShowFreeSectorsAction showFreeAction =
new ShowFreeSectorsAction (menuHandler, diskLayoutPanel);
// HideLayoutAction hideLayoutAction = new HideLayoutAction (this, layoutBorderPanel);
ShowFreeSectorsAction showFreeAction = new ShowFreeSectorsAction ();
CloseTabAction closeTabAction = new CloseTabAction (catalogPanel);
hideCatalogAction.addPropertyChangeListener (this);
hideLayoutAction.addPropertyChangeListener (this);
// add action buttons to toolbar
toolBar.add (rootDirectoryAction);
toolBar.add (refreshTreeAction);
@ -132,6 +140,8 @@ public class DiskBrowser extends JFrame implements DiskSelectionListener, QuitLi
menuHandler.duplicateItem.setAction (duplicateAction);
menuHandler.closeTabItem.setAction (closeTabAction);
showFreeAction.addPropertyChangeListener (diskLayoutPanel);
quitListeners.add (rootDirectoryAction);
quitListeners.add (menuHandler);
quitListeners.add (catalogPanel);
@ -173,9 +183,9 @@ public class DiskBrowser extends JFrame implements DiskSelectionListener, QuitLi
// Remove the two optional panels if they were previously hidden
if (!menuHandler.showLayoutItem.isSelected ())
hideLayoutAction.set (false);
setLayoutPanel (false);
if (!menuHandler.showCatalogItem.isSelected ())
hideCatalogAction.set (false);
setCatalogPanel (false);
menuHandler.addBasicPreferencesListener (dataPanel);
menuHandler.addAssemblerPreferencesListener (dataPanel);
@ -211,6 +221,41 @@ public class DiskBrowser extends JFrame implements DiskSelectionListener, QuitLi
return panel;
}
// ---------------------------------------------------------------------------------//
@Override
public void propertyChange (PropertyChangeEvent evt)
// ---------------------------------------------------------------------------------//
{
if (evt.getSource () == hideCatalogAction)
setCatalogPanel ((boolean) evt.getNewValue ());
else if (evt.getSource () == hideLayoutAction)
setLayoutPanel ((boolean) evt.getNewValue ());
}
// ---------------------------------------------------------------------------------//
private void setCatalogPanel (boolean show)
// ---------------------------------------------------------------------------------//
{
if (show)
add (catalogBorderPanel, BorderLayout.WEST);
else
remove (catalogBorderPanel);
validate ();
}
// ---------------------------------------------------------------------------------//
private void setLayoutPanel (boolean show)
// ---------------------------------------------------------------------------------//
{
if (show)
add (layoutBorderPanel, BorderLayout.EAST);
else
remove (layoutBorderPanel);
validate ();
}
// ---------------------------------------------------------------------------------//
@Override
public void diskSelected (DiskSelectedEvent e)

View File

@ -12,6 +12,8 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.JComponent;
import javax.swing.JPanel;
@ -25,8 +27,8 @@ import com.bytezone.diskbrowser.gui.RedoHandler.RedoEvent;
import com.bytezone.diskbrowser.gui.RedoHandler.RedoListener;
// -----------------------------------------------------------------------------------//
class DiskLayoutPanel extends JPanel
implements DiskSelectionListener, FileSelectionListener, RedoListener
class DiskLayoutPanel extends JPanel implements DiskSelectionListener,
FileSelectionListener, RedoListener, PropertyChangeListener
// -----------------------------------------------------------------------------------//
{
private static final int SIZE = 15; // basic unit of a display block
@ -134,6 +136,14 @@ class DiskLayoutPanel extends JPanel
diskLayoutImage.setShowFreeSectors (free);
}
// ---------------------------------------------------------------------------------//
@Override
public void propertyChange (PropertyChangeEvent evt)
// ---------------------------------------------------------------------------------//
{
setFree ((Boolean) evt.getNewValue ());
}
// ---------------------------------------------------------------------------------//
public void addSectorSelectionListener (SectorSelectionListener listener)
// ---------------------------------------------------------------------------------//

View File

@ -85,14 +85,13 @@ class DiskLegendPanel extends DiskPanel
int val = formattedDisk.falseNegativeBlocks ();
if (val > 0)
{
g.drawString (
val + " unused sector" + (val == 1 ? "" : "s") + " marked as unavailable", 10,
y);
g.drawString (val + " unused sector" + (val == 1 ? "" : "s") //
+ " marked as unavailable", 10, y);
y += lineHeight;
}
val = formattedDisk.falsePositiveBlocks ();
if (val > 0)
g.drawString (val + " used sector" + (val == 1 ? "" : "s") + " marked as available",
10, y);
g.drawString (val + " used sector" + (val == 1 ? "" : "s") //
+ " marked as available", 10, y);
}
}

View File

@ -22,7 +22,8 @@ class FileSelectedEvent extends EventObject
this.appleFileSource = appleFileSource;
// If a file is selected from a disk which is part of a hybrid disk, then the
// parent must be told so that it can ensure its internal currentDisk is set correctly
// parent must be told so that it can ensure its internal currentDisk is set
// correctly
FormattedDisk fd = appleFileSource.getFormattedDisk ();
HybridDisk ddd = (HybridDisk) fd.getParent ();
if (ddd != null)

View File

@ -1,33 +1,26 @@
package com.bytezone.diskbrowser.gui;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
// -----------------------------------------------------------------------------------//
class HideCatalogAction extends AbstractAction
// -----------------------------------------------------------------------------------//
{
JFrame owner;
JPanel catalogPanel;
// ---------------------------------------------------------------------------------//
public HideCatalogAction (JFrame owner, JPanel catalogPanel)
public HideCatalogAction ()
// ---------------------------------------------------------------------------------//
{
super ("Show catalog panel");
putValue (Action.SHORT_DESCRIPTION, "Show/hide the catalog panel");
putValue (Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke ("alt C"));
putValue (Action.MNEMONIC_KEY, KeyEvent.VK_C);
this.owner = owner;
this.catalogPanel = catalogPanel;
}
// ---------------------------------------------------------------------------------//
@ -35,22 +28,7 @@ class HideCatalogAction extends AbstractAction
public void actionPerformed (ActionEvent e)
// ---------------------------------------------------------------------------------//
{
set (((JMenuItem) e.getSource ()).isSelected ());
}
// ---------------------------------------------------------------------------------//
public void set (boolean show)
// ---------------------------------------------------------------------------------//
{
if (show)
{
owner.add (catalogPanel, BorderLayout.WEST);
owner.validate ();
}
else
{
owner.remove (catalogPanel);
owner.validate ();
}
firePropertyChange (e.getActionCommand (), null,
((JMenuItem) e.getSource ()).isSelected ());
}
}

View File

@ -1,33 +1,26 @@
package com.bytezone.diskbrowser.gui;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
// -----------------------------------------------------------------------------------//
class HideLayoutAction extends AbstractAction
// -----------------------------------------------------------------------------------//
{
JFrame owner;
JPanel layoutPanel;
// ---------------------------------------------------------------------------------//
public HideLayoutAction (JFrame owner, JPanel layoutPanel)
public HideLayoutAction ()
// ---------------------------------------------------------------------------------//
{
super ("Show disk layout panel");
putValue (Action.SHORT_DESCRIPTION, "Show/hide the disk layout panel");
putValue (Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke ("alt D"));
putValue (Action.MNEMONIC_KEY, KeyEvent.VK_D);
this.owner = owner;
this.layoutPanel = layoutPanel;
}
// ---------------------------------------------------------------------------------//
@ -35,22 +28,7 @@ class HideLayoutAction extends AbstractAction
public void actionPerformed (ActionEvent e)
// ---------------------------------------------------------------------------------//
{
set (((JMenuItem) e.getSource ()).isSelected ());
}
// ---------------------------------------------------------------------------------//
public void set (boolean show)
// ---------------------------------------------------------------------------------//
{
if (show)
{
owner.add (layoutPanel, BorderLayout.EAST);
owner.validate ();
}
else
{
owner.remove (layoutPanel);
owner.validate ();
}
firePropertyChange (e.getActionCommand (), null,
((JMenuItem) e.getSource ()).isSelected ());
}
}

View File

@ -76,7 +76,6 @@ class MenuHandler implements DiskSelectionListener, FileSelectionListener, QuitL
private static final String PREFS_PALETTE = "palette";
FormattedDisk currentDisk;
final SaveDiskAction saveDiskAction = new SaveDiskAction ();
final SaveFileAction saveFileAction = new SaveFileAction ();
final SaveSectorsAction saveSectorsAction = new SaveSectorsAction ();
@ -186,6 +185,8 @@ class MenuHandler implements DiskSelectionListener, FileSelectionListener, QuitL
ButtonGroup paletteGroup = new ButtonGroup ();
FormattedDisk currentDisk;
// ---------------------------------------------------------------------------------//
MenuHandler ()
// ---------------------------------------------------------------------------------//
@ -558,60 +559,6 @@ class MenuHandler implements DiskSelectionListener, FileSelectionListener, QuitL
fileMenu.addSeparator ();
}
// ---------------------------------------------------------------------------------//
@Override
public void quit (Preferences prefs)
// ---------------------------------------------------------------------------------//
{
prefs.putBoolean (PREFS_LINE_WRAP, lineWrapItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_LAYOUT, showLayoutItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_CATALOG, showCatalogItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_FREE_SECTORS, showFreeSectorsItem.isSelected ());
prefs.putBoolean (PREFS_COLOUR_QUIRKS, colourQuirksItem.isSelected ());
prefs.putBoolean (PREFS_MONOCHROME, monochromeItem.isSelected ());
prefs.putInt (PREFS_PALETTE,
HiResImage.getPaletteFactory ().getCurrentPaletteIndex ());
fontAction.quit (prefs);
int scale = scale1Item.isSelected () ? 1 : scale2Item.isSelected () ? 2 : 3;
prefs.putInt (PREFS_SCALE, scale);
prefs.putBoolean (PREFS_SHOW_HEADER, showHeaderItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_ALL_FORMAT, showAllFormatItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_ALL_XREF, showAllXrefItem.isSelected ());
prefs.putBoolean (PREFS_APPLE_LINE_WRAP, appleLineWrapItem.isSelected ());
prefs.putBoolean (PREFS_SPLIT_REMARKS, splitRemarkItem.isSelected ());
prefs.putBoolean (PREFS_SPLIT_DIM, splitDimItem.isSelected ());
prefs.putBoolean (PREFS_ALIGN_ASSIGN, alignAssignItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_CARET, showCaretItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_THEN, showThenItem.isSelected ());
prefs.putBoolean (PREFS_BLANK_AFTER_RETURN, blankAfterReturnItem.isSelected ());
prefs.putBoolean (PREFS_FORMAT_REM, formatRemItem.isSelected ());
prefs.putBoolean (PREFS_DELETE_EXTRA_DATA_SPACE, deleteExtraDataSpace.isSelected ());
prefs.putBoolean (PREFS_SHOW_GOSUB_GOTO, showXrefItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_CALLS, showCallsItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_SYMBOLS, showSymbolsItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_FUNCTIONS, showFunctionsItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_CONSTANTS, showConstantsItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_DUPLICATE_SYMBOLS,
showDuplicateSymbolsItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_ASSEMBLER_TARGETS,
showAssemblerTargetsItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_ASSEMBLER_STRINGS,
showAssemblerStringsItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_ASSEMBLER_HEADER, showAssemblerHeaderItem.isSelected ());
prefs.putBoolean (PREFS_PRODOS_SORT_DIRECTORIES,
prodosSortDirectoriesItem.isSelected ());
prefs.putBoolean (PREFS_TEXT_SHOW_OFFSETS, showTextOffsetsItem.isSelected ());
prefs.putBoolean (PREFS_TEXT_SHOW_HEADER, showTextHeaderItem.isSelected ());
}
// ---------------------------------------------------------------------------------//
@Override
public void restore (Preferences prefs)
@ -701,6 +648,60 @@ class MenuHandler implements DiskSelectionListener, FileSelectionListener, QuitL
fontAction.restore (prefs);
}
// ---------------------------------------------------------------------------------//
@Override
public void quit (Preferences prefs)
// ---------------------------------------------------------------------------------//
{
prefs.putBoolean (PREFS_LINE_WRAP, lineWrapItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_LAYOUT, showLayoutItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_CATALOG, showCatalogItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_FREE_SECTORS, showFreeSectorsItem.isSelected ());
prefs.putBoolean (PREFS_COLOUR_QUIRKS, colourQuirksItem.isSelected ());
prefs.putBoolean (PREFS_MONOCHROME, monochromeItem.isSelected ());
prefs.putInt (PREFS_PALETTE,
HiResImage.getPaletteFactory ().getCurrentPaletteIndex ());
fontAction.quit (prefs);
int scale = scale1Item.isSelected () ? 1 : scale2Item.isSelected () ? 2 : 3;
prefs.putInt (PREFS_SCALE, scale);
prefs.putBoolean (PREFS_SHOW_HEADER, showHeaderItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_ALL_FORMAT, showAllFormatItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_ALL_XREF, showAllXrefItem.isSelected ());
prefs.putBoolean (PREFS_APPLE_LINE_WRAP, appleLineWrapItem.isSelected ());
prefs.putBoolean (PREFS_SPLIT_REMARKS, splitRemarkItem.isSelected ());
prefs.putBoolean (PREFS_SPLIT_DIM, splitDimItem.isSelected ());
prefs.putBoolean (PREFS_ALIGN_ASSIGN, alignAssignItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_CARET, showCaretItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_THEN, showThenItem.isSelected ());
prefs.putBoolean (PREFS_BLANK_AFTER_RETURN, blankAfterReturnItem.isSelected ());
prefs.putBoolean (PREFS_FORMAT_REM, formatRemItem.isSelected ());
prefs.putBoolean (PREFS_DELETE_EXTRA_DATA_SPACE, deleteExtraDataSpace.isSelected ());
prefs.putBoolean (PREFS_SHOW_GOSUB_GOTO, showXrefItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_CALLS, showCallsItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_SYMBOLS, showSymbolsItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_FUNCTIONS, showFunctionsItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_CONSTANTS, showConstantsItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_DUPLICATE_SYMBOLS,
showDuplicateSymbolsItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_ASSEMBLER_TARGETS,
showAssemblerTargetsItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_ASSEMBLER_STRINGS,
showAssemblerStringsItem.isSelected ());
prefs.putBoolean (PREFS_SHOW_ASSEMBLER_HEADER, showAssemblerHeaderItem.isSelected ());
prefs.putBoolean (PREFS_PRODOS_SORT_DIRECTORIES,
prodosSortDirectoriesItem.isSelected ());
prefs.putBoolean (PREFS_TEXT_SHOW_OFFSETS, showTextOffsetsItem.isSelected ());
prefs.putBoolean (PREFS_TEXT_SHOW_HEADER, showTextHeaderItem.isSelected ());
}
// ---------------------------------------------------------------------------------//
@Override
public void diskSelected (DiskSelectedEvent event)

View File

@ -5,26 +5,23 @@ import java.awt.event.KeyEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;
// -----------------------------------------------------------------------------------//
class ShowFreeSectorsAction extends AbstractAction
// -----------------------------------------------------------------------------------//
{
DiskLayoutPanel panel;
MenuHandler mh;
// ---------------------------------------------------------------------------------//
ShowFreeSectorsAction (MenuHandler mh, DiskLayoutPanel panel)
ShowFreeSectorsAction ()
// ---------------------------------------------------------------------------------//
{
super ("Show free sectors");
putValue (Action.SHORT_DESCRIPTION,
"Display which sectors are marked free in the disk layout panel");
putValue (Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke ("alt F"));
putValue (Action.MNEMONIC_KEY, KeyEvent.VK_F);
this.panel = panel;
this.mh = mh;
}
// ---------------------------------------------------------------------------------//
@ -32,6 +29,7 @@ class ShowFreeSectorsAction extends AbstractAction
public void actionPerformed (ActionEvent e)
// ---------------------------------------------------------------------------------//
{
panel.setFree (mh.showFreeSectorsItem.isSelected ());
firePropertyChange (e.getActionCommand (), null,
((JMenuItem) e.getSource ()).isSelected ());
}
}