import org.argeo.eclipse.ui.Selected;
import org.argeo.jcr.Jcr;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StackLayout;
import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
private String bodyStyle;
private Image closeIcon;
+ private StackLayout stackLayout;
+
+ private boolean singleTab = false;
+
public TabbedArea(Composite parent, int style) {
super(parent, style);
CmsUiUtils.style(parent, bodyStyle);
headers.setLayoutData(CmsUiUtils.fillWidth());
body = new Composite(this, SWT.NONE);
body.setLayoutData(CmsUiUtils.fillAll());
- body.setLayout(new FormLayout());
+ // body.setLayout(new FormLayout());
+ stackLayout = new StackLayout();
+ body.setLayout(stackLayout);
emptyState();
}
boolean selected = section == currentSection;
Composite sectionHeader = section.createHeader(headers);
CmsUiUtils.style(sectionHeader, selected ? tabSelectedStyle : tabStyle);
- int headerColumns = 2;
+ int headerColumns = singleTab ? 1 : 2;
sectionHeader.setLayout(new GridLayout(headerColumns, false));
sectionHeader.setLayout(CmsUiUtils.noSpaceGridLayout(headerColumns));
Button title = new Button(sectionHeader, SWT.FLAT);
title.addSelectionListener((Selected) (e) -> showTab(tabIndex(section.getNode())));
Node node = section.getNode();
title.setText(Jcr.getTitle(node));
- ToolBar toolBar = new ToolBar(sectionHeader, SWT.NONE);
- ToolItem closeItem = new ToolItem(toolBar, SWT.FLAT);
- if (closeIcon != null)
- closeItem.setImage(closeIcon);
- else
- closeItem.setText("X");
- CmsUiUtils.style(closeItem, selected ? tabSelectedStyle : tabStyle);
- closeItem.addSelectionListener((Selected) (e) -> closeTab(section));
+ if (!singleTab) {
+ ToolBar toolBar = new ToolBar(sectionHeader, SWT.NONE);
+ ToolItem closeItem = new ToolItem(toolBar, SWT.FLAT);
+ if (closeIcon != null)
+ closeItem.setImage(closeIcon);
+ else
+ closeItem.setText("X");
+ CmsUiUtils.style(closeItem, selected ? tabSelectedStyle : tabStyle);
+ closeItem.addSelectionListener((Selected) (e) -> closeTab(section));
+ }
}
}
}
currentUiProvider = uiProvider;
section.setNode(context);
- section.setLayoutData(CmsUiUtils.coverAll());
+ // section.setLayoutData(CmsUiUtils.coverAll());
build(section, uiProvider, context);
if (sections.size() == 0)
sections.add(section);
refreshTabHeaders();
+ index = tabIndex(context);
+ showTab(index);
layout(true, true);
}
public void open(CmsUiProvider uiProvider, Node context) {
+ if (singleTab)
+ throw new UnsupportedOperationException("Open is not supported in single tab mode.");
+
if (previousNode != null && Jcr.getIdentifier(previousNode).equals(Jcr.getIdentifier(context))) {
// does nothing
return;
int currentIndex = sections.indexOf(currentSection);
Section previousSection = new Section(body, SWT.NONE, context);
build(previousSection, previousUiProvider, previousNode);
- previousSection.setLayoutData(CmsUiUtils.coverAll());
- sections.add(currentIndex + 1, previousSection);
+ // previousSection.setLayoutData(CmsUiUtils.coverAll());
+ int index = currentIndex + 1;
+ sections.add(index, previousSection);
+ showTab(index);
refreshTabHeaders();
layout(true, true);
}
-
+
public void showTab(int index) {
Section sectionToShow = sections.get(index);
- sectionToShow.moveAbove(null);
+ // sectionToShow.moveAbove(null);
+ stackLayout.topControl = sectionToShow;
refreshTabHeaders();
layout(true, true);
}
}
protected Section getCurrentSection() {
- return (Section) body.getChildren()[0];
+ return (Section) stackLayout.topControl;
}
public void setTabStyle(String tabStyle) {
public void setCloseIcon(Image closeIcon) {
this.closeIcon = closeIcon;
}
+
+ public void setSingleTab(boolean singleTab) {
+ this.singleTab = singleTab;
+ }
+
}