Warning: session_start(): open(/var/lib/php/sessions/sess_8dg2elok6ehqhmeclh9qdlga3m, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
// Note: There seems to be some extra space below the tabs
// when using JTattoo. FlatLAF works fine.
// TODO: changing tabs at runtime, event handling etc.
sclass JExtendedTabbedPane is Swingable {
JTabbedPane tabs;
new L components;
SingleComponentPanel scpBesideTabs = scp();
SingleComponentPanel scpPage = scp();
settable bool vertical;
*(JTabbedPane _tabs) swing {
tabs = _tabs != null ? _tabs : jtabs();
int n = tabCount(tabs);
for i to n: {
components.add(tabs.getComponentAt(i));
tabs.setComponentAt(i, emptyPage());
}
onTabSelectedAndNow(tabs, l0 updatePage);
}
void updatePage {
int idx = getSelectedIndex();
var c = get(components, idx);
//printVars("JExtendedTabbedPane.updateTabs", +idx, +c);
scpPage.set(c);
}
// Something with minimum size 0
Component emptyPage() { ret verticalStrut(0); }
cachedVisual vertical
? westAndCenter(centerAndSouthWithMargin(tabs, scpBesideTabs), scpPage)
: northAndCenter(centerAndEastWithMargin(tabs, scpBesideTabs), scpPage);
selfType setComponentBesideTabs aka setComponentBelowTabs(Component c) {
scpBesideTabs.set(c);
this;
}
int getSelectedIndex() {
ret tabs.getSelectedIndex();
}
void setComponentAt(int i, Component c) {
components.set(i, c);
if (getSelectedIndex() == i) updatePage();
}
Component getComponentAt(int i) {
ret components.get(i);
}
Component getTabComponentAt(int i) {
ret tabs.getTabComponentAt(i);
}
void add(S title, Component c) {
components.add(c);
tabs.add(title, emptyPage());
}
int getTabCount() {
ret tabs.getTabCount();
}
void setTitleAt(int i, S title) {
tabs.setTitleAt(i, title);
}
void setSelectedIndex(int i) {
tabs.setSelectedIndex(i);
}
}