Edytory wewnętrzne i zewnętrzne

org.eclipse.ui.editors

Ten punkt rozszerzenia umożliwia dodawanie nowych edytorów do środowiska roboczego. Edytor jest wizualnym komponentem na stronie środowiska roboczego. Zwykle służy on do edycji lub przeglądania dokumentu albo obiektu wejściowego. Aby otworzyć edytor, użytkownik wywołuje zwykle akcję Open w interfejsie IFile. Po wykonaniu tej akcji następuje sprawdzenie informacji w rejestrze środowiska roboczego w celu ustalenia odpowiedniego edytora dla danego typu pliku, a następnie tworzona jest nowa instancja danego typu edytora. Rzeczywisty wynik zależy od typu edytora. W środowisku roboczym obsługiwane jest tworzenie edytorów wewnętrznych, ściśle zintegrowanych ze środowiskiem roboczym, oraz edytorów zewnętrznych, które są uruchamiane w osobnym oknie ramki. Między tymi punktami skrajnymi istnieją także różne pośrednie poziomy integracji.

W przypadku edytora wewnętrznego można uzyskać ścisłą integrację między oknem środowiska roboczego a edytorem. W menu i na pasku narzędzi środowiska roboczego znajduje się pewna liczba wstępnie ładowanych wspólnych akcji, takich jak wycinanie, kopiowanie i wklejanie. Oczekuje się, że implementację tych akcji udostępni aktywna część, czyli widok lub edytor. Edytor wewnętrzny może także definiować nowe akcje, wyświetlane w oknie środowiska roboczego. Akcje te są widoczne tylko wtedy, gdy edytor jest aktywny.

Integracja między środowiskiem roboczym a edytorami zewnętrznymi jest bardziej luźna. W tym przypadku środowisko robocze może uruchomić edytor, ale następnie nie może ustalać stanu takiego edytora zewnętrznego ani współpracować z nim inaczej, niż przez system plików.

<!ELEMENT extension (editor*)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>


<!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>


<!ELEMENT contentTypeBinding EMPTY>

<!ATTLIST contentTypeBinding

contentTypeId CDATA #REQUIRED>

Informuje, że edytor zawierający dany typ treści potrafi ją zinterpretować i jest odpowiedni do edycji plików tego typu.



Poniżej przedstawiono przykładową definicję rozszerzenia edytora wewnętrznego:

   

<extension point=

"org.eclipse.ui.editors"

>

<editor id=

"com.xyz.XMLEditor"

name=

"Wymyślony edytor XML XYZ"

icon=

"./icons/XMLEditor.gif"

extensions=

"xml"

class=

"com.xyz.XMLEditor"

contributorClass=

"com.xyz.XMLEditorContributor"

symbolicFontName=

"org.eclipse.jface.textfont"

default=

"false"

>

</editor>

</extension>

Jeśli użyty jest atrybut command, będzie on traktowany jako wiersz komend programu zewnętrznego, wykonywany w sposób zależny od platformy.

Jeśli użyty jest atrybut launcher, edytor również będzie traktowany jako program zewnętrzny. W takim przypadku podana klasa musi implementować interfejs org.eclipse.ui.IEditorLauncher. Nastąpi utworzenie instancji programu uruchamiającego, a następnie wywołanie metody open(IFile file) w celu uruchomienia edytora.

Jeśli użyty jest atrybut class, w środowisku roboczym zostanie przyjęte założenie, że jest to edytor wewnętrzny, a podana klasa musi implementować interfejs org.eclipse.ui.IEditorPart. Częstą praktyką jest tworzenie podklasy klasy org.eclipse.ui.EditorPart przy definiowaniu nowego typu edytora. Ponadto wymagane jest też zdefiniowanie atrybutu contributorClass. Podana klasa musi implementować interfejs org.eclipse.ui.IEditorActionBarContributor i jest używana w celu dodawania do menu i paska narzędzi środowiska roboczego nowych akcji, które odzwierciedlają funkcje edytora danego typu.

W środowisku roboczym może być otwarty więcej niż jeden edytor określonego typu. Na przykład może być otwarty więcej niż jeden edytor Java. Aby uniknąć tworzenia duplikatów akcji i ich obrazów, pojęcie edytora podzielono na dwie części. Interfejs IEditorActionBarContributor odpowiada za tworzenie akcji. Edytor odpowiada za implementowanie akcji. Ponadto dostarczyciel jest współużytkowany przez każdy otwarty edytor. Dzięki tej konstrukcji istnieje tylko jeden zestaw akcji niezależnie od liczby otwartych edytorów.

Dostarczyciel dodaje do menu i paska narzędzi środowiska roboczego nowe akcje, odzwierciedlające typ edytora. Akcje te są współużytkowane, a po wywołaniu działają w aktywnym edytorze. Aktywny edytor jest przekazywany do dostarczyciela przez wywołanie metody IEditorActionBarContributor.setActiveEditor. Identyfikatory akcji i ważniejszych grup w oknie środowiska roboczego są zdefiniowane w interfejsie org.eclipse.ui.IWorkbenchActionConstants. Należy ich używać jako punktu odniesienia przy dodawaniu nowych akcji. Menu najwyższego poziomu tworzy się przy użyciu następujących wartości atrybutu ścieżki:

Akcje i menu dodane do tych ścieżek będą widoczne tylko wtedy, gdy aktywny jest powiązany z nimi edytor. Po zamknięciu edytora menu i akcje zostaną usunięte.

W środowisku roboczym udostępniany jest Domyślny edytor tekstu. W produkcie użytkownika mogą być zawarte inne edytory, stanowiące element dostarczanego pakietu. W takim przypadku edytory te zostaną zarejestrowane jako rozszerzenia przy użyciu opisanej powyżej składni.