OpenKeyWord  Version: 426, Datum:
OKW.FrameObjectDictionary Klassenreferenz

Verwaltet zentral die Frame-Klassen: Instanziert Frame-Klassen zu Frame-Objekten und liefert die Referenzen auf diese zurück. Mehr ...

Zusammengehörigkeiten von OKW.FrameObjectDictionary:
Collaboration graph

Öffentliche Methoden

 FrameObjectDictionary ()
 Konstuktor der Klasse. Es wird die Methode FrameObjectDictionary.Init() aufgerufen. Mehr ...
 
object GetParentObjectByName (string fpsParentObject)
 Die Methode liefert das Frame-Object des gegebenen Fensterobjektes zurück. Mehr ...
 
object GetChildObjectByName (string fps_ParentObject, string fps_ChildObject)
 Die Methode liefert das Objekt des gegebenen Kindobjekttests zurück. Mehr ...
 
void Init ()
 Methode initialisiert diese Klasse. Mehr ...
 
List< Type > GetListOfOKWGuiClasses ()
 Methode erstellt eine Liste alle OKWGUI-Rahmenklassen (frame class), die in der aktuell ausgeführten Assambly definiert sind. Mehr ...
 
void Scanfields (Type fpType, object fpsWindowAsObject, string fpsWindowName)
 

Öffentliche Attribute

Dictionary< string, object > __FrameObjectDictionary = new Dictionary<string, object>()
 Zentrale Liste, genauer Dictionary/Hash der aktuell benutzten Frame-Objekte. Mehr ...
 

Private Methoden

void AddFrameInstancesToDictionary (List< Type > fpListOfOKWGuiTypes)
 
string GetFunktionlanameFromObjekt (object fpObject)
 List dasAttribute Funktionalname das übergeben Objektes aus. Mehr ...
 
object CreateInstanceByType (Type fpParentType)
 Die Methode erzeugt eine Instanz der Rahmenklasse (frame class) mit dem in 'fps_ParentClassName' gegebenen Namen. Mehr ...
 
object __CreateInstanceByObjectName (string fps_ParentObject, string fps_ChildObject)
 Erzeugt eine Instanz des OKW-Frame-Objekts. Mehr ...
 
object GetChildObjectByName (object fpo_ParentObject, string fps_ChildName)
 Holt sich einen öffentlichen Feld Wert über den Namen. Mehr ...
 

Private Attribute

LogMessenger LM = null
 

Ausführliche Beschreibung

Verwaltet zentral die Frame-Klassen: Instanziert Frame-Klassen zu Frame-Objekten und liefert die Referenzen auf diese zurück.

Noch zu erledigen:

TODO: ZH Dokumentaion erweitern.

Autor
Zoltan Hrabovszki
Datum
2014.10.10

Definiert in Zeile 65 der Datei FrameObjectDictionary.cs.

Beschreibung der Konstruktoren und Destruktoren

OKW.FrameObjectDictionary.FrameObjectDictionary ( )

Konstuktor der Klasse. Es wird die Methode FrameObjectDictionary.Init() aufgerufen.

Autor
Zoltan Hrabovszki
Datum
2014.10.10

Definiert in Zeile 106 der Datei FrameObjectDictionary.cs.

107  {
108  Logger.Instance.LogFunctionStartDebug("FrameObjectDictionary.FrameObjectDictionary");
109 
110  this.Init();
111 
112  Logger.Instance.LogFunctionEndDebug();
113  }
void Init()
Methode initialisiert diese Klasse.

Hier ist ein Graph, der zeigt, was diese Funktion aufruft:

Dokumentation der Elementfunktionen

object OKW.FrameObjectDictionary.__CreateInstanceByObjectName ( string  fps_ParentObject,
string  fps_ChildObject 
)
private

Erzeugt eine Instanz des OKW-Frame-Objekts.

Rückgabe
Die Instanz des OKW-Frame_Objekts.
Parameter
fps_ParentNameName des Eltern Fensters.
fps_ChildNameName des Kind-Objektes im Fenster-Objekt fps_ParentName.
Autor
Zoltan Hrabovszki
Datum
2014-10-10 FIXME: Prüfen, ob diese Methoden namentlich ok sind. Wird das Eltern Obejkt angelegt?

