Почему я не вижу изменений в SWT / JFace TitleAreaDialog в моем плагине eclipse?

Я разрабатываю плагин eclipse (не RCP) и использую Jface и SWT для создания пользовательского интерфейса. Дело в том, что я загрузил плагин WindowBuilder, чтобы облегчить разработку пользовательского интерфейса, и я создал пользовательский TitleAreaDialog.

До этого момента все идет хорошо, и я могу увидеть следующий TitleAreaDialog в WindowBuilder (верхний образ) и проблема приходит, когда я пытаюсь запустить плагин eclipse. Дерево и его элементы с левой стороны исчезают:

WindowBuilder (вверху) и плагин выполнен (внизу)

Кто-нибудь знает, что происходит? Я должен добавить что-то в плагин.xml или манифест.MF?

Спасибо!.

РЕДАКТИРОВАТЬ:
В zip вы найдете плагин.xml, манифест.XML, build.свойства, обработчик и графический интерфейс под названием PlugiGUI. Если у вас есть какие-либо вопросы, пожалуйста, спросите меня.

Спасибо!.

Скачать код можно здесь.

EDIT 2:
Часть манифеста.Код MF следующий

Bundle-SymbolicName: org.eclipse.plugin.arturito;singleton:=true
Require-Bundle: org.eclipse.ui,
 org.eclipse.core.runtime
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Bundle-ClassPath: .,
 swing2swt.jar

Частью кода TitleAreaDialog является следующее:

/**
* Create contents of the dialog.
* @param parent
*/
@Override
protected Control createDialogArea(Composite parent) {
    //TITLE AND IMAGE OF TitleDialog
                ...

    //Composite        
    Composite area = (Composite) super.createDialogArea(parent);
    Composite container = new Composite(area, SWT.NONE);
    container.setLayout(new FillLayout(SWT.HORIZONTAL));
    container.setLayoutData(new GridData(GridData.FILL_BOTH));

    //Creates the division
    SashForm sashForm = new SashForm(container, SWT.NONE);


    //Right division
    Group rightGroup = new Group(sashForm, SWT.NONE);
    rightGroup.setLayout(new StackLayout());

    //Create the tree
    Tree tree = new Tree(rightGroup, SWT.BORDER);
    tree.setLinesVisible(true);
    tree.setToolTipText("");
    tree.setHeaderVisible(true);

    //Create tree elements
    TreeItem pluginProperties = new TreeItem(tree, SWT.NONE);
    pluginProperties.setText("Plugin properties");
    pluginProperties.setImage(ResourceManager.getPluginImage("org.eclipse.plugin.arturito", "icons/arturitoProperties.png"));


    TreeItem createPluginProperties = new TreeItem(pluginProperties, SWT.NONE);
    createPluginProperties.setText("Create");
    createPluginProperties.setImage(ResourceManager.getPluginImage("org.eclipse.plugin.arturito", "icons/arturitoPlus.png"));
    TreeItem editPluginProperties = new TreeItem(pluginProperties, SWT.NONE);
    editPluginProperties.setText("Edit/Delete");
    editPluginProperties.setImage(ResourceManager.getPluginImage("org.eclipse.plugin.arturito", "icons/arturitoRemoveEdit.png"));
    pluginProperties.setExpanded(true);

    //MORE TREE ELEMENTS WITH SAME PATTERN
    ..............

    //Left division
    Group leftGroup = new Group(sashForm, SWT.NONE);
    leftGroup.setLayout(new StackLayout());

    Composite projectConfigDescriptor = new Composite(leftGroup, SWT.NONE);

   //Proportion of sashForm
    sashForm.setWeights(new int[] {220, 469});
    return area;
}

Почему WindowBuilder показывает TitleDialog, как я хочу, а мой плагин нет?

1 ответ

  1. У вас есть макет для ваших левых и правых групп, установленных как StackLayout. Этот макет требует, чтобы вы сказали ему, какой элемент управления в настоящее время является верхним элементом управления для отображения. Так вы бы сделали:

    StackLayout layout = new StackLayout();
    rightGroup.setLayout(layout);
    
    ... create Tree
    
    layout.topControl = tree;
    

    Однако, поскольку он стоит, нет причин использоватьStackLayout, поскольку вы создаете только один элемент управления верхнего уровня на каждой стороне. Так вы смогли как раз использовать FillLayout:

    rightGroup.setLayout(new FillLayout());