Czy istnieje sposób automatycznego generowania identyfikatorów na widżetach SWT, aby testy interfejsu użytkownika mogły je odwoływać? Wiem, że mogę ręcznie ustawić identyfikator przy użyciu seData, ale chcę zaimplementować tę funkcję dla istniejącej aplikacji w nieco ogólny sposób.Automatyczne generowanie identyfikatorów na widżetach SWT
Odpowiedz
Możesz rekurencyjnie przypisać identyfikatory do wszystkich swoich powłok w aplikacji przy użyciu Display.getCurrent().getShells();
i Widget.setData();
.
Ustawianie identyfikatorów
Shell []shells = Display.getCurrent().getShells();
for(Shell obj : shells) {
setIds(obj);
}
mieć dostęp do wszystkich aktywnych (nie) do zbiorników umieszczonych w aplikacji z metodą Display.getCurrent().getShells();
. Możesz przechodzić przez wszystkie dzieci każdego z numerów Shell
i przypisać identyfikator każdemu Control
za pomocą metody Widget.setData();
.
private Integer count = 0;
private void setIds(Composite c) {
Control[] children = c.getChildren();
for(int j = 0 ; j < children.length; j++) {
if(children[j] instanceof Composite) {
setIds((Composite) children[j]);
} else {
children[j].setData(count);
System.out.println(children[j].toString());
System.out.println(" '-> ID: " + children[j].getData());
++count;
}
}
}
Jeśli Control
jest Composite
może mieć kontrole wewnątrz kompozytu, to jest powód Użyłem rekurencyjną rozwiązanie w moim przykładzie.
Znalezienie Sterowanie przez ID
Teraz, jeśli chcesz znaleźć kontrola w jednym ze swoich skorup Proponuję podobną, rekurencyjną, podejście:
public Control findControlById(Integer id) {
Shell[] shells = Display.getCurrent().getShells();
for(Shell e : shells) {
Control foundControl = findControl(e, id);
if(foundControl != null) {
return foundControl;
}
}
return null;
}
private Control findControl(Composite c, Integer id) {
Control[] children = c.getChildren();
for(Control e : children) {
if(e instanceof Composite) {
Control found = findControl((Composite) e, id);
if(found != null) {
return found;
}
} else {
int value = id.intValue();
int objValue = ((Integer)e.getData()).intValue();
if(value == objValue)
return e;
}
}
return null;
}
Z metoda findControlById()
można łatwo znaleźć Control
według jej identyfikatora.
Control foundControl = findControlById(12);
System.out.println(foundControl.toString());
Linki
- 1. Automatyczne generowanie manifestów lalek?
- 2. ViewFlipper w widżetach aplikacji
- 3. Automatyczne generowanie komentarzy Gettext
- 4. Dobry sposób na generowanie identyfikatorów GUID na silniku aplikacji?
- 5. Generowanie identyfikatorów URI w Jenie dla RDF
- 6. Generowanie przyjaznych dla użytkownika identyfikatorów w MongoDb
- 7. Generowanie identyfikatorów w Knockout Foreach pętle
- 8. automatyczne generowanie deklaracji modułu otoczenia
- 9. Automatyczne generowanie testów jednostki .NET
- 10. Automatyczne generowanie diagramu bazy danych MySQL
- 11. Automatyczne generowanie próbnych klas dla gmock
- 12. Automatyczne generowanie silnie wpisany AppSettings klasę
- 13. Automatyczne generowanie kluczy maszyn w ASP.NET
- 14. Automatyczne generowanie akcji w kontrolerze MVC
- 15. Automatyczne generowanie komentarza do metody w XCode
- 16. Raven DB - Automatyczne generowanie własnego klucza
- 17. Automatyczne generowanie numeru seryjnego w widoku siatki
- 18. Najlepszy sposób na generowanie unikalnych identyfikatorów ids po stronie klienta (z Javascript)
- 19. Automatyczne generowanie małych przerywanych tras w środowisku ASP.NET Core
- 20. Przechowywanie kropli Azure - automatyczne generowanie unikatowej nazwy blobów
- 21. Czy mogę dostosować automatyczne generowanie zdarzeń zdarzeń w Visual Studio?
- 22. NHibernate - automatyczne generowanie znacznika czasu podczas tworzenia i aktualizacji?
- 23. Automatyczne generowanie kodu dla mostu od Objective C do C++
- 24. Automatyczne generowanie adnotacji danych z nazw pól obserwacji wielbłądów
- 25. Programowalne formatowanie i automatyczne generowanie indentowanego źródła z Java
- 26. Automatyczne generowanie klasy Wrapper w języku C# przy użyciu kompozycji
- 27. Automatyczne generowanie dokumentacji dla wszystkich zawartości pakietu Python
- 28. Automatyczne generowanie zamówień sortowania za pomocą SQL UPDATE
- 29. Automatyczne generowanie pól formularza dla formularza w django
- 30. Automatyczne generowanie schematu danych z klas obiektów z przypisami JPA