< Předchozí | Další >

Lekce 2.6: Nastavení akcí a vazeb pro přidání nového zaměstnance

V této lekci povolíte aplikaci My Company Directory přidat nový záznam o zaměstnanci.

Protože je chování aplikace při přidávání nového zaměstnance komplikované a dynamické, je i toto cvičení nezbytně velmi komplexní a vyžaduje, abyste manuálně provedli některé změny ve zdrojovém kódu. Toto cvičení také demonstruje některé rozšířené schopnosti datových objektů a dává vám kreativní příklad, jak využít vázací programy a datové objekty tak, aby odpovídaly vašim potřebám.

Následující seznam popisuje požadované chování aplikace:

  • Když klepnete na tlačítko Nový, dojde k následujícímu chování:
    • Vymaže se výběr v tabulce zaměstnanců a tabulka bude znepřístupněná.
    • Vymazání výběru v tabulce způsobí, že se znepřístupní tlačítko Odstranit.
    • Znepřístupní se pole Filtrovat.
    • Z polí s podrobnostmi se vymažou veškeré hodnoty s výjimkou ID nového zaměstnance.
    • Text na tlačítku Aktualizovat se přepne na Přidat.
  • Když klepnete na tlačítko Přidat, dojde k následujícímu chování:
    • Hodnoty zadané do polí s podrobnostmi se přidají do adresáře jako záznam nového zaměstnance.
    • Tabulka se zpřístupní a hodnoty se obnoví.
    • Zpřístupní se pole Filtr.
    • Text na tlačítku Přidat se přepne zpátky na Aktualizovat.

Přidání nového datového objektu zdroje dat, který volá službu createNewFullEmployeeRecord()

Tato ukázka webové služby poskytuje službu createNewFullEmployeeRecord, která poskytuje nový, prázdný záznam o zaměstnanci, který je obsazen dalším dostupným číslem ID zaměstnance. Prázdný záznam se pak obsadí informacemi o novém zaměstnanci a zadá zpátky webové službě.

  1. Na paletě vizuálního editoru Javy rozbalte zásuvku Datové objekty a vyberte Datový objekt zdroje dat.
  2. Přesuňte ukazatel myši nad prázdnou oblast pohledu Návrh nebo neformátovanou oblast a klepněte levým tlačítkem na Datový objekt zdroje dat. Nový datový objekt zdroje dat se přidá a zobrazí v neformátované oblasti:

    Datový objekt zdroje dat na neformátované oblasti. Není konfigurováno.

  3. Klepněte pravým tlačítkem na Datový objekt zdroje dat a vyberte Přejmenovat pole. Přejmenujte datový objekt na newEmployeeRecord.
  4. Klepněte pravým tlačítkem myši na datový objekt newEmployeeRecord a vyberte Vlastnosti vazeb. Otevře se dialog Datové vazby.
  5. V poli Zdroj dat vyberte webServiceDataSource
  6. V poli Služby vyberte createNewFullEmployeeRecord()
  7. Klepněte na OK.
V neformátované oblasti je vidět, že datový objekt zdroje dat newEmployeeRecord je svázán s webovou službou.

Datový objekt newEmployeeRecord připojený k webServiceDataSource

Přidat základní datový objekt pro usnadnění přepínání mezi datovými objekty

Protože pole s podrobnostmi a tlačítko aktualizovat se musí přepínat mezi jednotlivými režimy (provedení aktualizace a vytvoření nového zaměstnance), musí být svázány se dvěma datovými objekty v různých časech. Abyste tento krok usnadnili, přidejte základní datový objekt jménem switchingDataObject. Tento základní datový objekt použijete pro přepínání vazby pro textová pole mezi selectedEmployeeRecord a newEmployeeRecord.

Základní datový objekt prostě odkazuje na jiný datový objekt (selectedEmployeeRecord), který jste definovali v předchozím cvičení. Tento nový datový objekt bude užitečný při vytváření metody, která vyzývá základní datový objekt k použití newEmployeeRecord, který jste definovali dříve. Jinými slovy, tento základní datový objekt bude fungovat jako zprostředkující datový objekt, který přepíná mezi datovým objektem selectedEmployeeRecord a datovým objektem newEmployeeRecord a umožňuje tak vizuálním komponentám ve vaší aplikaci pracovat se dvěma různými datovými objekty.
  1. Na paletě vizuálního editoru vyberte Základní datový objekt a umístěte ho do neformátované oblasti. Přidá se basicDataObject.

    Základní datový objekt na neformátované oblasti, není konfigurováno

  2. Přejmenujte datový objekt na switchingDataObject
  3. V zobrazení vlastností pro switchingDataObject nastavte vlastnost sourceObject na selectedEmployeeRecord. Můžete vybrat selectedEmployeeRecord z rozbalovací nabídky ve sloupci Hodnota pro danou vlastnost.

    Nyní switchingDataObject odkazuje na selectedEmployeeRecord a obsahuje stejné hodnoty:

    switchingDataObject na neformátované oblasti, spojený s datový objektem selectedEmployeeRecord

Znovu svázat každé pole zaměstnance s switchingDataObject

Přestože každé z polí s podrobnostmi o zaměstnancích je již svázané se selectedEmployeeRecord, svážete je nyní s switchingDataObject. Poté, co svážete pole, můžete dynamicky přepínat mezi datovými objekty pro pole v závislosti na tom, zda upravujete existující záznam zaměstnance nebo chcete přidat nový záznam zaměstnance.

