C'è un modo per generare automaticamente ID su SWT-Widget in modo che i test dell'interfaccia utente possano farvi riferimento? So che posso impostare manualmente un id utilizzando seData, ma voglio implementare questa funzionalità per un'applicazione esistente in un modo un po 'generico.Genera automaticamente ID su SWT-Widget
risposta
È possibile assegnare in modo ricorsivo ID per tutte le shell dell'applicazione utilizzando Display.getCurrent().getShells();
e Widget.setData();
.
Impostazione della ID
Shell []shells = Display.getCurrent().getShells();
for(Shell obj : shells) {
setIds(obj);
}
Si ha accesso a tutte le conchiglie (non cedute) attivi nella propria applicazione con il metodo Display.getCurrent().getShells();
. È possibile eseguire il ciclo di tutti i figli di ogni Shell
e assegnare un ID a ciascun Control
con il metodo 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;
}
}
}
Se il Control
è un Composite
può avere i controlli all'interno del composito, che è il motivo per cui ho usato una soluzione ricorsiva nel mio esempio.
Individuazione controlli per ID
Ora, se vi piace di trovare un controllo in uno dei tuoi conchiglie Vorrei suggerire una simile, ricorsivo, approccio:
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;
}
Con il metodo findControlById()
si può facilmente trovare un Control
dal suo ID.
Control foundControl = findControlById(12);
System.out.println(foundControl.toString());
Link
- 1. PHP Genera automaticamente nuove pagine
- 2. Genera ID univoco
- 3. Cassandra: genera un ID univoco?
- 4. Genera ID amichevoli in MongoDb
- 5. Genera automaticamente il file requirements.txt
- 6. DataGridView genera automaticamente le colonne
- 7. Genera automaticamente XSD su C# in Visual Studio IDE
- 8. Ottiene automaticamente un ID storyboard?
- 9. Il servizio Web RESTful genera automaticamente WADL
- 10. Genera Java Externalizable readExternal()/writeExternal() blocca automaticamente
- 11. IntelliJ Idea non genera id in R.java
- 12. Genera automaticamente commenti Javadoc in intelliJ?
- 13. metodo Genera automaticamente la risposta in Eclipse
- 14. Genera automaticamente commenti Javadoc in Eclipse?
- 15. Genera automaticamente numero di serie in grigliata
- 16. Genera automaticamente un'implementazione dell'interfaccia in C#?
- 17. Julia genera automaticamente le funzioni ed esportale
- 18. Artifactory: Genera automaticamente il catalogo degli archetipi?
- 19. Genera automaticamente documenti API REST da Symfony
- 20. Genera ID univoco da stringa alfanumerica
- 21. Genera ID versione della definizione struct?
- 22. MongoDB: ID generati automaticamente sono zeri
- 23. Come generare e incrementare automaticamente Id con Entity Framework
- 24. Excel 2007 - Genera ID univoco basato sul testo?
- 25. AWS che genera automaticamente una nuova istanza dopo averlo terminato.
- 26. genera automaticamente il modello oggetto javascript dall'oggetto C#
- 27. Qual è il migliore: id generato automaticamente o assegnazione id manuale nei documenti couchdb?
- 28. JPA @Id e insertable = false, aggiornabile = false genera l'eccezione
- 29. ID univoco su NSViews
- 30. Genera automaticamente token di autenticità Devise al momento dell'iscrizione