Eclipse RCP - Abra uma Visualização na Área do Editor (híbrido 3.8 / e4)

106

Estou trabalhando em um híbrido 3.8-e4 (ou seja, temos as dependências Luna, mas não usamos o Application.e4xmi , ainda). Basicamente, estamos executando a camada compacta.

Com isso dito, seria bom encontrar uma maneira programática e4 de empilhar essas visualizações desagradáveis ​​na pasta do editor.


1.) Problema

Quero colocar uma pasta de visão genérica na área do editor, de modo que cada visão que é aberta em tempo de execução seja aberta lá.

Ver na pasta do editor

(foto roubada desta questão )


2.1) Possível correção no.1: Usando plugin.xml

Crie uma extensão de perspectiva e inclua cada visualização possível nessa extensão, com pilha de relacionamento sobre org.eclipse.ui.editorss relativa . Isso é um pouco inconveniente se você tiver muitas visualizações esperando para serem abertas e se o projeto for escalonado rapidamente. Também percebi que os IDs de visualização curinga não funcionam aqui.

SS do plugin.xml com extensões de perspectiva

Se você tiver tempo para adicionar cada visualização possível à extensão de perspectiva, isso funcionará. Embora, SE você abrir uma visão que não é adicionada aqui (ou seja: abre em uma pasta diferente), então cada visão subsequente aberta será aberta na pasta anterior, e NÃO na área do editor (pergunte mais explicações se não pegue).


2.2) Possível correção no.2: Usando código na fábrica de perspectiva

No IPerspectiveFactory, temos acesso ao IPageLayout, que por acaso é org.eclipse.ui.internal.e4.compatibility.ModeledPageLayout(material e4).

Agora, esta ModeledPageLayoutimplementação é razoável, mas também sem documentação e APIs públicas estranhas. Este dá a possibilidade de empilhar uma visão sobre qualquer outro parente

modeledPageLayout.stackView("newView0", IPageLayout.ID_EDITOR_AREA);

Esta seria a versão programática do 2.1 . Além disso, o mesmo problema aparece aqui. Se uma visão for aberta em outro lugar, o código acima se tornará inútil.

Curiosamente, a stackViewAPI não oferece suporte a curingas (enquanto outras, como o addViewfazem).


2.3) Correção possível no.3: Soluções alternativas yaaay!

Tenho muitas perspectivas e muitas pastas diferentes em cada uma. Tudo está precisamente colocado.

Visto que o Eclipse oferece as APIs para obter todos os IDs de visualização de todos os lugares do sistema, quero fazer o seguinte, por perspectiva: cada ID de visualização que não foi adicionado a uma pasta específica será anexado à área do editor (ou seja, pasta do editor , pilha do editor) .

Este seria meu último recurso, a menos que alguém oferecesse uma solução mais conveniente e que economize tempo.

Lembre-se, uma alternativa programática e4 é mais flexível!


3.) Questões relacionadas

Eles seriam preteridos para a versão e4.


4.) Bug relacionado no Bugzilla do Eclipse:

Este bug recente aberto por mim tem um anexo com um pequeno SSCCE. As etapas para reproduzir isso são descritas neste comentário , portanto, não vou copiá-las e colá-las aqui.

GGrec
fonte
Eu acho que é muito improvável que isso possa ser feito quando o código de compatibilidade 3.x está incluído. Você pode conseguir colocar uma visualização na área do editor usando as APIs do e4, mas espero que isso confunda o código de compatibilidade.
greg-449
1
Se você não usa editores, simplesmente minimize a área compartilhada e crie o layout como você deseja.
bebbo
avance para uma versão mais recente, em que funcione imediatamente.
bebbo
@bebbo Eu uso editores e não consigo mover tudo para o e4 de uma vez. Software corporativo. :-)
GGrec

Respostas:

1

Eu sugiro que você vá com a correção possível no.3, pois eu acho que não existe um método mais rápido para fazer isso.


fonte
qualquer sugestão com resposta pripr pode ser escrita como um comentário em vez de uma nova resposta.
Mahalakshmi