Definiert in Zeile 519 der Datei FrameObjectDictionary.cs.

520  {
521  Logger.Instance.LogFunctionStartDebug("FrameObjectDictionary.CreateInstanceByObjectName", "fps_ParentObject", fps_ParentObject, "fps_ChildObject", fps_ChildObject);
522 
523  object myParentObject = null;
524  object myChildObject = null;
525  bool bOK = false;
526 
527  try {
528  // PerentObject holen und ggf. als instanz anlegen
529  myParentObject = this.GetParentObjectByName(fps_ParentObject);
530 
531  // Kindobjekt aufrufen...
532  // aber nur wenn Paretobjekt gefunden worden ist.
533  if (myParentObject != null) {
534  // FIXME: was ist wenn das myChildObject = null ist??Checken
535  myChildObject = this.GetChildObjectByName(myParentObject, fps_ChildObject);
536  } else {
537  // LANGUAGE: Log Schreiben..
538  throw new OKWFrameObjectParentNotFoundException("Frame Objekt des Fensters");
539  }
540 
541  bOK = true;
542  } finally {
543  if (bOK) {
544  // Wir sind ohne Exception durchgekommen und wir nehmen an,
545  // dass lvo_Obj != null
546  // -> wir geben den Namen des Objektes zurück...
547  Logger.Instance.LogFunctionEndDebug(myChildObject.GetType().FullName);
548  } else {
549  // Irgend etwas ist faul wir rufen nur LogFunctionEndDebug auf...
550  Logger.Instance.LogFunctionEndDebug();
551  }
552  }
553 
554  return myChildObject;
555  }
object GetParentObjectByName(string fpsParentObject)
Die Methode liefert das Frame-Object des gegebenen Fensterobjektes zurück.
object GetChildObjectByName(string fps_ParentObject, string fps_ChildObject)
Die Methode liefert das Objekt des gegebenen Kindobjekttests zurück.

Hier ist ein Graph, der zeigt, was diese Funktion aufruft:

void OKW.FrameObjectDictionary.AddFrameInstancesToDictionary ( List< Type >  fpListOfOKWGuiTypes)
private
Rückgabe
Liefert die Instanz der Klasse.
Parameter
fps_ParentClassNameName der Klasse
fps_ParentClassNameName of the class
Autor
Zoltan Hrabovszki
Datum
2015.01.28

Definiert in Zeile 341 der Datei FrameObjectDictionary.cs.

342  {
343  object lvTypeInstanceAsObject = null;
344 
345  Logger.Instance.LogFunctionStartDebug("FrameObjectDictionary.AddFrameInstancesToDictionary");
346 
347  try {
348  // Für jede Klasse...
349  foreach (Type lvOKWGuiClass in fpListOfOKWGuiTypes) {
350  lvTypeInstanceAsObject = CreateInstanceByType(lvOKWGuiClass);
351 
352  // Funktionalenname der Klasse aus dem Attribute OKWGUI auslesen.
353  string lvFunktionalname = this.GetFunktionlanameFromObjekt(lvTypeInstanceAsObject);
354 
355  // Wenn Attribute vorhanden (!=null) und nicht Leer dann ins Dictionary einfügen.
356  if (!string.IsNullOrEmpty(lvFunktionalname)) {
357  string lvsKey = lvFunktionalname;
358  System.Console.WriteLine("\n Window Frame: >>" + lvsKey + "<<");
359  System.Console.WriteLine(" Technisches Objekt: >>" + lvTypeInstanceAsObject.GetType().FullName + "<<");
360 
361  this.__FrameObjectDictionary.Add(lvFunktionalname, lvTypeInstanceAsObject);
362 
363  Logger.Instance.LogPrintDebug(this.LM.GetMessage("CreateInstanceByObjectName", "InstanceWasCreated", lvTypeInstanceAsObject.GetType().FullName));
364 
365  //nun Rekursive die Kinder (=Felder) des Frames durgehen und ins einlesen.
366  Scanfields(lvOKWGuiClass, lvTypeInstanceAsObject, lvFunktionalname);
367  }
368  }
369  } finally {
370  Logger.Instance.LogFunctionEndDebug();
371  }
372 
373  return;
374  }
string GetMessage(string MethodName, string TextKey)
Holt die Log-Meldung für MethodeNmae/Textkey ohne weitere Parameter.
object CreateInstanceByType(Type fpParentType)
Die Methode erzeugt eine Instanz der Rahmenklasse (frame class) mit dem in 'fps_ParentClassName' gege...
Dictionary< string, object > __FrameObjectDictionary
Zentrale Liste, genauer Dictionary/Hash der aktuell benutzten Frame-Objekte.
string GetFunktionlanameFromObjekt(object fpObject)
List dasAttribute Funktionalname das übergeben Objektes aus.

