拥有动态数量的独立视图可均匀划分空间

时间:2012-03-25 17:58:08

标签: eclipse-rcp

当显示同一视图的多个实例时,我希望以下内容成立:

  • 视图不叠加
  • 它们的数量是动态的(比如1到10),最初不知道:它们是由用户逐个添加的
  • 他们位于彼此上方/下方
  • 他们之间占据了所有垂直空间
  • 默认情况下,它们具有相同的高度(如果有3个视图,每个视图占总垂直空间的1/3,则添加第4个视图会使它们全部获得1/4等)

我用于在Perspective中添加视图的内容如下:

public void createInitialLayout(IPageLayout layout) {
  String editorArea = layout.getEditorArea();
  layout.addStandaloneViewPlaceholder(MarkerView.VIEW_ID + ":0", IPageLayout.TOP, 0.6F, editorArea, true);
  layout.addStandaloneViewPlaceholder(MarkerView.VIEW_ID + ":1", IPageLayout.BOTTOM, 0.6F, editorArea, true);
  layout.addStandaloneViewPlaceholder(MarkerView.VIEW_ID + ":2", IPageLayout.BOTTOM, 0.6F, editorArea, true);

问题在于不知道视图的数量,比率不会为视图的所有实例提供相等的空间。

在添加新视图后,是否可以以某种方式调整现有视图的比率?

我也试过让视图类实现ISizeProvider(我承认我没有完全掌握),但是还没有成功实现我想要的:

@Override
public int getSizeFlags(boolean width) {
  return width ? 0 : SWT.FILL | SWT.MIN | SWT.MAX;
}

@Override
public int computePreferredSize(boolean width, int availableParallel, int availablePerpendicular, int preferredResult) {
  int windowHeight = PlatformUI.getWorkbench().getDisplay().getActiveShell().getBounds().height;
  int nrOfViews = Model.getInstance().markerCounter;
  return width ? preferredResult : windowHeight / nrOfViews;
}

至少这种方法是否朝着正确的方向发展?

0 个答案:

没有答案