Editores Internos e Externos
Identificador:
org.eclipse.ui.editors
Descrição:
Este ponto de extensão é utilizado para adicionar novos editores à área de trabalho. Um editor é um componente visual dentro de uma página da área de trabalho. Normalmente é utilizado para editar ou procurar um documento ou um objecto de entrada. Para abrir um editor, o utilizador irá normalmente invocar "Abrir" (Open) num IFile.
Quando esta acção é executada é consultado o registo da área de trabalho para determinar um editor apropriado para o tipo de ficheiro e então é criada uma nova instância do tipo de editor. O verdadeiro resultado depende do tipo de editor. A área de trabalho fornece suporte para a criação do editores internos, que estão fortemente integrados na área de trabalho, e editores externos, que são iniciados numa janela de estrutura separada.
Existem também vários níveis de integração entre estes extremos.
No caso de um editor interno, a forte integração pode ser conseguida entre a janela da área de trabalho e do editor. O menu e a barra de ferramentas da área de trabalho são pré-carregados com um número de acções comuns como cortar, copiar e colar. Espera-se que a parte activa, a visualização ou o editor, melhorem a implementação destas acções. Um editor interno pode ainda definir novas acções que aparecem na janela da área de trabalho. Estas acções apenas aparecem quando o editor está activo.
A integração entre a área de trabalho e os editores externos é mais ténue. Neste caso, a área de trabalho poderá lançar um editor, mas depois não tem qualquer maneira de determinar o estado do editor externo ou sequer de colaborar com este por qualquer meio, excepto o sistema de ficheiros.
Marcação da Configuração:
<!ELEMENT extension (editor*)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
- point - um identificador totalmente qualificado do ponto de extensão de destino
- id - um identificador opcional da instância de extensão
- name - um nome opcional da instância de extensão
<!ELEMENT editor (contentTypeBinding*)>
<!ATTLIST editor
id CDATA #REQUIRED
name CDATA #REQUIRED
icon CDATA #IMPLIED
extensions CDATA #IMPLIED
class CDATA
#IMPLIED
command CDATA #IMPLIED
launcher CDATA #IMPLIED
contributorClass CDATA #IMPLIED
default (true | false) "false"
filenames CDATA #IMPLIED
symbolicFontName CDATA #IMPLIED
matchingStrategy CDATA #IMPLIED>
- id - um nome único que será utilizado para identificar este editor
- name - um nome processável que será utilizador na UI para este editor
- icon - um nome relativo do ícone que será utilizado para todos os recursos que correspondem às extensões especificadas.
Não é necessário um ícone se especificar um comando em vez de uma classe. Neste caso, a área de trabalho irá utilizar o ícone fornecido pelo sistema operativo.
- extensions - um campo opcional que contém a lista de tipos de ficheiros compreendidos pelo editor. É uma cadeia que contém extensões de ficheiros separadas por vírgulas. Por exemplo, um editor que compreende documentos de hipertexto poderá registar para "htm, html".
- class - o nome de uma classe que implementa org.eclipse.ui.IEditorPart. Os atributos class, command e launcher excluem-se mutuamente. Se este atributo for definido, então também se deve definir contributorClass.
- command - um comando a executar para lançar um editor externo. O comando executável deve estar localizado no caminho do sistema ou no directório do conector. Os atributos class, command e launcher excluem-se mutuamente.
- launcher - o nome de uma classe que implementa org.eclipse.ui.IEditorLauncher. Um lançador irá abrir o editor externo. Os atributos class, command e launcher excluem-se mutuamente.
- contributorClass - o nome de uma classe que implementa org.eclipse.ui.IEditorActionBarContributor. Este atributo deve ser definido apenas se for definido o atributo class. Esta classe é utilizada para adicionar novas acções ao menu e barra de ferramentas da área de trabalho, que reflectem as funções do tipo de editor.
- default - se estiver definido como true (verdadeiro), este editor será utilizado como o editor predefinido para o tipo. Isto apenas é relevante no caso em que está registado mais do que um editor para o mesmo tipo. Se um editor não for o predefinido para o tipo, pode ainda assim ser lançado utilizando a opção "Abrir com..." do sub-menu para os recursos seleccionados.
Note que este atributo apenas é reconhecido para associações de nome de ficheiro e extensões neste momento. Não será reconhecido para as associações de tipo de conteúdo. A resolução baseada no tipo de conteúdo irá ocorrer segundo uma base de primeiro a chegar, primeiro a ser servido, e não está especificada de modo explícito.
- filenames - um campo opcional que contém a lista de nomes de ficheiros compreendidos pelo editor. É uma cadeia que contém os nomes dos ficheiros separados por vírgulas. Por exemplo, um editor que compreende documentos de hipertexto específicos poderá registar para "ejb.htm, ejb.html".
- symbolicFontName - o nome simbólico de um tipo de letra. O nome simbólico do tipo de letra tem de ser o id de um tipo de letra definido (consulte org.eclipse.ui.fontDefinitions). Se este atributo estiver em falta ou se não for válido, então o nome do tipo de letra será o valor de "org.eclipse.jface.textfont" no armazenamento das preferências do editor. Se não existir qualquer armazenamentos das preferências ou se a chave não estiver definida, então será utilizado o tipo de letra de texto JFace. A implementação do editor decide se utilizar o nome simbólico do tipo de letra para definir o tipo de letra.
- matchingStrategy - o nome de uma classe que implementa org.eclipse.ui.IEditorMatchingStrategy. Este atributo deve ser definido apenas se for definido o atributo class. Isto permite à extensão do editor fornecer o seu próprio algoritmo para corresponder à entrada de um dos editores para uma determinada entrada do editor.
<!ELEMENT contentTypeBinding EMPTY>
<!ATTLIST contentTypeBinding
contentTypeId CDATA #REQUIRED>
Mostra que o editor de contenção compreende o tipo de conteúdo fornecido e adequa-se à edição de ficheiros desse tipo.
- contentTypeId - o identificador de tipo de conteúdos
Exemplos:
A seguir encontra-se um exemplo de uma definição de extensão de editor interno:
<extension point=
"org.eclipse.ui.editors"
>
<editor
id=
"com.xyz.XMLEditor"
name=
"Fancy XYZ XML editor"
icon=
"./icons/XMLEditor.gif"
extensions=
"xml"
class=
"com.xyz.XMLEditor"
contributorClass=
"com.xyz.XMLEditorContributor"
symbolicFontName=
"org.eclipse.jface.textfont"
default=
"false"
>
</editor>
</extension>
Informações de API:
Se o atributo command for utilizado, será tratado como um linha de comandos de programa externo que irá ser executada numa forma dependente da plataforma.
Se o atributo launcher for utilizado com o editor também será tratado como um programa externo. Neste caso, a classe especificado tem de implementar org.eclipse.ui.IEditorLauncher.
O lançador será dividido em instâncias e, em seguida, será invocado open(IFile file) para lançar o editor.
Se o atributo class for utilizado, a área de trabalho irá partir do princípio que é um editor interno e que a classe especificada tem de implementar org.eclipse.ui.IEditorPart.
É comum utilizar subclass org.eclipse.ui.EditorPart quando se define um novo tipo de editor. Também é necessário definir um atributo contributorClass.
A classe especificada tem de implementar org.eclipse.ui.IEditorActionBarContributor, e é utilizada para adicionar novas acções ao menu e à barra de ferramentas da área de trabalho, que reflectem as funções do tipo de editor.
Dentro da área de trabalho poderá existir mais do que um editor aberto de um tipo específico. Por exemplo, podem existir um ou mais Editores Java abertos. Para evitar a criação de acções e imagens de acções duplicadas, o conceito do editor foi dividido em dois. Um IEditorActionBarContributor é responsável pela criação de acções. O editor é responsável pela implementação de acções. Além disso, o contribuidor é partilhado por cada editor aberto. Como resultado desta concepção, existe apenas um conjunto de acções para um ou mais editores abertos.
O contribuidor irá adicionar novas acções ao menu e à barra de ferramentas da área de trabalho, que irão reflectir o tipo de editor. Estas acções são partilhadas e, quando invocadas, actuam sobre o editor activo. O editor activo é passado para o contribuidor invocando IEditorActionBarContributor.setActiveEditor.
Os identificadores para acções e grupos principais dentro da janela da área de trabalho estão definidos em org.eclipse.ui.IWorkbenchActionConstants.
Estes devem ser utilizados como um ponto de referência para a adição de novas acções. Os menus de nível superior são criadas utilizando os valores seguintes para o atributo path:
-
additions - representa um grupo à esquerda do menu Janela.
As acções e os menus adicionados nestes caminhos serão apenas mostrados enquanto o editor associado estiver activo. Quando o editor está fechado, os menus e as acções serão removidos.
Implementação Facultada:
A área de trabalho fornece um "Editor de Texto Predefinido". O produto do utilizador final poderá conter outros editores como parte do conjunto comercializado. Nesse caso, os editores serão registados como extensões utilizando a sintaxe descrita anteriormente.
Copyright (c) 2002, 2005 IBM Corporation e outros.
Todos os direitos reservados. Este programa e os materiais que o acompanham estão disponíveis sob os termos da Eclipse Public License v1.0, que acompanha esta distribuição, e estão disponíveis em http://www.eclipse.org/legal/epl-v10.html