From 556a080106b82129bc70bb51eb9999fc115c2b0c Mon Sep 17 00:00:00 2001 From: a2geek Date: Mon, 17 Aug 2026 19:16:40 -0500 Subject: [PATCH] Adding font resizing. --- .../ui/swt/FileViewerWindow.java | 17 +++------ .../filteradapter/ApplesoftFilterAdapter.java | 37 +++++++++++++++++-- .../BusinessBASICFilterAdapter.java | 34 ++++++++++++++++- .../ui/swt/filteradapter/FilterAdapter.java | 4 -- .../swt/filteradapter/TextFilterAdapter.java | 31 +++++++++++++++- 5 files changed, 102 insertions(+), 21 deletions(-) diff --git a/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/FileViewerWindow.java b/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/FileViewerWindow.java index 53ca241b..8f8ae051 100644 --- a/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/FileViewerWindow.java +++ b/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/FileViewerWindow.java @@ -33,7 +33,6 @@ import org.eclipse.swt.custom.ScrolledComposite; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.graphics.Font; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; @@ -74,8 +73,6 @@ public class FileViewerWindow { // May or may not be setup private Optional disassemblyToolItem = Optional.empty(); private Optional shapeTableToolItem = Optional.empty(); - - private Font courier; private ContentTypeAdapter contentTypeAdapter; private Map,FilterAdapter> nativeFilterAdapterMap; @@ -96,7 +93,7 @@ public class FileViewerWindow { * Construct the file viewer window. */ public FileViewerWindow(Shell parentShell, FileEntry fileEntry, ImageManager imageManager, FileFilter nativeFilter) { - this.parentShell = shell; + this.parentShell = parentShell; this.fileEntry = fileEntry; this.imageManager = imageManager; this.nativeFilter = nativeFilter; @@ -127,8 +124,6 @@ public class FileViewerWindow { content.setLayoutData(gridData); content.addListener(SWT.KeyUp, createToolbarCommandHandler()); - courier = new Font(shell.getDisplay(), "Courier", 10, SWT.NORMAL); //$NON-NLS-1$ - nativeFilterAdapter.display(); shell.open(); @@ -222,10 +217,11 @@ public class FileViewerWindow { * Dispose of all shared resources. */ protected void dispose(DisposeEvent event) { - courier.dispose(); if (nativeFilterAdapter != null) nativeFilterAdapter.dispose(); - hexFilterAdapter.dispose(); - rawDumpFilterAdapter.dispose(); + if (hexFilterAdapter != null) hexFilterAdapter.dispose(); + if (rawDumpFilterAdapter != null) rawDumpFilterAdapter.dispose(); + if (disassemblyFilterAdapter != null) disassemblyFilterAdapter.dispose(); + if (shapeTableFilterAdapter != null) shapeTableFilterAdapter.dispose(); System.gc(); } @@ -440,9 +436,6 @@ public class FileViewerWindow { public void setContentTypeAdapter(ContentTypeAdapter adapter) { this.contentTypeAdapter = adapter; } - public Font getCourierFont() { - return courier; - } public void setFilterToolItemSelection(boolean nativeSelected, boolean hexSelected, boolean dumpSelected, boolean disassemblySelected, boolean shapeTableSelected) { if (nativeToolItem != null) nativeToolItem.setSelection(nativeSelected); diff --git a/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/filteradapter/ApplesoftFilterAdapter.java b/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/filteradapter/ApplesoftFilterAdapter.java index 843d0e07..3a001246 100644 --- a/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/filteradapter/ApplesoftFilterAdapter.java +++ b/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/filteradapter/ApplesoftFilterAdapter.java @@ -27,6 +27,7 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.custom.StyleRange; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Display; @@ -41,7 +42,9 @@ public class ApplesoftFilterAdapter extends FilterAdapter { private Color separatorColor; private Color stringColor; private Color tokenColor; - + private int fontSize = 10; + private Font courier; + public ApplesoftFilterAdapter(FileViewerWindow window, String text, String toolTipText, Image image) { super(window, text, toolTipText, image); } @@ -66,10 +69,14 @@ public class ApplesoftFilterAdapter extends FilterAdapter { separatorColor.dispose(); tokenColor.dispose(); stringColor.dispose(); + if (courier != null) { + courier.dispose(); + } } - protected void createStyledText() { + courier = new Font(getComposite().getDisplay(), "Courier", fontSize, SWT.NORMAL); //$NON-NLS-1$ + if (Display.isSystemDarkTheme()) { separatorColor = new Color(getComposite().getDisplay(), 255, 128, 128); tokenColor = new Color(getComposite().getDisplay(), 192, 192, 255); @@ -82,7 +89,7 @@ public class ApplesoftFilterAdapter extends FilterAdapter { styledText = new StyledText(getComposite(), SWT.NONE); styledText.setForeground(getComposite().getForeground()); - styledText.setFont(getCourierFont()); + styledText.setFont(courier); styledText.setEditable(false); ApplesoftTokenizer tokenizer = new ApplesoftTokenizer(getFileEntry()); @@ -128,4 +135,28 @@ public class ApplesoftFilterAdapter extends FilterAdapter { } } } + + @Override + public void increaseSize() { + fontSize++; + updateFontSize(); + } + + @Override + public void decreaseSize() { + fontSize--; + if (fontSize < 8) { + fontSize = 8; + } + updateFontSize(); + } + + public void updateFontSize() { + Font oldFont = courier; + courier = new Font(getComposite().getDisplay(), "Courier", fontSize, SWT.NORMAL); //$NON-NLS-1$ + styledText.setFont(courier); + if (oldFont != null) { + oldFont.dispose(); + } + } } diff --git a/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/filteradapter/BusinessBASICFilterAdapter.java b/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/filteradapter/BusinessBASICFilterAdapter.java index b023ea99..97f3513a 100644 --- a/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/filteradapter/BusinessBASICFilterAdapter.java +++ b/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/filteradapter/BusinessBASICFilterAdapter.java @@ -27,6 +27,7 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.custom.StyleRange; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; @@ -40,6 +41,8 @@ public class BusinessBASICFilterAdapter extends FilterAdapter { private Color separatorColor; private Color stringColor; private Color tokenColor; + private int fontSize = 10; + private Font courier; public BusinessBASICFilterAdapter(FileViewerWindow window, String text, String toolTipText, Image image) { super(window, text, toolTipText, image); @@ -65,17 +68,22 @@ public class BusinessBASICFilterAdapter extends FilterAdapter { separatorColor.dispose(); tokenColor.dispose(); stringColor.dispose(); + if (courier != null) { + courier.dispose(); + } } protected void createStyledText() { + courier = new Font(getComposite().getDisplay(), "Courier", fontSize, SWT.NORMAL); //$NON-NLS-1$ + separatorColor = new Color(getComposite().getDisplay(), 192, 0, 0); tokenColor = new Color(getComposite().getDisplay(), 0, 0, 192); stringColor = new Color(getComposite().getDisplay(), 0, 192, 0); styledText = new StyledText(getComposite(), SWT.NONE); styledText.setForeground(getComposite().getForeground()); - styledText.setFont(getCourierFont()); + styledText.setFont(courier); styledText.setEditable(false); BusinessBASICTokenizer tokenizer = new BusinessBASICTokenizer(getFileEntry()); @@ -140,4 +148,28 @@ public class BusinessBASICFilterAdapter extends FilterAdapter { } } } + + @Override + public void increaseSize() { + fontSize++; + updateFontSize(); + } + + @Override + public void decreaseSize() { + fontSize--; + if (fontSize < 8) { + fontSize = 8; + } + updateFontSize(); + } + + public void updateFontSize() { + Font oldFont = courier; + courier = new Font(getComposite().getDisplay(), "Courier", fontSize, SWT.NORMAL); //$NON-NLS-1$ + styledText.setFont(courier); + if (oldFont != null) { + oldFont.dispose(); + } + } } \ No newline at end of file diff --git a/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/filteradapter/FilterAdapter.java b/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/filteradapter/FilterAdapter.java index 052787cd..a5b3bec1 100644 --- a/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/filteradapter/FilterAdapter.java +++ b/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/filteradapter/FilterAdapter.java @@ -27,7 +27,6 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.custom.ScrolledComposite; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.ToolBar; @@ -114,9 +113,6 @@ public abstract class FilterAdapter { protected void setContentTypeAdapter(ContentTypeAdapter adapter) { window.setContentTypeAdapter(adapter); } - protected Font getCourierFont() { - return window.getCourierFont(); - } protected Listener getToolbarCommandHandler() { return window.createToolbarCommandHandler(); } diff --git a/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/filteradapter/TextFilterAdapter.java b/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/filteradapter/TextFilterAdapter.java index e3d2596b..5a6ff32c 100644 --- a/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/filteradapter/TextFilterAdapter.java +++ b/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/filteradapter/TextFilterAdapter.java @@ -23,6 +23,7 @@ import com.webcodepro.applecommander.ui.swt.FileViewerWindow; import com.webcodepro.applecommander.ui.swt.util.contentadapter.StyledTextAdapter; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.StyledText; +import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; @@ -33,6 +34,8 @@ import org.eclipse.swt.graphics.Point; */ public class TextFilterAdapter extends FilterAdapter { private String textContent; + private int fontSize = 10; + private Font courier; public TextFilterAdapter(FileViewerWindow window, String text, String toolTipText, Image image) { super(window, text, toolTipText, image); @@ -50,10 +53,23 @@ public class TextFilterAdapter extends FilterAdapter { return new String(getFileFilter().filter(getFileEntry())); } + @Override + public void dispose() { + super.dispose(); + if (courier != null) { + courier.dispose(); + } + } + protected void createTextWidget(String textContents) { + if (courier != null) { + courier.dispose(); + } + courier = new Font(getComposite().getDisplay(), "Courier", fontSize, SWT.NORMAL); //$NON-NLS-1$ + StyledText styledText = new StyledText(getComposite(), SWT.NONE); styledText.setText(textContents); - styledText.setFont(getCourierFont()); + styledText.setFont(courier); styledText.setEditable(false); //styledText.setWordWrap(true); // seems to throw size out-of-whack Point size = styledText.computeSize(SWT.DEFAULT, SWT.DEFAULT, true); @@ -67,4 +83,17 @@ public class TextFilterAdapter extends FilterAdapter { getToolItem().setSelection(true); setContentTypeAdapter(new StyledTextAdapter(styledText, getFileEntry().getFilename())); } + + @Override + public void increaseSize() { + fontSize++; + } + + @Override + public void decreaseSize() { + fontSize--; + if (fontSize < 8) { + fontSize = 8; + } + } } \ No newline at end of file