< Vissza | Tovább >

2.6 feladat: Műveletek és kötések beállítása új alkalmazott felvételéhez

Ebben a részben lehetővé teszi új alkalmazott rekord létrehozását a Cégcímtár alkalmazásban.

Mivel az alkalmazás viselkedése bonyolultabb és dinamikusabb új alkalmazott hozzáadásánál, ez a feladat is bonyolultabb, és megkívánja a forráskód kézi módosítását. Ez a feladat bemutatja továbbá az adatobjektumok egyes fejlettebb képességeit is, és kreatív példákkal mutatja be a kötések és adatobjektumok egyéni célokra használásának módjait.

Az alábbi lista az alkalmazás kívánt viselkedését írja le:

  • Amikor az Új gombra kattint, a következő viselkedés várható el:
    • Megszűnik a kijelölés az alkalmazottak táblában, és a tábla tiltott lesz.
    • A tábla kijelölésének megszűnése miatt a Törlés gomb is tiltott lesz.
    • A Szűrő mező tiltott lesz.
    • A részletmezőkből törlődik minden érték, kivéve az új alkalmazottazonosítót.
    • A Frissítés gomb szövege Hozzáadás értékre változik.
  • Amikor a Hozzáadás gombra kattint, a következő viselkedés várható el:
    • A részletmezőkben megadott értékek új alkalmazott rekordként hozzáadódnak a címtárhoz.
    • A tábla engedélyezett lesz, és frissülnek az értékek.
    • A Szűrő mező engedélyezett lesz.
    • A Hozzáadás gomb szövege visszaváltozik Frissítés értékre.

Új adatforrás adatobjektum hozzáadása a createNewFullEmployeeRecord() metódus meghívására

A minta-webszolgáltatás nyújtotta createNewFullEmployeeRecord szolgáltatás új, üres alkalmazott rekordot biztosít, kitöltve a következő rendelkezésre álló alkalmazottazonosítóval. Ezt az üres rekordot lehet azután feltölteni az új alkalmazott információival, illetve visszaküldeni a webszolgáltatásnak.

  1. A vizuális Java szerkesztő palettáján bontsa ki az Adatobjektumok fiókot, és válassza az Adatforrás adatobjektum lehetőséget.
  2. Vigye a tervezési terület üres része fölé az egérmutatót, és kattintson a bal egérgombbal az Adatforrás adatobjektum lerakásához. Az új Adatforrás adatobjektum hozzáadódik és megjelenik a szabadon alakítható területen:

    Adatforrás adatobjektum a szabadon alakítható területen. Nincs konfigurálva.

  3. Kattintson a jobb egérgombbal az Adatforrás adatobjektum összetevőre, majd válassza az előugró menü Mező átnevezése menüpontját. Nevezze át az adatobjektumot newEmployeeRecord névre.
  4. Kattintson a jobb egérgombbal a newEmployeeRecord adatobjektumra, majd válassza az előugró menü Kötési tulajdonságok menüpontját. Megjelenik az Adatok kötése párbeszédablak.
  5. Az Adatforrás mezőben válassza a webServiceDataSource projektet.
  6. A Szolgáltatás mezőben válassza a createNewFullEmployeeRecord() metódust.
  7. Kattintson az OK gombra.
A szabadon alakítható területen látható, hogy a newEmployeeRecord adatforrás adatobjektum a webszolgáltatáshoz kötött.

newEmployeeRecord adatobjektum, a webServiceDataSource objektumhoz csatlakoztatva

Alapszintű adatobjektum hozzáadása az adatobjektumok átkapcsolásának kihasználására

Mivel a részletmezőknek és a Frissítés gombnak módot kell váltaniuk (frissítés elvégzéséhez és új alkalmazott létrehozásához), különböző időpontokban különböző adatobjektumhoz kell kötni őket. A lépés elvégzéséhez hozzá kell adni egy switchingDataObject nevű Alapszintű adatobjektumot. Ezt az Alapszintű adatobjektumot fogja a szövegmezők kötésének váltogatására használni a selectedEmployeeRecord és az newEmployeeRecord objektum között.

