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á.
(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.
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 ModeledPageLayout
implementaçã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 stackView
API não oferece suporte a curingas (enquanto outras, como o addView
fazem).
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
- Eclipse RCP - Abra a visualização na pasta Editor
- Eclipse RCP - Empilhando uma visualização com a área do editor?
- Perspectiva customizada do Eclipse, com visualização inicialmente invisível empilhada na área do editor
- Pergunta do Google, Lars responde
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.