Hier ist ein Graph, der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

object OKW.FrameObjectDictionary.CreateInstanceByType ( Type  fpParentType)
private

Die Methode erzeugt eine Instanz der Rahmenklasse (frame class) mit dem in 'fps_ParentClassName' gegebenen Namen.

Zu beachten
WICHTIG: Die Klasse muss zwingend so heißen, wie angegeben. Hier wird kein 'Frame Präfix' ergänzt.
Rückgabe
Liefert die Instanz der Klasse.
Parameter
fps_ParentClassNameName der Klasse
Autor
Zoltan Hrabovszki
Datum
2014.10.10

Definiert in Zeile 465 der Datei FrameObjectDictionary.cs.

466  {
467  object lvo_Obj = null;
468  bool bOK = false;
469 
470  Logger.Instance.LogFunctionStartDebug("FrameObjectDictionary.CreateInstanceByObjectName", "fpParentClass", fpParentType.FullName);
471 
472  try {
473  lvo_Obj = Activator.CreateInstance(fpParentType, null);
474 
475  Logger.Instance.LogPrintDebug(this.LM.GetMessage("CreateInstanceByObjectName", "InstanceWasCreated", lvo_Obj.GetType().FullName));
476  bOK = true;
477  } catch (TargetInvocationException e) {
478  // EXCEPTION: Pürfen was hier genau passiert. Exception weitergeben
479  throw new OKWFrameObjectParentNotFoundException(this.LM.GetMessage("CreateInstanceByObjectName", "InstanceWasCreated", fpParentType.FullName), e);
480  } finally {
481  if (bOK) {
482  // Wir sind ohne Exception durchgekommen und wir nehmen an,
483  // dass lvo_Obj != null
484  // -> wir geben den Namen des Objektes zurück...
485  Logger.Instance.LogFunctionEndDebug(lvo_Obj.GetType().FullName);
486  } else {
487  // Irgend etwas ist faul wir rufen nur LogFunctionEndDebug auf...
488  Logger.Instance.LogFunctionEndDebug();
489  }
490  }
491 
492  return lvo_Obj;
493  }
string GetMessage(string MethodName, string TextKey)
Holt die Log-Meldung für MethodeNmae/Textkey ohne weitere Parameter.

Hier ist ein Graph, der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

object OKW.FrameObjectDictionary.GetChildObjectByName ( string  fps_ParentObject,
string  fps_ChildObject 
)

Die Methode liefert das Objekt des gegebenen Kindobjekttests zurück.

Siehe auch
Für das Fensterobjekt existiert eine zweite Ausprägung dieser Methode. FrameObjectDictionary.GetObjectByName(string,string)
Parameter
fps_ParentObjectName des Fenster-Objektes = Elternobjekt.
fps_ChildObjectName des Kindobjektes-Objektes.
Rückgabe
Frame-Objekt-Referenz auf das Kindobjekt.
Autor
Zoltan Hrabovszki
Datum
2014.10.10
Noch zu erledigen:
TODO: Exception/Try/Except/Finaly einbauen

Definiert in Zeile 209 der Datei FrameObjectDictionary.cs.