Az új Alapszintű adatobjektum egyszerűen egy másik adatobjektumra mutat (selectedEmployeeRecord), amit az egyik előző feladatban adott meg. Ez az új adatobjektum hasznos lesz, amikor olyan metódust hoz létre, ami ezt az alapszintű adatobjektumot a korábban létrehozott newEmployeeRecord használatára utasítja. Más szavakkal, ez az alapszintű adatobjektum köztes adatobjektum funkcióként fog szolgálni, ami a selectedEmployeeRecord adatobjektum és a newEmployeeRecord adatobjektum közt kapcsol át, lehetővé téve az alkalmazás vizuális összetevőinek, hogy két különböző adatobjektummal dolgozzanak.
  1. A vizuális szerkesztő palettán válassza ki az Alapszintű adatobjektum elemet, és rakja a szabadon alakítható területre. Hozzáadódik egy basicDataObject.

    Alapszintű adatobjektum a szabadon alakítható területen (nem konfigurált).

  2. Nevezze át az adatobjektumot switchingDataObject
  3. A switchingDataObject tulajdonságok nézetében állítsa a sourceObject tulajdonságot selectedEmployeeRecord értékre. A selectedEmployeeRecord értéket a tulajdonság Érték oszlopának legördülő menüjéből választhatja ki.

    A switchingDataObject így a selectedEmployeeRecord objektumra hivatkozik, és ugyanazokat az értékeket mutatja:

    switchingDataObject a szabadon alakítható területen, a selectedEmployeeRecord adatobjektumhoz csatlakoztatva

Minden alkalmazott mező átkötése a switchingDataObject objektumhoz

Bár minden alkalmazott részletmező hozzá van már kötve a selectedEmployeeRecord objektumhoz, most a switchingDataObject objektumhoz kell kötni őket. A mezők kötése után dinamikusan válthat a mezők adatobjektumai közt attól függően, hogy létező alkalmazottrekordot módosít vagy új alkalmazott rekordot vesz fel.

Az Alkalmazottak részletei rész minden mezőjénél végezze el a következőket:
  1. Jelölje ki a mezőt és kattintson a Kötés lapra.
  2. A Mezőadatok kötése párbeszédablakban válassza ki a switchingDataObject objektumot. Korábban a selectedEmployeeRecord objektumhoz kötötte a mezőket.

    Mezőadatok kötései párbeszédablak, benne a switchingDataObject lastName tulajdonságához kötött lastNameField mezővel

  3. Ellenőrizze, hogy a mező még mindig a megfelelő adatobjektum tulajdonsághoz van kötve, majd kattintson az OK gombra. Ha kijelöli a mezőt a tervezési nézetben, akkor látható, hogy a kötési vonalak már a switchingDataObject objektumra mutatnak.

    Részletmezők a switchingDataObject objektumhoz kötve

Jelző és metódus meghatározása módok frissítéséhez és váltásához

Az alábbi updateMode() metódus ellenőrzi, hogy a módjelző újra van-e állítva, és ennek megfelelően módosítja az alkalmazás viselkedését. Az isNewMode logikai jelző alapértelmezésben hamisra van állítva, és az updateMode() metódus engedélyezi az alkalmazott táblát, illetve a szűrő mezőt, valamint "Frissítés" értékre változtatja a Frissítés gomb feliratát. Ha az isNewMode igazra van állítva, akkor az alkalmazottak tábla tiltott, eltűnik róla minden kijelölés, a szűrő mező tiltott lesz, valamint a Frissítés gomb felirata "Hozzáadás" szövegre változik.

Adja hozzá a következő kódot a DirectoryApp.java osztályhoz, az utolsó bezáró kapcsos zárójel elé:
private boolean isNewMode = false;
private void updateMode() {
   if (isNewMode) {
      getEmployeesTable().clearSelection();
      getEmployeesTable().setEnabled(false);
      getFilterField().setEditable(false);
      getUpdateCreateButton().setText("Add");
   } else {
      getEmployeesTable().setEnabled(true);
      getFilterField().setEditable(true);
      getUpdateCreateButton().setText("Update");
   }
}

ActionPerformed esemény hozzáadása az Új gombhoz

