Formularze interfejsu użytkownika zapewniają podstawową obsługę wielostronicowych edytorów, które można na nich budować.
Budowanie wielostronicowego edytora formularzy interfejsu użytkownika
należy rozpocząć od rozszerzenia klasy FormEditor
:
public class SimpleFormEditor extends FormEditor { public SimpleFormEditor() { } protected FormToolkit createToolkit(Display display) { // Utworzenie przybornika umożliwiającego współużytkowanie kolorów między edytorami. return new FormToolkit(ExamplesPlugin.getDefault().getFormColors( display)); } protected void addPages() { try { addPage(new FreeFormPage(this)); addPage(new SecondPage(this)); addPage(new ThirdPage(this)); addPage(new MasterDetailsPage(this)); addPage(new PageWithSubPages(this)); } catch (PartInitException e) { // } } public void doSave(IProgressMonitor monitor) { } public void doSaveAs() { } public boolean isSaveAsAllowed() { return false; }
Najprościej rozpocząć od utworzenia stron i dodania ich, jak w powyższym przykładzie.
Każda strona musi implementować klasę FormPage
i przesłaniać metodę
createFormContent(IManagedForm managedForm)
. Oczywiście zarządzany formularz
został już utworzony na stronie, pozostaje więc utworzyć treść w załączonym formularzu,
a także zarejestrować wszystkie części formularza, które muszą należeć do zarządzanego
cyklu życia.
Oprócz stron formularza można dodać jeden lub kilka edytorów tekstu pozwalających na
wyświetlanie surowego kodu źródłowego jako alternatywy dla stron interfejsu GUI.
Aby to zrobić, należy wywołać w nadklasie metodę addPage(IEditorPart,
IEditorInput input)
.
Istnieje wiele sposobów tworzenia wielostronicowego edytora opartego na formularzu. Wybrana metoda zależy głównie od typu edytowanej treści oraz stopnia zaawansowania przyszłych użytkowników edytora. Istnieją dwa możliwe podejścia:
Jeśli użytkownicy rzadko korzystają z edytora, surowy kod źródłowy jest zbyt złożony lub trudny, aby edytować go ręcznie, użytkownicy nie są zaawansowani itp. należy utworzyć PEŁNE strony umożliwiające edycję wszystkich elementów treści bez potrzeby edytowania surowego kodu źródłowego. Przy zastosowaniu takiego rozwiązania strona źródłowa służy jedynie do okazjonalnego sprawdzania poprawności, a nie do normalnej pracy. W takim kontekście narzędziem udostępniającym niezbędne funkcje jest prosty edytor tekstu. Może nim być na przykład edytor schematów punktów rozszerzeń PDE.
Jeśli użytkownicy są zaawansowani, potrafią ręcznie edytować plik, ale w pewnych sytuacjach chętnie skorzystaliby z pomocy, należy rozważyć zastosowanie łączonego rozwiązania. W takim przypadku należy utworzyć dobry edytor kodu źródłowego zawierający wszystkie dodatki, jak przyrostowe schematy, asystent kontekstu czy wyróżnianie składni. Natomiast do stron formularza, których edycja może być utrudniona z poziomu kodu źródłowego, należy dodać złożone funkcje rozszerzone. Doświadczenie wskazuje, że przekonanie użytkowników o dużym doświadczeniu, aby nie edytowali kodu źródłowego jest bardzo trudne, jeśli rozszerzenia są minimalne lub ich zastosowanie może być dyskusyjne. Jednakże funkcje dostępne tylko na stronach interfejsu GUI i dobrze spełniające swoje zadania są chętnie używane.
Tworzenie wielostronicowego edytora o wysokiej jakości w przypadku zastosowania interfejsu GUI i stron kodu źródłowego może wymagać pokonania kilku trudności. Dopuszczenie możliwości częstego przełączania stron przez użytkowników wymaga utworzenia dobrego modelu treści bazowej. Model taki powinien być bezpośrednio powiązany z dokumentami bazowymi, co zapewni jego synchronizację w przypadku, gdy użytkownicy będą wprowadzali tekst bezpośrednio oraz kiedy będą zmieniali go strukturalnie przy użyciu stron interfejsu GUI. Nie należy zapominać o pośrednich zmianach powodowanych przez inne akcje środowiska roboczego i wprowadzanych, gdy edytor wciąż działa.