Die wichtigsten XFolder Klassen-Ersetzungen sind:
Wie auf der vorhergehenden Seite beschrieben, ist die XFolder-Klasse eine Ableitung der Klasse WPFolder. So kann sie alles machen, was auch ein normaler Ordner kann. Als neue Funktion fgt sie neue Kontextmen-Eintr„ge zu allen Ordnern hinzu, erlaubt Ordner-Tastenkrzel (Hotkeys), ver„ndert die Titelzeile u.v.a.
Durch Benutzung der Polymorphie definiert XFolder verschiedene WPFolder-Methoden neu, die nachstehend noch erl„utert werden.
XFolder ist jedoch dann in der WPS als ein WPFolder-Ersatz registriert, was bedeutet, daá die WPS die XFolder-Klasse anstatt WPFolder als ihre Ordner-Standard-Klasse benutzen wird. Dadurch wird WPFolder nicht mehr direkt benutzt, sondern nur noch durch ihre Ersatz-(und Ableitungs-)Klasse XFolder. Fr mehr Informationen ber dieses Thema siehe die Seite "WPS-Klassen" im Einfhrungs-Teil.
Hier einige der WPFolder-Methoden, die von der XFolder-Klasse ersetzt werden sind (wahrscheinlich nur fr Programmierer von Interesse):
Da XFolder viel mit den Mens spielt, ist dies eine der wichtigsten Methoden, die XFolder ersetzt. In dieser Methode ruft XFolder zuerst wpModifyPopupMenu von der Stammklasse (WPFolder) auf, um alle standardm„áigen Eintr„ge zum Kontextmen hinzuzufgen.
Dann sucht sie nach dem XFolder-Konfigurationsordner (der die Objekt-ID <XFOLDER_CONFIG> haben muá) und fgt ihn v”llig transparent ein. Jetzt werden alle Objekte, Untermens und Menpunkte durchgegangen. Wenn der Konfigurationsordner nicht gefunden wird, erscheint ein Nachrichtenfenster, und ein leerer Ordner mit der erforderlichen ID wird auf der Arbeitsoberfl„che erstellt.
Dasselbe geschieht mit den "Ordnerinhalt"-Funktionen und den "Lieblingsordnern". Jedoch werden diese Untermens nur dann mit Objekten gefllt, wenn sie vom Benutzer ge”ffnet werden; dies geschieht, indem XFolder die Fensternachricht WM_INITMENU abf„ngt, und zwar in der "unterklassierten" (subclassed) Fensterprozedur fr den Ordnerrahmen (siehe unten). XFolder "unterklassiert" ebenfalls alle Untermenfenster (und nur diese), damit es die Symbole zeichnen und Maustaste 2 zum ™ffnen eines Ordners abfangen kann.
(Bitte beachten Sie, daá "subclassing" nichts mit WPS-Klassen zu tun hat, sondern ein Presentation Manager-Terminus fr die Benutzung verschiedener Nachrichten-Prozeduren fr ein existierendes Fenster ist, um bestimmte PM-Nachrichten fr dieses Fenster abzufangen. Dafr wird die API WinSubclassWindow benutzt.)
XFolder modifiziert mit dieser Methode auch diverse andere Mens (wie das
"Sortieren"-Untermen), wenn die globalen Einstellungen dies erlauben, und
fgt andere Meneintr„ge hinzu, wenn dies in den globalen Einstellungen
aktiviert worden ist.
XFolder berprft, ob einer seiner eigenen (variablen) Eintr„ge benutzt wird; wenn dem so ist, findet es das zugeh”rige Objekt im Konfigurationsordner. Falls es sich bei dem Objekt um eine Instanz der WPProgramm-Klasse handelt, werden die bereits vorher beschriebenen Tricks ausgefhrt. Wenn das Objekt eine Schablone ist (egal welche WPS-Klasse), wird es nicht ge”ffnet, sondern XFolder erstellt dann davon ein neues Objekt im aktuellen Ordner (via wpCreateFromTemplate).
Falls der gew„hlte Eintrag zu den "Ordnerinhalt"-Untermens geh”rt, wird einfach das zugeh”rige Objekt gestartet.
Wenn irgendein anderer Meneintrag, den XFolder zum Kontextmen hinzugefgt hat, benutzt wird, fhrt XFolder intern die entsprechende Aktion aus.
Wurde allerdings kein XFolder Meneintrag ausgew„hlt, wird die wpMenuItemSelected-Methode
der Stammklasse (WPFolder) aufgerufen, um die Standardeintr„ge nicht am Funktionieren
zu hindern.
Als erstes wird die Stammethode aufgerufen, um die Ordner-Ansicht zu ”ffnen: Die WPS erstellt ein Fenster mit einem Standard-PM-Container darin und zeigt es auch an.
XFolder f„ngt dann das Handle fr den Fensterrahmen ab, mit dem es dann den Fenstertitel des Ordners „ndern und den kompletten Pfad dort einfgen kann (falls aktiviert). Eigentlich ist es nur ein einfacher Aufruf von WinSetWindowText, nur mit einigen Berechnungen, um den Titel n”tigenfalls zu krzen.
In dieser Methode "unterklassiert" XFolder auch die Fensterprozedur fr den Ordnerrahmen, damit WM_CHAR-Nachrichten fr Hotkeys und viele andere Dinge verarbeitet werden k”nnen. Das Unterklassieren erschien mir die beste M”glichkeit zu sein, da der gesamte n”tige WPS-Initialisierungskram durch das Aufrufen der Stamm-Methode erledigt wird. Der Nachteil ist, daá der Benutzer nicht mit dem Ordner interagieren kann, weil er erst danach mit Objekten gefllt ("bev”lkert" oder "populated" in WPS-Terminologie) wird.
XFolder f„ngt alle WM_CHAR-Nachrichten (die nur zur Fensterrahmen-Prozedur weitergereicht werden, wenn sie noch nicht von einem Container, wie den Pfeiltasten, bearbeitet worden sind) ab und wertet sie gem„á der Ordner-Tastenkrzel-Liste aus, die in den globalen Einstellungen ge„ndert werden kann.
Unterklassieren wird auch fr die Statusleisten der Ordner ben”tigt; die WM_QUERYFRAMECTLCOUNT-, WM_FORMATFRAME-, und WM_CALCFRAMERECT-Nachrichten werden abgefangen, um die Gr”áe des Ordnerrahmens und seines Container-Unterfensters entsprechend dem fr die Statusleiste ben”tigten Platz zu „ndern.
XFolder f„ngt auch einige Container-Benachrichtigungen ab, um in der Baumansicht automatisch zu rollen und die Statusleiste zu „ndern, falls der Benutzer die Objektauswahl ge„ndert hat.
Zus„tzlich angelt sich XFolder diverse Men-Nachrichten, wie WM_INITMENU und WM_MENUSELECT, um einige Men-Funktionen zu benutzen, die ber normale WPS-Methoden nicht nutzbar sind.
Alle Nachrichten, die keine Bedeutung fr XFolder haben, werden zu ihrer ursprnglichen Fensterprozedur weitergereicht.
Die wpOpen-Methode wird auch zur Implementation der erweiterten
Sortierfunktionen von XFolder gebraucht; XFolder aktualisiert die Container-Einstellungen
gem„á den Sortierkriterien, die Sie angegeben haben.
XFldObject arbeitet auf den ersten Blick anscheinend auch nicht so viel, auáer daá die Standard Men-Eintr„ge unterdrckt werden und "Dateiname kopieren" hinzugefgt wird. Aber diese Klasse wird von anderen XFolder-Teilen ben”tigt, um ber einige interne WPS-Ereignisse benachrichtigt zu werden, vor allem von XShutdown, was im Detail auf der n„chsten Seite beschrieben wird.
Die XFldDesktop-Klasse wurde fr die Žnderung der Desktop-Meneintr„ge implementiert sowie fr XShutdown, das im Detail auf der n„chsten Seite beschrieben wird, implementiert.
W„hrend frhere Versionen auch die WPSystem-Klasse ersetzten, so daá das "System"-Objekt in der Systemkonfiguration einige Reiter fr XFolders globale Einstellungen enthielt, hat sich dieses Verhalten mit V0.80 ge„ndert. Stattdessen registriert XFolder zwei neue Klassen, die sich zwar von WPSystem ableiten, diese Klasse aber nicht ersetzen. Diese zwei Klassen sind XFldSystem und XFldWPS fr das Objekt "OS/2 Kernel" bzw. "Workplace Shell". Die Einstellungen werden gr”átenteils in der OS2.INI gespeichert und jedesmal dann ausgewertet, wenn XFolder sie braucht (z.B. wenn Sie ein Kontextmen ”ffnen). Dagegen werden die "lokalen" XFolder-Einstellungen fr einen einzelnen Ordner in seinen .CLASSINFO-EAs gespeichert, wo die WPS auch die anderen Ordner-Einstellungen sichert. Dies wird dann von der XFolder-Klasse erledigt.
Bitte beachten Sie, daá die XFolder-Klassen entworfen wurden, um
zu interagieren. Versuchen Sie nicht einfach nur einige der Klassen zu entfernen, da
sich XFolder komisch benehmen k”nnte (wenn Sie Glck haben). Alle M”glichkeiten
von XFolder sind individuell einstellbar, so daá Sie nur das einsetzen mssen, was
Sie brauchen -- Sie k”nnen XFolder auch ganz schnell loswerden, falls Sie wollen.