Ebben a lépésben eseménykódot vesz fel az Új gomb kattintásához. Az esemény a newEmployeeRecord használatára utasítja a switchingDataObject objektumot, átállítja a módjelzőt "új" értékre, és futtatja az előző lépésben felvett updateMode() metódust.

  1. Kattintson a jobb egérgombbal a tervezési nézetben az Új gombra, majd válassza az előugró menü Események > actionPerformed menüpontját. Az alábbi kód jön létre a getNewButton() metódusban:
    newButton.addActionListener(new java.awt.event.ActionListener() { 
       public void actionPerformed(java.awt.event.ActionEvent e) {    
          System.out.println("actionPerformed()"); // TODO automatikusan előállított eseménycsonk actionPerformed()
       }
    });
  2. Cserélje ki ezt az előállított csonkot az alábbi kódra:
    newButton.addActionListener(new java.awt.event.ActionListener() { 
       public void actionPerformed(java.awt.event.ActionEvent e) {    
          getSwitchingDataObject().setSourceObject(getNewEmployeeRecord());
          getNewEmployeeRecord().refresh();
          isNewMode = true; //sets application to new mode
          updateMode(); //changes UI according to new mode
          getLastNameField().grabFocus();
       }
    });

A Frissítés gomb újrakötése

Az előző részben beprogramozta a Frissítés gombot a webszolgáltatás modifyEmployee metódusának használatára. A művelet SwingDataServiceAction műveletként lett megvalósítva. A SwingDataServiceAction egyik tulajdonsága a forrásobjektum, ami a szolgáltatás paramétereként viselkedik. A módosítás művelet forrásobjektuma jelenleg a selectedEmployeeRecord. Ahhoz, hogy a gombot a frissítés és a hozzáadás vezérlésére is programozhassa, újra kell konfigurálnia a gomb műveleteit, hogy a switchingDataObject objektumot használja a modifyEmployee szolgáltatás paramétereként.

  1. A tervezés nézetben kattintson a Frissítés gombra. Figyelje meg a rózsaszín pontozott nyilat, ami jelzi, hogy a szolgáltatás hívásának paramétere a selectedEmployeeRecord.
  2. Kattintson a Kötés lapra a Frissítés gombon.
  3. A Paraméter mezőben válassza ki a switchingDataObject objektumot.

    Összetevők műveleti kötései a Frissítés gombhoz, ami most a switchingDataObject objektumot használja

  4. Kattintson az OK gombra.

    Figyelje meg, hogy a gomb akciója úgy van konfigurálva, hogy a switchingDataObject objektumot használja paramétereként a modifyEmployee metódushoz:

    Frissítés gomb a webszolgáltatáshoz kötve, paraméterként a switchingDataObject objektummal

Esemény hozzáadása a Frissítés gomb kötéséhez a mód visszaállításához

Miután a Frissítés gombra kattintott, és befejeződött a webszolgáltatás művelete, az alkalmazásnak vissza kell térnie az alapértelmezett módba és viselkedéshez. Ehhez egy eseményfigyelőt fog hozzáadni a gomb műveleti kötéseihez, ami a frissítés vagy hozzáadás művelet elvégzése után frissíti a módot és a táblát.

Adja hozzá az alábbi kódot a Frissítés gomb getModifyEmployeeAction() metódusához:
modifyEmployeeAction.addActionBinderListener(new jve.generated.IActionBinder.ActionBinderListener() { 
    public void afterActionPerformed(jve.generated.IActionBinder.ActionBinderEvent e) {    
      if (isNewMode) {
        //Go back to using the selectedEmployeeRecord
        getSwitchingDataObject().setSourceObject(getSelectedEmployeeRecord());
        //Revert out of new mode
        isNewMode = false; 
        updateMode();
      }
      // Refresh the table's data object
      getLightEmployeeRecordRows().refresh();
    }
    public void beforeActionPerformed(jve.generated.IActionBinder.ActionBinderEvent e) {} 
});

Előadás ellenőrzési pont

A Cégcímtár futtatásakor most már kattinthat az Új gombra, és új alkalmazott rekordot vehet fel.

< Vissza | Tovább >