Наличие динамического числа автономных представлений делит пространство равномерно - PullRequest
2 голосов
/ 25 марта 2012

При отображении нескольких экземпляров одного и того же представления хотелось бы, чтобы следующее значение оставалось верным:

  • Представления не складываются
  • Количество из них является динамическим (скажем, от 1 до 10) и первоначально не известно: они добавляются пользователем по одному
  • Они расположены выше / ниже друг друга
  • Они занимают все вертикальное пространство между собой
  • По умолчанию они имеют одинаковую высоту (если есть 3 вида, каждый получает 1/3 от общего вертикального пространства, добавление 4-го вида заставляет их всех получить 1/4 и т. Д.)

Для добавления представлений в перспективе используется следующее:

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;
}

Является ли этот подход хоть чем-то в правильном направлении?

...