Edytor elementów wizualnych generuje i analizuje kod Java w trakcie projektowania klasy elementów wizualnych. Edytor elementów wizualnych używa określonego stylu dla wygenerowanego kodu Java i posiada reguły analizowania kodu Java.
Edytor Visual Editor for Java generuje poprawny kod Java, który można odpowiednio kompilować i wykonywać. Ponadto podczas analizowania istniejącego kodu Java edytor elementów wizualnych korzysta z pewnych reguł w celu określenia elementów kodu, które mają być wizualizowane w widoku projektowania.
Reguły analizowania kodu w celu wyświetlenia w widoku projektowania
Edytor Visual Editor for Java próbuje wizualizować w widoku projektowania kod, który spełnia
dowolne z następujących kryteriów:
Przed rozpoczęciem wizualizacji komponentu w widoku graficznym Projektowanie edytor elementów wizualnych sprawdza także inne wymagania:
- Instancje pól muszą być tworzone w obrębie metody get lub komponent Bean musi być inicjowany przez metodę inicjowania wymienioną na karcie Style wzorca strony preferencji edytora elementów wizualnych.
- Wiersz nie może zawierać błędów kompilacji.
- Możliwe jest załadowanie klasy i utworzenie jej instancji.
- Wartościowanie większości wyrażeń inicjalizacji tablicy jest niemożliwe.
- Możliwe jest zrozumienie złożonych argumentów metody, o ile modelowane są jednostki tworzące argument. Na przykład wyrażenie wykonujące konkatenację łańcuchów przy użyciu operandu + będzie poprawnie wartościowane w większości przypadków.
Większość wyrażeń jest analizowanych pomyślnie, ale nie wszystkie mogą być właściwie wartościowane. W takim przypadku komponent Java Bean zostanie oznaczony w widokach znakiem ostrzegawczym, a przyczyna niepowodzenia zostanie wyświetlona w wierszu statusu po wybraniu komponentu w widoku projektowania lub komponentów Java Bean. Na kanwie zostanie także wyświetlona ikona ostrzeżenia:

Kod generowany przez edytor elementów wizualnych
- Edytor elementów wizualnych generuje domyślne konstruktory wywołujące metodę initialize(), która ustawia wartości właściwości dla klasy.
- W przypadku apletów kod ustawiający wartości początkowe właściwości nosi nazwę init().
Nie jest on wywoływany przez konstruktor, ponieważ jest wykonywany przez przeglądarkę apletów.
- Opcjonalnie: Można wskazać, że edytor elementów wizualnych ma generować dla komponentów bloki try{}catch(). W efekcie wszystkie wyjątki zgłaszane w czasie inicjalizacji będą na bieżąco wyłapywane, co może zwiększyć ryzyko zablokowania wyjątków. Z tego powodu bardziej korzystne jest przepuszczanie wyjątków. Opcję tę można wybrać na karcie Generowanie kodu strony preferencji edytora elementów wizualnych (). Poniższy kod przedstawia klasę JPanel z blokiem try{}catch():
private JPanel getJPanel1() {
if (jPanel1 == null) {
try {
jPanel1 = new JPanel();
}
catch (java.lang.Throwable e) {
// DO ZROBIENIA: coś
}
}
return jPanel1;
}
Poniższy kod przedstawia klasę JPanel bez bloku try{}catch():
private JPanel getJPanel() {
if (jPanel == null) {
jPanel = new JPanel();
}
return jPanel;
}
- Opcjonalnie: Można także wskazać, że edytor elementów wizualnych ma dodawać komentarz do każdego generowanego wyrażenia. Może to ułatwiać rozróżnianie kodu wprowadzonego ręcznie i wygenerowanego. Poniższy wiersz kodu zawiera przykładowy komentarz:
this.add(getJPanel(), null); // Wygenerowany
Aby włączyć tę opcję, należy zaznaczyć pole wyboru Wygeneruj komentarz dla nowych wyrażeń na karcie Generowanie kodu (strona preferencji edytora elementów wizualnych).
- W przypadku komponentów Swing/AWT nie jest to wymagane, mimo że edytor elementów wizualnych
generuje metody (na przykład getPanel()) tworzące
instancje i zwracające pojedynczy komponent Java Bean. Metoda może utworzyć
instancję więcej niż jednego komponentu Java Bean, a zwracana przez nią
wartość nie jest istotna dla określania, czy pole jest komponentem Java
Bean. Aby włączyć pola anOKButton i
ivjTableModel jako komponenty Java Bean, należy
utworzyć ich instancje w obrębie metody get w
klasie.
- W przypadku komponentów SWT edytor elementów wizualnych generuje metody
private void createComposite() dla każdej klasy
rozszerzającej klasę Composite, a wszystkie komponenty potomne Bean są inicjowane
w obrębie tej samej metody.
- Jeśli edytowana klasa rozszerza komponent Java Bean, edytowana instancja jest reprezentowana przez specjalny komponent Java Bean nazywany częścią this.
Części this nie można usunąć z widoków projektowania i komponentów Java Bean,
a metoda inicjowania jej właściwości należy do metody
initialize().
Część this jest wyświetlana w widoku projektowania i widoku komponentów Java Bean
tylko wtedy, gdy są dostępne dowolne właściwości, które można ustawić w widoku
właściwości.
Metody ustawiania właściwości są generowane w metodzie
initialize() lub przy użyciu metody
init(), jeśli klasa rozszerza klasę
java.awt.Applet.
- Jeśli edytowana klasa implementuje interfejs org.eclipse.ui.IWorkbenchPart, kod
wygenerowany dla elementów sterujących elementów potomnych zostaje dodany do metody
createPartControl(Composite parent).