MODULE SqlObxUI;
(**
project = "BlackBox"
organization = "www.oberon.ch"
contributors = "Oberon microsystems"
version = "System/Rsrc/About"
copyright = "System/Rsrc/About"
license = "Docu/BB-License"
changes = ""
issues = ""
**)
IMPORT Dialog, SqlDB, SqlObxDB;
(** generic **)
PROCEDURE ROGuard* (VAR par: Dialog.Par);
BEGIN
par.readOnly := TRUE
END ROGuard;
(** guards **)
PROCEDURE Invalid (): BOOLEAN;
BEGIN (* check whether record is legal (must be a very efficient check) *)
RETURN SqlObxDB.company.name = ""
END Invalid;
PROCEDURE CloseGuard* (VAR par: Dialog.Par);
BEGIN
IF SqlObxDB.dirty THEN par.disabled := TRUE END
END CloseGuard;
PROCEDURE InsertGuard* (VAR par: Dialog.Par);
BEGIN
IF SqlObxDB.Closed() THEN par.disabled := TRUE END;
IF ~SqlObxDB.dirty OR Invalid() THEN par.disabled := TRUE END
END InsertGuard;
PROCEDURE UpdateGuard* (VAR par: Dialog.Par);
BEGIN
IF SqlObxDB.Closed() THEN par.disabled := TRUE END;
IF ~SqlObxDB.dirty OR (SqlObxDB.company.id <= 0) OR Invalid() THEN par.disabled := TRUE END
END UpdateGuard;
PROCEDURE DeleteGuard* (VAR par: Dialog.Par);
BEGIN
IF SqlObxDB.Closed() THEN par.disabled := TRUE END;
IF SqlObxDB.dirty OR (SqlObxDB.company.id <= 0) THEN par.disabled := TRUE END
END DeleteGuard;
PROCEDURE RevertGuard* (VAR par: Dialog.Par);
BEGIN
IF SqlObxDB.Closed() THEN par.disabled := TRUE END;
IF ~SqlObxDB.dirty THEN par.disabled := TRUE END;
IF SqlObxDB.company.id > 0 THEN par.label := "Revert" ELSE par.label := "Clear" END
END RevertGuard;
PROCEDURE FindGuard* (VAR par: Dialog.Par);
BEGIN
IF SqlObxDB.Closed() THEN par.disabled := TRUE END;
IF SqlObxDB.dirty OR (SqlObxDB.searchId <= 0) THEN par.disabled := TRUE END
END FindGuard;
(** notifiers **)
PROCEDURE TypingNotifier* (op, from, to: INTEGER);
BEGIN
IF ~SqlObxDB.dirty & (op = Dialog.changed) & ~SqlObxDB.Closed() THEN
SqlObxDB.dirty := TRUE; Dialog.Update(SqlObxDB.company)
END
END TypingNotifier;
END SqlObxUI.