如何创建CTabFolder的默认界面?

问题描述 投票:0回答:1

如何创建CTabFolder

默认界面
,即所有
CTabItem
关闭时中心区域显示的内容,如Eclipse编辑区。

CTabFolder
似乎没有为此提供公共方法。

enter image description here

,/.;;',/.;';/,..,/.;;',/.[;][/,;.';]【=-=-、【】-=【、

eclipse swt
1个回答
0
投票

这实际上并不是 CTabFolder 的一部分,它是通过创建 CTabFolder 不管理的 CTabFolder 的复合子级来完成的。

对于 Eclipse 实现,请参阅

createOnboardingControls
 中的 
org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer

方法

要实现此功能,您必须侦听选项卡文件夹大小调整事件和项目计数更改事件,以便您可以设置复合大小并使其可见/不可见。

基本实现:

final CTabFolder tabFolder = new CTabFolder(parent, SWT.TOP);
 
final Composite empty = new Composite(tabFolder, SWT.NONE);

empty.setLayout(new FillLayout()); // Whatever fill you want

// Just set background here to show when the composite is visible
// Replace with your contents
empty.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_DARK_CYAN));

// Set location below tab bar
empty.setLocation(2, 30);

// Listen for resize and tab item count events

tabFolder.addListener(SWT.Resize, _ -> setEmptyFolderSize(tabFolder, empty));

tabFolder.addCTabFolder2Listener(CTabFolder2Listener.itemsCountAdapter(_ -> setEmptyFolderSize(tabFolder, empty)));
private static void setEmptyFolderSize(final CTabFolder tabFolder, final Composite empty)
 {
   if (tabFolder.getItemCount() != 0) {
     empty.setVisible(false);
     empty.setSize(0, 0);
   }
   else { // No visible tabs
     empty.setVisible(true);

     final Point location = empty.getLocation();

     final Rectangle folderBounds = tabFolder.getBounds();

     final int width = folderBounds.width - (2 * location.x);
     final int height = folderBounds.height - location.y;

     empty.setSize(width, height);
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.