Skip to content

Commit

Permalink
Separate tab creation and tab addition to UI
Browse files Browse the repository at this point in the history
  • Loading branch information
Dmitry Avtonomov authored and fcyu committed Dec 8, 2022
1 parent 019ccd4 commit 120e1d3
Show file tree
Hide file tree
Showing 3 changed files with 98 additions and 33 deletions.
116 changes: 85 additions & 31 deletions MSFragger-GUI/src/com/dmtavt/fragpipe/Fragpipe.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,20 @@
import com.dmtavt.fragpipe.messages.NoteFragpipeUpdate;
import com.dmtavt.fragpipe.params.ThisAppProps;
import com.dmtavt.fragpipe.process.ProcessManager;
import com.dmtavt.fragpipe.tabs.*;
import com.dmtavt.fragpipe.tabs.TabConfig;
import com.dmtavt.fragpipe.tabs.TabDatabase;
import com.dmtavt.fragpipe.tabs.TabDiann;
import com.dmtavt.fragpipe.tabs.TabDownstream;
import com.dmtavt.fragpipe.tabs.TabGlyco;
import com.dmtavt.fragpipe.tabs.TabMsfragger;
import com.dmtavt.fragpipe.tabs.TabPtms;
import com.dmtavt.fragpipe.tabs.TabQuantificationLabeling;
import com.dmtavt.fragpipe.tabs.TabQuantificationLfq;
import com.dmtavt.fragpipe.tabs.TabRun;
import com.dmtavt.fragpipe.tabs.TabSpecLib;
import com.dmtavt.fragpipe.tabs.TabUmpire;
import com.dmtavt.fragpipe.tabs.TabValidation;
import com.dmtavt.fragpipe.tabs.TabWorkflow;
import com.dmtavt.fragpipe.tools.dbsplit.DbSplit2;
import com.dmtavt.fragpipe.tools.speclibgen.SpecLibGen2;
import com.github.chhh.utils.OsUtils;
Expand Down Expand Up @@ -92,7 +105,6 @@
import java.util.NoSuchElementException;
import java.util.Objects;
import java.util.Properties;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.stream.Collectors;
import javax.swing.BorderFactory;
Expand Down Expand Up @@ -183,6 +195,21 @@ public class Fragpipe extends JFrameHeadless {
Bus.registerQuietly(updater);
}

private UiTab uiTabConfig;
private UiTab uiTabWorkflow;
private UiTab uiTabUmpire;
private UiTab uiTabDb;
private UiTab uiTabFragger;
private UiTab uiTabValidation;
private UiTab uiTabPtms;
private UiTab uiTabGlyco;
private UiTab uiTabQuantLfq;
private UiTab uiTabQuantLabeled;
private UiTab uiTabSpecLib;
private UiTab uiTabDiann;
private UiTab uiTabRun;
private UiTab uiTabDownstream;

public Fragpipe() throws HeadlessException {
super(headless);
init();
Expand Down Expand Up @@ -210,6 +237,21 @@ public void windowClosing(WindowEvent e) {
log.debug("Done init()");
}

private static void addTab(JTabbedPane tabPane, UiTab tab, int insertionIndex) {
final Component comp = tab.isWrapTabInScroll()
? SwingUtils.wrapInScroll(tab.getComponent())
: tab.getComponent();
if (insertionIndex < 0) {
tabPane.addTab(tab.getTitle(), tab.getIcon(), comp, tab.getTooltip());
} else {
tabPane.insertTab(tab.getTitle(), tab.getIcon(), comp, tab.getTooltip(), insertionIndex);
}
}

private static void addTab(JTabbedPane tabPane, UiTab tab) {
addTab(tabPane, tab, -1);
}

public static void uncaughtExceptionHandler(Thread t, Throwable e) {
final String stacktrace = ExceptionUtils.getStackTrace(e);
log.error("Something unexpected happened!", e);
Expand Down Expand Up @@ -570,10 +612,7 @@ public static Component renameNoCache(Component comp, String name, String prefix

private JTabbedPane createTabs(TextConsole console) {
log.debug("Start createTabs()");
final JTabbedPane t = new JTabbedPane(JTabbedPane.TOP, JTabbedPane.WRAP_TAB_LAYOUT);

Consumer<UiTab> addTab = tab -> t.addTab(tab.getTitle(), tab.getIcon(), SwingUtils.wrapInScroll(tab.getComponent()), tab.getTooltip());
Consumer<UiTab> addTabNoScroll = tab -> t.addTab(tab.getTitle(), tab.getIcon(), tab.getComponent(), tab.getTooltip());
final JTabbedPane tp = new JTabbedPane(JTabbedPane.TOP, JTabbedPane.WRAP_TAB_LAYOUT);

TabConfig tabConfig = new TabConfig(console);
TabWorkflow tabWorkflow = new TabWorkflow();
Expand All @@ -590,32 +629,47 @@ private JTabbedPane createTabs(TextConsole console) {
TabDownstream tabDownstream = new TabDownstream();
TabRun tabRun = new TabRun(console, tabDownstream);

addTab.accept(new UiTab("Config", tabConfig, "/com/dmtavt/fragpipe/icons/150-cogs.png", null));
addTabNoScroll.accept(new UiTab(TAB_NAME_LCMS, tabWorkflow,
"/com/dmtavt/fragpipe/icons/icon-workflow-16.png", null));
addTab.accept(new UiTab("Umpire", tabUmpire,
"/com/dmtavt/fragpipe/icons/dia-umpire-16x16.png", null));
addTab.accept(new UiTab("Database", tabDatabase,
"/com/dmtavt/fragpipe/icons/icon-dna-helix-16.png", null));
addTab.accept(new UiTab(TAB_NAME_MSFRAGGER, tabMsfragger,
"/com/dmtavt/fragpipe/icons/bolt-outlined-16.png", null));
addTab.accept(new UiTab("Validation", tabValidation,
"/com/dmtavt/fragpipe/icons/icon-filtration-16.png", null));
addTab.accept(new UiTab("PTMs", tabPtms, "/com/dmtavt/fragpipe/icons/icon-edit-16.png", null));
addTab.accept(new UiTab("Glyco", tabGlyco, "/com/dmtavt/fragpipe/icons/glyco-16.png", null));
addTab.accept(new UiTab("Quant (MS1)", tabQuantificationLfq,
"/com/dmtavt/fragpipe/icons/icon-scales-balance-16.png", null));
addTab.accept(new UiTab("Quant (Isobaric)", tabQuantificationLabeling,
"/com/dmtavt/fragpipe/icons/icon-scales-balance-color-2-16.png", null));
addTab.accept(new UiTab("Spec Lib", tabSpecLib,
"/com/dmtavt/fragpipe/icons/icon-library-16.png", null));
addTab.accept(new UiTab("Quant (DIA)", tabDiann,
"/com/dmtavt/fragpipe/icons/icon-diann-16.png", null));
addTabNoScroll.accept(new UiTab("Run", tabRun, "/com/dmtavt/fragpipe/icons/video-play-16.png", null));
addTabNoScroll.accept(new UiTab("Downstream", tabDownstream, "/com/dmtavt/fragpipe/icons/icon-saint-20.png", null));
uiTabConfig = new UiTab(TabConfig.TAB_NAME, tabConfig, "/com/dmtavt/fragpipe/icons/150-cogs.png", null, true);
uiTabWorkflow = new UiTab(TAB_NAME_LCMS, tabWorkflow,
"/com/dmtavt/fragpipe/icons/icon-workflow-16.png", null, false);
uiTabUmpire = new UiTab("Umpire", tabUmpire,
"/com/dmtavt/fragpipe/icons/dia-umpire-16x16.png", null, true);
uiTabDb = new UiTab("Database", tabDatabase,
"/com/dmtavt/fragpipe/icons/icon-dna-helix-16.png", null, true);
uiTabFragger = new UiTab(TAB_NAME_MSFRAGGER, tabMsfragger,
"/com/dmtavt/fragpipe/icons/bolt-outlined-16.png", null, true);
uiTabValidation = new UiTab("Validation", tabValidation,
"/com/dmtavt/fragpipe/icons/icon-filtration-16.png", null, false);
uiTabPtms = new UiTab("PTMs", tabPtms, "/com/dmtavt/fragpipe/icons/icon-edit-16.png", null, true);
uiTabGlyco = new UiTab("Glyco", tabGlyco, "/com/dmtavt/fragpipe/icons/glyco-16.png", null, true);
uiTabQuantLfq = new UiTab("Quant (MS1)", tabQuantificationLfq,
"/com/dmtavt/fragpipe/icons/icon-scales-balance-16.png", null, true);
uiTabQuantLabeled = new UiTab("Quant (Isobaric)", tabQuantificationLabeling,
"/com/dmtavt/fragpipe/icons/icon-scales-balance-color-2-16.png", null, true);
uiTabSpecLib = new UiTab("Spec Lib", tabSpecLib,
"/com/dmtavt/fragpipe/icons/icon-library-16.png", null, true);
uiTabDiann = new UiTab("Quant (DIA)", tabDiann,
"/com/dmtavt/fragpipe/icons/icon-diann-16.png", null, true);
uiTabRun = new UiTab("Run", tabRun, "/com/dmtavt/fragpipe/icons/video-play-16.png", null, false);
uiTabDownstream = new UiTab("Downstream", tabDownstream, "/com/dmtavt/fragpipe/icons/icon-saint-20.png", null, false);

addTab(tp, uiTabConfig);
addTab(tp, uiTabWorkflow);
addTab(tp, uiTabUmpire);
addTab(tp, uiTabDb);
addTab(tp, uiTabFragger);
addTab(tp, uiTabValidation);
addTab(tp, uiTabPtms);
addTab(tp, uiTabGlyco);
addTab(tp, uiTabQuantLfq);
addTab(tp, uiTabQuantLabeled);
addTab(tp, uiTabSpecLib);
addTab(tp, uiTabDiann);
addTab(tp, uiTabRun);
addTab(tp, uiTabDownstream);

log.debug("Done createTabs()");
return t;
return tp;
}

public static void decorateFrame(Window frame) {
Expand Down Expand Up @@ -719,7 +773,7 @@ public void on(MessageClearCache m) {

@Subscribe(sticky = true, threadMode = ThreadMode.MAIN_ORDERED)
public void on(NoteFragpipeCache m) {
log.debug("Got NotePreviousUiState, updating UI");
log.debug("Got NoteFragpipeCache, updating UI");
loadUi(m.propsUiState, true, !headless);
}

Expand Down
13 changes: 11 additions & 2 deletions MSFragger-GUI/src/com/dmtavt/fragpipe/api/UiTab.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

package com.dmtavt.fragpipe.api;

import java.awt.Component;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
Expand All @@ -32,12 +31,14 @@ public class UiTab {
private final String title;
private final JComponent comp;
private final String tip;
private final boolean wrapTabInScroll;

public UiTab(String title, JComponent comp, String iconResourcePath, String tip) {
public UiTab(String title, JComponent comp, String iconResourcePath, String tip, boolean wrapTabInScroll) {
this.iconResourcePath = iconResourcePath;
this.title = title;
this.comp = comp;
this.tip = tip;
this.wrapTabInScroll = wrapTabInScroll;

if (iconResourcePath != null) {
try {
Expand All @@ -48,6 +49,10 @@ public UiTab(String title, JComponent comp, String iconResourcePath, String tip)
}
}

public UiTab(String title, JComponent comp, String iconResourcePath, String tip) {
this(title, comp, iconResourcePath, tip, true);
}

public String getTitle() {
return title;
}
Expand All @@ -63,4 +68,8 @@ public JComponent getComponent() {
public String getTooltip() {
return tip;
}

public boolean isWrapTabInScroll() {
return wrapTabInScroll;
}
}
2 changes: 2 additions & 0 deletions MSFragger-GUI/src/com/dmtavt/fragpipe/tabs/TabConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,8 @@ public class TabConfig extends JPanelWithEnablement {
private static final MigUtils mu = MigUtils.get();
private static final Pattern emailPattern = Pattern.compile("(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])");

public static final String TAB_NAME = "Config";

private UiText uiTextBinFragger;
private UiText uiTextBinIonQuant;
private HtmlStyledJEditorPane epFraggerVer;
Expand Down

0 comments on commit 120e1d3

Please sign in to comment.