Ugye most ott tartok a tervezésben, hogy vannak különféle listáim, melyek objektumokat tartalmaznak:
- List<Order> orders: ez a megrendeléseket tartalmazza
- List<Company> companies: a vállalatainkat tartalmazza
- List<Customer> customers: a megrendelőket tartalmazza
- List<Vat> vats: az áfa értékeket tartalmazza (mondjuk ez lehetne vatValues, szebben hangzik)
- List<Employee> employees: ez pedig a dolgozóinkat tartalmazza
Tervezek egy ModifyDeleteDialog dialógusablakot, melyet az objektumok szerkesztéséhez és törléséhez használnék fel. Ez megkapná az adott listát, aminek elemeit egymás alatt megjelenítené. Ha a customers-t kapja meg, akkor az ügyfeleket listázza egymás alatt, ha az employees-t, akkor meg a munkatársainkat.
Na most még az nem tiszta, hogy pontosan hogyan is működjön ez az ablak. Kapja meg egy konstruktorban, hogy a Törlés vagy a Szerkesztés gombot tegye ki a dialógusra, és onnantól fogva csak a megadott feladatot lehet elvégezni.
Vagy tegye ki alapból a Törlés és a Szerkesztés gombokat is, és a felhasználó döntse el, hogy törölni akarja a kiválasztott elemet, vagy szerkeszteni. Ez utóbbinál lehet, hogy nincs is értelme Két külön menüpontba szétszedni a törlés és szerkesztés parancsokat, mert úgyis egy ablak a felelős értük.
Kb. ilyen az ablak elvi vázlata:
A szerkesztési vagy törlési folyamatot ez az ablak indítja el minden objektumnál. Ha a felhasználó a törlést választja, akkor feldobok még egy dialógusablakot, mely a ConfirmationDialog nevet kapta. Itt megkérdezem a felhasználót, hogy Biztos? Igen gombbal törlöm az objektumot, és visszatérek a ModifyDeleteDialog-hoz. Nem gombbal törlés nélkül térek vissza.
Ha a felhasználó a szerkesztést választja, akkor pedig az adott objektumhoz kapcsolódó DetailsDialog-ot hívom meg. A CompanyDetailsDialog, CustomerDetailsDialog, OrderDetailsDialog, VatDetailsDialog és EmployeeDetailsDialog a felelős az új cég, ügyfél, rendelés, áfa vagy munkavállaló hozzáadásáért. A szerkesztés esetén ugyanezeket a dialógusablakokat hívom meg, csak nem üresen érkeznek, hanem az átadott objektum adatait írom bele a mezőkbe. A mentés előtt egy hibaellenőrzéssel leellenőrzöm a mezők megfelelőségét, ha minden rendben, frissül az adott rekord az adatbázisban. Ha nem, hibaüzenetet dobok. A mégsem gombbal bezárom az adott DetailsDialog-ot, és nem csinálok semmit az adatbázissal.