210  {
211  object lvo_Return = null;
212  string lvs_ObjectName = fps_ParentObject + "." + fps_ChildObject;
213 
214  Logger.Instance.LogFunctionStartDebug("FrameObjectDictionary.GetChildObjectByName", "fps_ParentObject", fps_ParentObject, "fps_ChildObject", fps_ChildObject);
215 
216  // Gibt es den Schlüssel im Dictinary?
217  Logger.Instance.LogPrintDebug(this.LM.GetMessage("GetChildObjectByName", "M1", fps_ChildObject, fps_ParentObject));
218 
219  if (this.__FrameObjectDictionary.ContainsKey(lvs_ObjectName)) {
220  // Ja, das Objekt existiert.
221  Logger.Instance.LogPrintDebug(this.LM.GetMessage("GetChildObjectByName", "M2"));
222  // Hole refarenc auf des Objekt im Dictionary
223  lvo_Return = this.__FrameObjectDictionary[lvs_ObjectName];
224  } else {
225  // Nein -> Frame zum Funtionalen Name wurde nicht gefunden -> Exception OKWFrameObjectChildNotFoundException auslösen...
226  // \todo TODO: Fehlermeldung einbauen...
227  Logger.Instance.LogPrintDebug(this.LM.GetMessage("GetChildObjectByName", "M3"));
228 
229  string lvsMessage = this.LM.GetMessage("GetChildObjectByName", "OKWFrameObjectChildNotFoundException", lvs_ObjectName );
230  throw new OKWFrameObjectChildNotFoundException(lvsMessage);
231  }
232 
233  Logger.Instance.LogFunctionEndDebug();
234  return lvo_Return;
235  }
string GetMessage(string MethodName, string TextKey)
Holt die Log-Meldung für MethodeNmae/Textkey ohne weitere Parameter.
Dictionary< string, object > __FrameObjectDictionary
Zentrale Liste, genauer Dictionary/Hash der aktuell benutzten Frame-Objekte.

Hier ist ein Graph, der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

object OKW.FrameObjectDictionary.GetChildObjectByName ( object  fpo_ParentObject,
string  fps_ChildName 
)
private

Holt sich einen öffentlichen Feld Wert über den Namen.

Parameter
srcObjobject to inspect
fieldNameName of the field to retrieve the value from
Rückgabe
Eigenschaftswert
Autor
Zoltan Hrabovszki
Datum
2014-10-10

Definiert in Zeile 576 der Datei FrameObjectDictionary.cs.

577  {
578  object lvo_Return = null;
579 
580  Logger.Instance.LogFunctionStartDebug("FrameObjectDictionary.GetChildObjectByName", "fpo_ParentObject", fpo_ParentObject.ToString(), "fps_ChildName", fps_ChildName);
581 
582  try {
583  FieldInfo fieldInfoObj = fpo_ParentObject.GetType().GetField(fps_ChildName);
584 
585  // Existiert es das Kindobjekt >>{0:}<< im Objekt >>{1:}<<?
586  Logger.Instance.LogPrintDebug(this.LM.GetMessage("GetChildObjectByName", "M1", fps_ChildName, fpo_ParentObject.GetType().Name));
587  if (fieldInfoObj == null) {
588  // Nein -> Exception auslösen und alles beenden!
589  Logger.Instance.LogPrintDebug(this.LM.GetMessage("GetChildObjectByName", "M3"));
590  throw new OKWFrameObjectChildNotFoundException(this.LM.GetMessage("GetChildObjectByName", "ChildIsNotDefined_Exception", fps_ChildName, fpo_ParentObject.GetType().Name));
591  } else {
592  // Ja, das Objekt existiert.
593  Logger.Instance.LogPrintDebug(this.LM.GetMessage("GetChildObjectByName", "M2"));
594 
595  // Get the value from property.
596  lvo_Return = fpo_ParentObject.GetType().InvokeMember(
597  fieldInfoObj.Name,
598  BindingFlags.GetField,
599  null,
600  fpo_ParentObject,
601  null);
602  }
603  } finally {
604  Logger.Instance.LogFunctionEndDebug();
605  }
606 
607  return lvo_Return;
608  }
string GetMessage(string MethodName, string TextKey)
Holt die Log-Meldung für MethodeNmae/Textkey ohne weitere Parameter.

Hier ist ein Graph, der zeigt, was diese Funktion aufruft:

