Editores Internos e Externos

Identificador: org.eclipse.ui.editors

Descrição: Este ponto de extensão é utilizado para incluir novos editores no workbench. Um editor é um componente visual em uma página do workbench. Normalmente, ele é utilizado para editar ou procurar um documento ou objeto de entrada. Para abrir um editor, geralmente o usuário chama "Abrir" em um IFile. Quando essa ação é executada, o registro do workbench é consultado para determinar um editor apropriado para o tipo de arquivo e, em seguida, uma nova instância do tipo de editor é criada. O resultado real depende do tipo de editor. O workbench fornece suporte para a criação de editores internos, que estão estritamente integrados ao workbench, e de editores externos, que são ativados em uma janela com estrutura separada. Há também vários níveis de integração entre essas extremidades.

No caso de um editor interno, a integração estrita pode ser realizada entre a janela do workbench e o editor. O menu e a barra de ferramentas do workbench são pré-carregados com ações comuns, como recortar, copiar e colar. Espera-se que a parte ativa, a exibição ou o editor, forneça a implementação dessas ações. Um editor interno também pode definir novas ações que aparecem na janela do workbench. Essas ações aparecem apenas quando o editor está ativo.

A integração entre o workbench e os editores externos é mais tênue. Nesse caso, o workbench pode ativar um editor, mas depois que isso ocorre, não tem como determinar o estado do editor externo ou como colaborar com ele de alguma forma, exceto por meio do sistema de arquivos.

Marcação da Configuração:

   <!ELEMENT extension (editor*)>

   <!ATTLIST extension
     point CDATA #REQUIRED
     id    CDATA #IMPLIED
     name  CDATA #IMPLIED
   >

   <!ELEMENT editor EMPTY>

   <!ATTLIST editor
      id               CDATA #REQUIRED
     name             CDATA #REQUIRED
      icon             CDATA #IMPLIED
      extension       CDATA #IMPLIED
     class            CDATA #IMPLIED
     command          CDATA #IMPLIED
     contributorClass CDATA #IMPLIED
     default          (true | false) "false"
     filenames        CDATA #IMPLIED
     launcher         CDATA #IMPLIED
     symbolicFontName CDATA #IMPLIED
   >

Exemplos: A seguir, um exemplo de definição de extensão de um 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, ele será tratado como uma linha de comandos de programa externo, que será executada no modo dependente de plataforma.

Se o atributo launcher for utilizado, o editor também será tratado como um programa externo. Nesse caso, a classe especificada deverá implementar org.eclipse.ui.IEditorLauncher. O launcher será instanciado e então o arquivo abrir(IFile) será chamado para lançar o editor.

Se o atributo class for utilizado, o workbench presumirá que ele é um editor interno e a classe especificada deverá implementar org.eclipse.ui.IEditorPart. Essa é uma prática comum de subclass org.eclipse.ui.EditorPart ao definir um novo tipo de editor. Também é necessário definir um atributo contributorClass. A classe especificada deverá implementar org.eclipse.ui.IEditorActionBarContributor e será utilizada para incluir novas ações no menu e na barra de ferramentas do workbench, refletindo os recursos do tipo de editor.

No workbench, pode haver mais de um editor de um determinado tipo aberto. Por exemplo, pode haver um ou mais Editores Java abertos. Para evitar a criação de ações e imagens de ações duplicadas, o conceito de editor foi dividido em dois. IEditorActionBarContributor é responsável pela criação de ações. O editor é responsável pela implementação de ações. Além disso, o contribuidor é compartilhado por cada editor aberto. Como resultado dessa criação, há apenas um conjunto de ações para um ou mais editores abertos.

O contribuidor incluirá novas ações no menu e na barra de ferramentas do workbench, refletindo o tipo de editor. Essas ações serão compartilhadas e, quando chamadas, agirão de acordo com o editor ativo. O editor ativo será transmitido para o contribuidor chamando IEditorActionBarContributor.setActiveEditor. Os identificadores de ações e grupos principais na janela do workbench são definidos em org.eclipse.ui.IWorkbenchActionConstants. Eles devem ser utilizados como um ponto de referência para a inclusão de novas ações. Menus de nível superior são criados utilizando os seguintes valores para o atributo path:

As ações e os menus incluídos dentro desses caminhos somente serão mostrados enquanto o editor associado estiver ativo. Quando o editor for fechado, os menus e as ações serão removidos.

Implementação Fornecida: o workbench fornece um "Editor de Texto Padrão" interno. O produto do usuário final pode conter outros editores como parte do pacote de entrega. Nesse caso, os editores registrarão as extensões utilizando a sintaxe descrita acima.

Copyright (c) 2002,2003 IBM Corporation e outros. Todos os direitos reservados. Este programa e os materiais que o acompanham são disponibilizados sob os termos da Common Public License v1.0 que acompanha esta distribuição e estão disponíveis no endereço http://www.eclipse.org/legal/cpl-v10.html