Pro každé z polí v sekci Podrobnosti o zaměstnancích proveďte následující kroky:
  1. Vyberte pole a klepněte na kartu Vazba.
  2. V dialogovém okně Datové vazby vyberte switchingDataObject. Již dříve jste svázali tato pole s selectedEmployeeRecord.

    Dialogové okno Datové vazby polí zobrazující vazbu pole lastNameField na vlastnost lastName na objektu switchingDataObject

  3. Ujistěte se, že je pole stále svázané se správnou vlastností datového objektu a klepněte na OK. Pokud vyberete pole v pohledu Návrh, uvidíte, že čáry vázacího programu nyní ukazují na switchingDataObject.

    Pole s podrobnostmi svázané s switchingDataObject

Definování příznaku a metody pro aktualizaci a režimy přepínání

Následující metoda updateMode() kontroluje, zda je příznak režimu nastaven na nový, a potom příslušně změní chování aplikace. Podle předvolby je booleovský příznak isNewMode nastaven na false, a metoda updateMode() zpřístupňuje tabulku zaměstnanců a pole filtrování a nastavuje text na tlačítku Aktualizovat na "Aktualizovat". Když je isNewMode nastaven na true, je tabulka zaměstnanců znepřístupněná a libovolná volba je vymazaná, pole filtrování je znepřístupněné a text na tlačítku Aktualizovat se nastaví na "Přidat".

Přidejte následující kód do třídy DirectoryApp.java těsně před poslední pravou složenou závorku:
private boolean isNewMode = false;
private void updateMode() {
   if (isNewMode) {
      getEmployeesTable().clearSelection();
      getEmployeesTable().setEnabled(false);
      getFilterField().setEditable(false);
      getUpdateCreateButton().setText("Přidat");
   } else {
      getEmployeesTable().setEnabled(true);
      getFilterField().setEditable(true);
      getUpdateCreateButton().setText("Aktualizovat");
   }
}

Přidání události actionPerformed k tlačítku Nový

V tomto kroku přidáte kód události pro klepnutí na tlačítko Nový. Událost přikáže objektu switchingDataObject použít datový objekt newEmployeeRecord, nastaví příznak události na "new" a spustí metodu updateMode(), kterou jste přidali v předchozím kroku.

  1. V pohledu Návrh klepněte pravým tlačítkem myši na tlačítko Nový a vyberte Události > actionPerformed. Následující kód je generován v metodě getNewButton():
    newButton.addActionListener(new java.awt.event.ActionListener() { 
       public void actionPerformed(java.awt.event.ActionEvent e) {    
          System.out.println("actionPerformed()"); // TODO Automaticky generovaný stub události actionPerformed()
       }
    });
  2. Nahraďte tento generovaný stub následujícím kódem:
    newButton.addActionListener(new java.awt.event.ActionListener() { 
       public void actionPerformed(java.awt.event.ActionEvent e) {    
          getSwitchingDataObject().setSourceObject(getNewEmployeeRecord());
          getNewEmployeeRecord().refresh();
          isNewMode = true; //nastaví aplikaci do nového režimu
          updateMode(); //změní UI podle nového režimu
          getLastNameField().grabFocus();
       }
    });

Znovu svázat tlačítko Aktualizovat

V předchozí lekci jste naprogramovali tlačítko Aktualizovat, aby používalo metodu modifyEmployee na webové službě. Tato akce se implementuje jako SwingDataServiceAction. Jedna z vlastností SwingDataServiceAction je zdrojový objekt, který funguje jako argument pro službu. Zdrojový objekt pro akci změny je momentálně nastaven na selectedEmployeeRecord. Abyste tlačítko naprogramovali tak, aby řídilo jak aktualizaci, tak přidání, překonfigurujte akci tlačítka tak, že bude používat switchingDataObject jako argument pro službu modifyEmployee.

  1. V pohledu Návrh vyberte tlačítko Aktualizovat. Všimněte si růžové tečkované šipky, která ukazuje, že selectedEmployeeRecord je argumentem pro volání služby.
  2. Klepněte na kartu Vazba na tlačítku Aktualizovat.
  3. V poli Argument vyberte switchingDataObject.

    Vazby akcí komponenty pro tlačítko Aktualizovat nyní používají switchingDataObject

  4. Klepněte na OK.

    Všimněte si, že akce tlačítka je nyní konfigurovaná tak, aby používala switchingDataObject jako jeho argument pro metodu modifyEmployee:

    Vazba tlačítka Aktualizovat na webovou službu s argumentem switchingDataObject

Přidáním události do vázacího programu tlačítka obnovíte režim

Po klepnutí na tlačítko Aktualizovat a dokončení akce na webové službě budete chtít, aby se aplikace vrátila do předvoleného režimu a chování. Můžete přidat posluchač událostí na vázací program akcí tlačítka, který bude aktualizovat režim a obnovovat tabulku po provedení aktualizace nebo přidání.

Přidejte následující kód do metody getModifyEmployeeAction() pro tlačítko Aktualizovat:
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) {} 
});

Kontrolní bod lekce

Když nyní spustíte aplikaci My Company Directory, můžete klepnout na tlačítko Nový a přidat nový záznam uživatele.

< Předchozí | Další >