string OKW.FrameObjectDictionary.GetFunktionlanameFromObjekt ( object  fpObject)
private

List dasAttribute Funktionalname das übergeben Objektes aus.

Parameter
fpObject
Rückgabe
Wert aus Funtionalname

Definiert in Zeile 421 der Datei FrameObjectDictionary.cs.

422  {
423  string lvsReturn = "";
424 
425  Attribute[] attrs = System.Attribute.GetCustomAttributes(fpObject.GetType()); // Reflection.
426 
427  // Displaying output.
428  foreach (System.Attribute attr in attrs) {
429  if (attr is OKWGUIAttribute) {
430  OKWGUIAttribute a = (OKWGUIAttribute)attr;
431  lvsReturn = a.FunctionalName;
432  }
433  }
434 
435  return lvsReturn;
436  }
Attribute-Klasse OKWAttribute stellt für die Erstellung der GUIFrames aus den OKW-GUIKlassen zusätztl...

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

List<Type> OKW.FrameObjectDictionary.GetListOfOKWGuiClasses ( )

Methode erstellt eine Liste alle OKWGUI-Rahmenklassen (frame class), die in der aktuell ausgeführten Assambly definiert sind.

Zu beachten
WICHTIG: Es werden Klasse in die Liste uafgenommen, die
  1. dem Namepsace OKW.Frames zugeordent sind
  2. und mit dem Attribut OKWGUIAttribute geschmückt ist.
Rückgabe
Liefert die Liste der Klasse, die der Namespace OKW.Frames und mit dem Attribute OKWGUI vershen sind.
Autor
Zoltan Hrabovszki
Datum
2014.10.10

Definiert in Zeile 295 der Datei FrameObjectDictionary.cs.

296  {
297  string @namespace = "OKW.Frames";
298  var lvLsReturn = new List<Type>();
299 
300  Type[] myTypes;
301 
302  Assembly[] appAssemblies = AppDomain.CurrentDomain.GetAssemblies();
303 
304  for (int i = 0; i < appAssemblies.Length; i++) {
305  Logger.Instance.LogPrint("-------------------------------------------------------------------------------------------");
306  Logger.Instance.LogPrint(string.Format("Assambly {0}: {1}\n", i, appAssemblies[i].FullName));
307  Logger.Instance.LogPrint("-------------------------------------------------------------------------------------------");
308 
309  Assembly myAssembly = appAssemblies[i];
310  myTypes = myAssembly.GetTypes();
311 
312  var q = from t in myTypes
313  where t.IsClass && t.Namespace == @namespace
314  select t;
315 
316  foreach (Type t in q) {
317  if (t.GetCustomAttributes(typeof(OKWGUIAttribute), true).Length > 0) {
318  lvLsReturn.Add(t);
319  }
320  }
321  }
322  return lvLsReturn;
323  }
Attribute-Klasse OKWAttribute stellt für die Erstellung der GUIFrames aus den OKW-GUIKlassen zusätztl...
Definition: Core.cs:40

Hier ist ein Graph, der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

object OKW.FrameObjectDictionary.GetParentObjectByName ( string  fpsParentObject)

Die Methode liefert das Frame-Object des gegebenen Fensterobjektes zurück.

Dabei kann das Objekt bereits erzeugt (instanziert) sein, in diesem Fall wird der Bezug aus der Dictionary OKW_FrameObjectDictionary.cv_FrameObjectDictionary geholt oder das Objekt wurde noch nicht erzeugt, dann wird eine Instanz angelegt und ein Bezug auf das Objekt gespeichert.

Siehe auch
Für das Kindobjekt existiert eine zweite Ausprägung dieser Methode: FrameObjectDictionary.GetObjectByName(string,string)
Parameter
fpsParentObjectFachlicher Name des Fenster Objektes = Elternobjekt.
Rückgabe
Frame-Objekt-Referenz auf das Fenstre-Objekt.
Autor
Zoltan Hrabovszki
Datum
2014.10.10

Definiert in Zeile 154 der Datei FrameObjectDictionary.cs.

