From 8ca50ee440b9dcd92034f1bf354e66629b803bbd Mon Sep 17 00:00:00 2001 From: Brandon Date: Fri, 26 Jun 2026 12:29:53 -0700 Subject: [PATCH] clean up tab title logs, make initial tab selection more robust --- .../lightsheetmanager/gui/tabs/TabPanel.java | 84 +++++++++++++++---- 1 file changed, 70 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/TabPanel.java b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/TabPanel.java index 8ec172e..e34add3 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/TabPanel.java +++ b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/TabPanel.java @@ -7,6 +7,10 @@ import org.micromanager.lightsheetmanager.gui.components.Panel; import org.micromanager.lightsheetmanager.gui.components.TabbedPane; +import javax.swing.JLabel; +import javax.swing.border.EmptyBorder; +import java.awt.Color; +import java.awt.Font; import java.util.ArrayList; import java.util.Objects; @@ -55,26 +59,53 @@ private void createUserInterface() { settingsTab_ = new SettingsTab(model_); // add tabs to the pane - tabbedPane_.addTab(createTabTitle("Navigation"), navigationTab_); + String tabName = "Navigation"; + int index = tabbedPane_.getTabCount(); + tabbedPane_.addTab(tabName, navigationTab_); + tabbedPane_.setTabComponentAt(index, createTabTitle(tabName)); // create a setup path tab for each imaging path final int numImagingPaths = devices_.adapter().numImagingPaths(); for (int i = 0; i < numImagingPaths; i++) { - SetupPathTab setupPathTab = new SetupPathTab(model_, i + 1); + final SetupPathTab setupPathTab = new SetupPathTab(model_, i + 1); if (numImagingPaths > 1) { - tabbedPane_.add(createTabTitle("Setup Path " + (i + 1)), setupPathTab); + tabName = "Setup Path " + (i + 1); } else { - tabbedPane_.add(createTabTitle("Setup Path"), setupPathTab); + tabName = "Setup Path"; } + index = tabbedPane_.getTabCount(); + tabbedPane_.add(tabName, setupPathTab); + tabbedPane_.setTabComponentAt(index, createTabTitle(tabName)); setupPathTabs_.add(setupPathTab); } - tabbedPane_.addTab(createTabTitle("Acquisition"), acquisitionTab_); - tabbedPane_.addTab(createTabTitle("Autofocus"), autofocusTab_); - tabbedPane_.addTab(createTabTitle("Cameras"), cameraTab_); - tabbedPane_.addTab(createTabTitle("Settings"), settingsTab_); + tabName = "Acquisition"; + index = tabbedPane_.getTabCount(); + tabbedPane_.addTab(tabName, acquisitionTab_); + tabbedPane_.setTabComponentAt(index, createTabTitle(tabName)); + + tabName = "Autofocus"; + index = tabbedPane_.getTabCount(); + tabbedPane_.addTab(tabName, autofocusTab_); + tabbedPane_.setTabComponentAt(index, createTabTitle(tabName)); + + tabName = "Cameras"; + index = tabbedPane_.getTabCount(); + tabbedPane_.addTab(tabName, cameraTab_); + tabbedPane_.setTabComponentAt(index, createTabTitle(tabName)); + + tabName = "Settings"; + index = tabbedPane_.getTabCount(); + tabbedPane_.addTab(tabName, settingsTab_); + tabbedPane_.setTabComponentAt(index, createTabTitle(tabName)); // set acquisition tab to default + final int tabIndex = findTabNameIndex("Acquisition"); + if (tabIndex != -1) { + tabbedPane_.setSelectedIndex(tabIndex); + } else { + tabbedPane_.setSelectedIndex(0); // Navigation Tab + } tabbedPane_.setSelectedIndex(numImagingPaths + 1); // add ui elements to the panel @@ -82,14 +113,39 @@ private void createUserInterface() { } /** - * Return a styled HTML String of tab title. + * Returns the index of the tab or -1 if not found. + * + * @param tabName the name of the tab + * @return the index or -1 if not found + */ + private int findTabNameIndex(final String tabName) { + for (int i = 0; i < tabbedPane_.getTabCount(); i++) { + final String title = tabbedPane_.getTitleAt(i); + if (title.equals(tabName)) { + return i; + } + } + return -1; + } + + /** + * Returns a styled {@link JLabel} for tab titles. * - * @param title the text on the tab - * @return an HTML String + * @param title the title text + * @return a styled component */ - private String createTabTitle(final String title) { - return "" - + title + ""; + private JLabel createTabTitle(final String title) { + final JLabel label = new JLabel(title); + + // font style + final Font currentFont = label.getFont(); + label.setFont(new Font(currentFont.getName(), Font.BOLD, 14)); + label.setForeground(Color.BLACK); + + // set the margins + label.setBorder(new EmptyBorder(8, 10, 5, 10)); + + return label; } /**