INSTALL.CMD
im &xwp;-Installationsverzeichnis an, um mehr darber zu
erfahren.
Die wichtigsten &xwp;-Klassenersetzungen 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 Kontextmeneintr„ge zu allen Ordnern hinzu, erlaubt Ordner-Tastenkrzel, ver„ndert die Fenster-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.
Einige der WPFolder-Methoden, die von der XFolder-Klasse ersetzt werden, sind (wahrscheinlich nur fr Programmierer von Interesse):
wpModifyPopupMenu:
Diese WPObject-Methode wird
von der WPS aufgerufen, kurz bervor das Kontextmen angezeigt wird.
Jede WPS-Klasse fgt hier ihre eigenen, klassenspezifischen Eintr„ge
hinzu.
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 bev”lkert ihn unsichtbar.
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 "bevorzugten Ordnern".
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.
wpMenuItemSelected
: Dies wird immer dann von
der WPS aufgerufen, wenn ein Eintrag im Kontextmen vom Benutzer ausgew„hlt
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,
fhrt &xwp; die blichen Tricks damit aus
(siehe Kontexthilfe des &xwp;-Konfigurationsordners fr Details).
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 ge”ffnet.
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).
wpMenuItemHelpSelected
: Jedesmal wenn die F1-Taste
auf einem Kontextmeneintrag gedrckt wird, kommt diese Methode
ins Spiel. Falls n”tig, zeigt XFolder die zugeh”rige Hilfeseite
an.
wpFilterPopupMenu
: Mit dieser Methode entfernt
XFolder die standardm„áigen Meneintr„ge, die Sie in
den globalen Einstellungen angegeben haben. (Diese Methode wird von der
WPS noch vor wpModifyPopupMenu aufgerufen, also werden die Eintr„ge
zuerst entfernt und dann neue eingefgt.)
wpclsQueryTitle
: Die Zeichenkette XFolder
(oder
was auch immer Sie in den globalen Einstellungen angegeben haben) wird zurckgegeben,
um der XFolder-Klasse einen unverwechselbaren Namen zu geben.
wpOpen
: Diese Routine wird aufgerufen, sobald
die WPS einen Ordner (oder auch jedes andere Objekt) ”ffnet. XFolder
muá diese Methode ersetzen, um eine ganze
Reihe von Funktionen zu implementieren.
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 in den globalen Einstellungen 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 Tastenkrzel 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.
In der neuen Fensterprozedur f„ngt XFolder alle WM_CHAR
-Nachrichten (die nur
zur Fensterrahmen-Prozedur weitergereicht werden, wenn sie noch nicht von einem Container,
wie bei 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.
wpAddSettingsPages
: Die WPS ruft diese Methode
auf, wenn das Einstellungsnotizbuch eines Objektes ge”ffnet wird. XFolder
ersetzt diese Methode ebenfalls, um seine neuen Notizbuchseiten einzufgen.
Dabei wird die Stammklasse aufgerufen, um auch die "normalen" Reiter einzufgen.
XFldObject arbeitet auf den ersten Blick anscheinend auch nicht so viel, auáer daá die &os2;-Standard-Meneintr„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 Meneintr„ge der Arbeitsoberfl„che 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. Statt dessen registriert XFolder zwei neue Klassen, die sich zwar von WPSystem ableiten, diese Klasse aber nicht ersetzen. Diese zwei Klassen sind XFldSystem und XFldWPS fr die Objekte "&os2; Kernel" und "Workplace Shell". Die Einstellungen hier vorgenommenen 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 Funktionen von XFolder sind individuell einstellbar, so daá
Sie diejenigen, die Sie nicht einsetzen wollen, leicht loswerden k”nnen sollten
- oder auch XFolder als ganzes.