155  {
156  object lvo_Return = null;
157 
158  Logger.Instance.LogFunctionStartDebug("FrameObjectDictionary.GetParentObjectByName", "fpsFunctionalnameOfWindow", fpsParentObject);
159  try {
160  // Gibt es den Schlüssel im Dictinary? - D.h. Gibt es schon eine Instanz des Objektes im Speicher?
161  Logger.Instance.LogPrintDebug(this.LM.GetMessage("GetParentObjectByName", "M1", fpsParentObject));
162  if (this.__FrameObjectDictionary.ContainsKey(fpsParentObject))
163  {
164  // Ja, das Objekt existiert.
165  Logger.Instance.LogPrintDebug(this.LM.GetMessage("GetParentObjectByName", "M2"));
166  lvo_Return = this.__FrameObjectDictionary[fpsParentObject];
167  } else {
168  // Nein -> Frame zum Funtionalen NAme wurde nicht gefunden -> Exception auslösen...
169  // \todo TODO: Fehlermeldung einbauen...
170  Logger.Instance.LogPrintDebug(this.LM.GetMessage("GetParentObjectByName", "M3"));
171 
172  string lvsMessage = this.LM.GetMessage("GetParentObjectByName", "OKWFrameObjectParentNotFoundException", fpsParentObject);
173  throw new OKWFrameObjectParentNotFoundException(lvsMessage);
174  }
175  } finally {
176  Logger.Instance.LogFunctionEndDebug();
177  }
178 
179  return lvo_Return;
180  }
string GetMessage(string MethodName, string TextKey)
Holt die Log-Meldung für MethodeNmae/Textkey ohne weitere Parameter.
Dictionary< string, object > __FrameObjectDictionary
Zentrale Liste, genauer Dictionary/Hash der aktuell benutzten Frame-Objekte.

Hier ist ein Graph, der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

void OKW.FrameObjectDictionary.Init ( )

Methode initialisiert diese Klasse.

Es wird

  • LogMessender-Instanz erzeugt.
  • das FrameObjektDictionary wird gelöscht.
  • Es werden die Frame-Objekte geladen
Autor
Zoltan Hrabovszki
Datum
2014.10.10

Definiert in Zeile 254 der Datei FrameObjectDictionary.cs.

255  {
256  Logger.Instance.LogFunctionStartDebug("FrameObjectDictionary.Init");
257 
258 
259  try {
260  this.LM = new LogMessenger("FrameObjectDictionary");
261 
262  Logger.Instance.LogPrint(this.LM.GetMessage("Init", "InitClear", this.GetType().Name));
263  this.__FrameObjectDictionary.Clear();
264 
265  List<Type> lvOKWGuiClasses = GetListOfOKWGuiClasses();
266 
267  this.AddFrameInstancesToDictionary(lvOKWGuiClasses);
268  } finally {
269  Logger.Instance.LogFunctionEndDebug();
270  }
271  }
string GetMessage(string MethodName, string TextKey)
Holt die Log-Meldung für MethodeNmae/Textkey ohne weitere Parameter.
List< Type > GetListOfOKWGuiClasses()
Methode erstellt eine Liste alle OKWGUI-Rahmenklassen (frame class), die in der aktuell ausgeführten ...
Dictionary< string, object > __FrameObjectDictionary
Zentrale Liste, genauer Dictionary/Hash der aktuell benutzten Frame-Objekte.
void AddFrameInstancesToDictionary(List< Type > fpListOfOKWGuiTypes)

Hier ist ein Graph, der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

Dokumentation der Datenelemente

Dictionary<string, object> OKW.FrameObjectDictionary.__FrameObjectDictionary = new Dictionary<string, object>()

Zentrale Liste, genauer Dictionary/Hash der aktuell benutzten Frame-Objekte.

Der Zugriff erfolgt über die Methoden:

Zu beachten
Feld ist Public
Autor
Zoltan Hrabovszki
Datum
2014.10.10
Noch zu erledigen:
TODO: Bedingte Kompilierung einfügen für "Test" Feld muss Public sein, wenn unittets durchgeführt werden soll.

Definiert in Zeile 87 der Datei FrameObjectDictionary.cs.


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei: