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:
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ě.

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.
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.
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".
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");
}
}
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.
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.
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í.
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) {}
});