PBWOEditor.h


max21 Unternehmensgruppe
//	Aprica2
//	copyright Pirmin Braun 1997-2007 - pirmin@pirmin.de
//	all Rights reserved;
#import "Aprica.h"
#define CONFIGMODE_Liste 0
#define CONFIGMODE_Detail 1
#define CONFIGMODE_Lif 2
#define UEB_NONE 0
#define UEB_SINGLE 1
#define UEB_MULTI_DEL 2
#define UEB_MULTI_REF 3
#define SORTMODE_N 0
#define SORTMODE_A 1
#define SORTMODE_D 2
#define SORTMODE_T 3
#define stcolor_red	@"#FF0000"
#define stcolor_yellow	@"#FFFF00"
#define stcolor_green	@"#00FF00"
#define stcolor_white	@"#FFFFFF"
#define stcolor_black	@"#000000"
@interface PBWOEditor:WOComponent
{
    PBWOBundle	*bundle;
    PBWOEditor *callingModul,*nextModul;
    PBDDTable	*myTable;
    WOElement *templ;
    NSString *guiName;
    PBWOAsso *waitingForName;
    PBActionO *currentAction;
    BOOL badLif,isConfigMode;
    int configMode; //Liste, Detail, Lif
    NSMutableDictionary *lifDict; //key=A|boxId|Title, value = array of attr.dbNames
    NSString *selectedBoxName;
    NSMutableDictionary *boxDict;
    NSMutableDictionary *allAttr; //key=dbName, value=attr; die von eigener entity + von zusaetzl. abstr. entities + evt. weitere - explizit ausgegrenzte;
    NSMutableArray *fassos;
    NSMutableArray	*errorAssos;	//Eingabefehler
    NSMutableDictionary *fassosByName;	//field-Assos per dbName
    NSMutableArray *boxNameArray,*boxNameArrayBak; //keys des Boxdict in uebergebener Reihenfolge
    NSMutableArray *registerActions,*registerActionsBak; //Buttons, die aussehen wie Register
    id genericItem; //f. popups
    PBWOAsso *currentAsso;
//lif-config:
    NSString *currentRegister,*selectedRegister,*newRegisterName,*currentFieldItem,*fieldTargetPos,*selectedField,*selectedRegisterModify;
    NSArray *selectedFields,*selectedFieldsOrControls;
    NSMutableArray *fieldsInSelectedRegister,*fieldsOrControls;
    int currentRegisterIndex,indexOfSelectedField,currentFieldIndex;
    PBStringWrapper *currentFieldInSelectedRegister;
    int assoIDCounter;
    BOOL anzeigemodus;
    NSMutableDictionary *parmDict;
    NSString *lifEditArea; //fuer direktes editieren von lifs
    NSString *otherLif; //um von fremden lifs abzukupfern
    NSString *lastLifPath; //von wo zuletzt geladen wurde
    NSMutableDictionary *colWidthDict;
    BOOL initialSearchTookPlace;
    BOOL create_ButtonIsDisabled,duplicate_ButtonIsDisabled,delete_ButtonIsDisabled;
    BOOL fieldsOrControlsTags,fieldsOrControlsButtons,fieldsOrControlsFields,fieldsOrControlsParms,fieldsOrControlsUsed,fieldsOrControlsUnused,fieldsOrControlsSortByUI,fieldsOrControlsFilled;
    NSArray *commonBox,*suchabfrButtons;
    PBWOEditor *currentLaunchedModule;
    int currentLaunchedModuleIndex;
    int fieldsInSelectedRegisterIndex;
    NSMutableDictionary *lifFieldDict; //enthaelt alle Feldnamen, die verbaut sind; wird bei bedarf aufgebaut;
    NSMutableDictionary *disabledFieldNames; // enthaelt alle Feldnamen, die zusaetzlich disabled sein sollen; wird in _fieldIsDisabled abgefragt;
    NSMutableDictionary *enabledFieldNames; // enthaelt alle Feldnamen, die trotz allFieldsDisabled enabled sein sollen; wird in _fieldIsDisabled abgefragt;
    NSMutableDictionary *hiddenFieldNames; // enthaelt alle Feldnamen, die zusaetzlich ausgeblendet sein sollen; wird in isAusgeblendet abgefragt;
    BOOL allFieldsDisabled;
    int portletIndex; // wird hochgezaehlt bei setupWithBundle und wird genommen, um Portlet-Class zu erzeugen;
    NSMutableArray *clearOnSelObjChanged,*refreshOnSelObjChanged;
    NSMutableDictionary *portletDict;
    
// ---- bis hier ehemaliger PBWOBrowserComponent
    NSString	*masterEntityName;
    PBEO 	*masterEO;
    PBEO	*duplicatedObj;
    BOOL	needsSave;
    int		pendingAction;
    BOOL	isPosition;
    BOOL 	needsMasterEO;
    BOOL	hasPositionsnr;
    BOOL	wasDuplicate;
    BOOL 	hasStatisticFields; // table hat cuser,luser etc,
    int		uebernMode;	// UEB_NONE UEB_SINGLE etc.
    BOOL	hasEditierBerecht; // wird beim Start nach Feststellen der Berechtigung statisch gesetzt;
    PBSQLQualifier *suchFelderQ; // wird von suchen erzeugt; bei combinedQ verwendet; gecleared von executeCallingMQ;
    PBSQLQualifier *staticQ; // wird in didBuildUp Script gesetzt; z.B. "Farbe"; wird bei combinedQ verwendet
    PBSQLQualifier *callingMQ; // fuer Uebersichten und Lookups; wird gesetzt in getCMQForAssoFind.script und getCMQForUebersicht.script; immer verwendet; executeCallingMQ fuehrt ihn direkt aus;
    NSMutableArray *filterQs; // Qualifiers zum Filtern; verwendet in combinedQ; gecleared, wenn suchFelderQ gesetzt wird; von Query-Portlet gefuellt, wenn auf Filter geklickt wird,
    NSString *currentBoxName;
    int	selRow;
    int dataColumnsIndex;		//index dafuer f. repetition
    NSMutableArray *ma;			//enthaelt gelesene Datensaetze
    NSMutableArray *selectedObjects;	//in tv selektierte Objekte
    NSString *soseq;			// stringformat, um soa zu erzeugen
    NSArray *soa;		 	//Sortierung nur noch serverside; setSoseq: erzeugt soa;
    NSMutableArray *columns;		//array der columns
    NSMutableArray *visibleTVAttr,*allTVAttr; //zum konfigurieren
    PBDDAttribute *currentPba; 		//f. WOBrowser
    NSArray *selectedVisibleTVAttrs,*selectedAllTVAttrs;
    NSString *visibleAttrTargetPos;
    PBEO *selObj;			//momentan selektiertes Objekt; 
    int maOffset;			//wie weit im resultset geblaettert wurde
    BOOL isMaximized;			//maximiert-> tvlines sichtbar
    BOOL isMaximizedDetail;		//maximiert-> detail sichtbar
    PBWOAsso *externalFieldToFocusOn;
    int currentPage; //intern
    int currentPageIndex; //wird gemeldet
    int countCombinedQ; //wieviel Saetze mit dem letzen suchen gefunden wurden;
    NSArray *positionsTabellen;
    NSString *combiSuchContent;
    PBSQLQualifier *lastCombinedQ;
//tvNew sachen
    int tvNewRowOffset;
    NSString *tvNewSearchInSortCol;
    PBWOTVCCol *tvcSortCol,*currentColumn; //spalte, nach der sortiert wird; spalte f. repetition
    int fetchLimit;
    NSString *customWidthTF;
    NSMutableArray *stateArray;
    BOOL multiSelect;  // wenn an, werden selectedObjects gesammelt statt auf den Satz zu platzieren;
    NSString *nameForScript;
    NSMutableDictionary *changedInRequest;  // Namen der im Request veraenderten Werte
}
// JavaScript
- (NSString *)script;
- (NSString *)additionalScriptContent;
    ACCESSClassh(externalFieldToFocusOn,setExternalFieldToFocusOn,PBWOAsso);
// allg. Accessor
- (NSString *)name;
- (NSMutableDictionary *)parmDict;
- (NSMutableDictionary *)changedInRequest;
- (NSMutableArray *)stateArray;
- (NSString *)callingModulName;
- (NSString *)modulName;
- (NSString *)bundleDoku;
- (BOOL)hasFilter;
- (NSMutableArray *)filterQs;
    ACCESSh(guiName,setGuiName);
    ACCESSClassh(soa, setSoa, NSArray)
    ACCESSClassh(bundle, setBundle, PBWOBundle)
    ACCESSClassh(myTable, setMyTable, PBDDTable)
    ACCESSh(nameForScript,setNameForScript)
// Positionseditor
    ACCESSh(masterEntityName, setMasterEntityName)
    ACCESSClassh(positionsTabellen,setPositionsTabellen,NSArray);
    ACCESSClassh(masterEO, setMasterEO, PBEO)
// button-Steuerung
- (void)setCreate_ButtonIsDisabled:(BOOL)yn;
- (void)setDuplicate_ButtonIsDisabled:(BOOL)yn;
- (void)setDelete_ButtonIsDisabled:(BOOL)yn;
- (BOOL)ruecksprung_ButtonIsDisabled;
- (BOOL)suche_ButtonIsDisabled;
- (BOOL)create_ButtonIsDisabled;
- (BOOL)duplicate_ButtonIsDisabled;
- (BOOL)delete_ButtonIsDisabled;
- (BOOL)save_ButtonIsDisabled;
- (BOOL)undo_ButtonIsDisabled;
- (BOOL)bookmark_ButtonIsDisabled;
- (BOOL)refetchEO_ButtonIsDisabled;
- (void)restoreBoxNameArray;
- (NSMutableArray *)boxNameArray;
// WO Hacks
- (id)ignore;
- (void)setIgnore:(id)obj;
- (WOElement *)_template;
    ACCESSClassh(templ, setTempl,WOElement)
// Berechtigung
- (BOOL)notRoot;
- (BOOL)hasEditierBerecht;
- (void)setHasEditierBerecht:(BOOL)yn;
- (void)determineStaticBerecht;
// Status statisch
- (BOOL)hasStatisticFields;
// Status dynamisch
- (BOOL)notInserting;
- (NSString *)notInsertingS; // string variante f. Scripts
- (void)setUebernMode:(int)i;
- (int)uebernMode;
- (void)noChanges;
- (void)setNeedsSave:(BOOL)yn;
- (BOOL)needsSave;
- (BOOL)hasSelObj;
- (BOOL)anzeigemodus;
- (void)setAnzeigemodus:(BOOL)yn;
- (BOOL)paNon;
- (NSString *)paNonS; // string variante f. Scripts
- (int)pendingAction;
- (void)setPendingAction:(int)v;
- (int)maOffset;
- (int)countCombinedQ;
// interne hooks
- (void)_didCreate:(PBEO *)eo;
- (void)_didInsert:(PBEO *)eo;
- (void)_didUpdate:(PBEO *)eo;
- (void)_didDelete:(PBEO *)eo;
- (BOOL)_willInsert:(PBEO *)eo;
- (BOOL)_willDelete:(PBEO *)eo;
- (BOOL)_willUpdate:(PBEO *)eo;
- (BOOL)_validate:(PBEO *)eo;
- (BOOL)ceoh_will:(NSString *)s eo:(PBEO *)eo;
// Boxes (Register)
- (BOOL)mayPrevBox;
- (BOOL)mayNextBox;
- (BOOL)isMaximizedDetail;
- (void)gotoFirstBox;
- (NSArray *)selectedBox;
- (BOOL)hasRegister;
- (NSString *)registerFieldGuiName;
- (NSString *)registerFieldDBName;
    ACCESSClassh(currentAction, setCurrentAction, PBActionO) // nur noch f. Register
- (NSString *)currentBoxName;
    ACCESSh(selectedBoxName,setSelectedBoxName);
// Portlet
- (NSMutableArray *)clearOnSelObjChanged;
- (NSMutableArray *)refreshOnSelObjChanged;
- (NSMutableDictionary *)portletDict;
- (int)portletIndex;
// Oberflaeche aufbauen
- (BOOL)hasTV;
- (NSString *)nextAssoID;
- (NSMutableDictionary *)disabledFieldNames;
- (NSMutableDictionary *)enabledFieldNames;
- (NSMutableDictionary *)hiddenFieldNames;
- (NSArray *)registers;
- (void)buildUpTV:(NSArray *)aa;
- (void)buildUpFields:(NSArray *)a forTitle:(NSString *)k;
- (void)filterAttrNames:(NSMutableArray *)lifa pa:(NSMutableArray *)pa;
- (NSString *)nameForLifdictKey:(NSString *)k;
- (void)determineRegisterActions;
- (PBWOAsso *)assoForNIFrom:(NSString *)s;
- (void)determineAttributes;
- (void)buildUpTVAndRegisters;
- (void)addNamedIconsToAllTVAttr;
- (void)rebuildFassosByName;
- (void)removeRegisterActionWithGuiName:(NSString *)s;
// Oberflaeche anzeigen/steuern
ACCESSClassh(waitingForName,setWaitingForName,PBWOAsso);
- (void)refreshDisplay;
- (void)markPrepareTVDataForDisplay;
- (void)prepareDataForDisplay;
- (NSString *)fieldIDToFocusOn;
- (BOOL)allFieldsDisabled;
- (void)setAllFieldsDisabled:(BOOL)yn;
// Navigation
- (NSString *)gotoCurrentLaunchedModuleAction;
- (void)gotoCurrentLaunchedModuleNr:(int)i;
- (WOElement *)attributeButtonActed:(NSString *)actionName;
- (void)ruecksprung;
- (void)bringToFront:(PBWOEditor *)m;
- (void)bringToFrontWithInitialSearch:(PBWOEditor *)m;
- (void)bringToFront:(PBWOEditor *)m andPerformInitialSearch:(BOOL)andPerformInitialSearch;
- (PBWOEditor *)gotoStart;
    ACCESSClassh(callingModul, setCallingModul, PBWOEditor)
    ACCESSClassh(nextModul, setNextModul, PBWOEditor)
// Start
- (void)setUpWithBundle:(PBWOBundle *)b;
- (void)didSetUpWithBundle;
// Uebersicht
- (NSString *)cmqName;
- (void)oeffneUebersicht:(NSString *)ueName tableName:(NSString *)tableName ueb_mode:(int)ueb_mode;
// Suchen
    ACCESSClassh(suchFelderQ,setSuchFelderQ,PBSQLQualifier);
    ACCESSClassh(staticQ,setStaticQ,PBSQLQualifier);
    ACCESSClassh(callingMQ,setCallingMQ,PBSQLQualifier);
    ACCESSClassh(lastCombinedQ, setLastCombinedQ, PBSQLQualifier)
    ACCESSh(combiSuchContent,setCombiSuchContent); // combi-Suchfeld
- (void)performInitialSearch;
- (void)markInitialSearchTookPlace;
- (void)refetchEO;
- (void)neuSuchen; // letzten combinedQ nochmal auswerten
- (BOOL)suchSuccessfulExternalQ:(PBSQLQualifier *)q;
- (void)suchInternalQ:(PBSQLQualifier *)q;
- (void)executeCallingMQ:(PBSQLQualifier *)q;
- (WOElement *)combiSucheActed; // combi-Suchfeld
- (PBSQLQualifier *)rechercheQ;
- (PBSQLQualifier *)combinedQWith:(PBSQLQualifier *)sfq;
- (PBSQLQualifier *)combinedQ; // geht auf suchfelderq
- (void)setEffectiveCombinedQ:(PBSQLQualifier *)q;
- (int)fetchLimit;
- (void)setFetchLimit:(int)i;
- (int)countQ:(PBSQLQualifier *)q;
- (BOOL)sfqArray:(NSArray *)lma willReachMin_Results:(int)min_results;
- (void)evaluateQualifiers;
// Sortieren
    ACCESSh(soseq,setSoseq);
    ACCESSClassh(tvcSortCol,setTvcSortCol,PBWOTVCCol);
// Felder
- (PBWOAsso *)currentAsso;
- (NSMutableArray *)fassos;
- (NSArray *)fassosWithName:(NSString *)s;
- (NSMutableDictionary *)fassosByName;
- (NSMutableArray *)errorAssos;
- (BOOL)_fieldIsDisabled:(NSString *)fn;
- (void)resetErrorAssos;
// Daten verwalten
- (void)create;
- (void)duplicate;
- (void)delete;
- (void)undo;
- (void)empty;
- (void)save;
- (void)didSetValueForKey:(NSString *)dbName; // notification ausloesen
- (void)addEo:(PBEO *)o; // intern
- (void)takeObjects:(NSArray *)someObjects; // ma fuellen
- (void)setAktiv;
- (void)setInaktiv;
- (void)setAktivTo:(NSString *)s;
- (void)_delete;
- (void)aValueChanged;
- (void)df;
- (void)takeString:(NSString *)s; // von Lookup oder Kalender in das waitingForName uebernehmen
    ACCESSClassh(duplicatedObj, setDuplicatedObj, PBEO)
- (void)didValToTargetPba:(PBDDAttribute *)pba;
- (void)executeDidTakeValuesFromRequest;
// PidImage
- (void)handlePidimage;
- (NSString *)pidImagePath;
- (NSString *)pidImageTNPath;
- (BOOL)hasPidImage; /*" f. ViewPage in CMS"*/
// LIF verwalten
- (WOElement *)visibleTVAttrDirection:(int)direction;
- (void)fieldDirection:(int)direction;
- (NSArray *)fieldsOrControls;
- (NSArray *)controlFields;
- (NSMutableArray *)lifDictArrrayOfSelectedRegister;
- (void)rebuildFieldsInSelectedRegister;
- (void)reflectFieldsInSelectedRegister;
- (BOOL)mayLeaveConfig;
- (BOOL)mayNotLeaveConfig;
- (BOOL)isConfigModeDetail;
- (void)addScriptTab;
- (NSMutableDictionary *)colWidthDict;
- (NSMutableArray *)visibleTVAttr;
- (BOOL)isConfigMode;
- (NSString *)lifStringWithDict:(NSDictionary *)dict;
- (void)createDefaultLayout;
- (void)redrawAfterLeaveConfig;
- (void)rebuildFieldsOrControl;
- (NSString *)layoutInfoPathForRead;
- (void)saveLif;
- (void)saveLif:(NSMutableDictionary *)dict path:(NSString *)path;
- (void)useLif:(NSString *)c path:(NSString *)s dict:(NSMutableDictionary *)dict;
- (WOElement *)saveAsMyLif;
- (void)loadLif;
- (BOOL)badLif;
- (WOElement *)enterConfig;
- (WOElement *)leaveConfig;
- (WOElement *)abortConfig;
- (WOElement *)previewConfig;
    ACCESSClassh(currentFieldInSelectedRegister, setCurrentFieldInSelectedRegister,PBStringWrapper)
    ACCESSClassh(selectedFields,setSelectedFields,NSArray);
    ACCESSClassh(commonBox,setCommonBox,NSArray);
    ACCESSClassh(suchabfrButtons,setSuchabfrButtons,NSArray);
    ACCESSClassh(selectedFieldsOrControls,setSelectedFieldsOrControls,NSArray);
    ACCESSClassh(fieldsInSelectedRegister,setFieldsInSelectedRegister,NSMutableArray);
    ACCESSh(currentRegister, setCurrentRegister)
    ACCESSh(selectedRegister, setSelectedRegister)
    ACCESSh(selectedRegisterModify, setSelectedRegisterModify)
    ACCESSh(newRegisterName, setNewRegisterName)
    ACCESSh(currentFieldItem, setCurrentFieldItem)
    ACCESSh(fieldTargetPos, setFieldTargetPos)
    ACCESSh(selectedField, setSelectedField)
    ACCESSh(lifEditArea,setLifEditArea);
    ACCESSh(lastLifPath,setLastLifPath);
    ACCESSh(customWidthTF,setCustomWidthTF);
// tv in Betrieb
    ACCESSh(tvNewSearchInSortCol,setTvNewSearchInSortCol);
- (int)tvNewRowOffset;
- (void)setTvNewRowOffset:(NSString *)s;
- (int)pageLengOrLess;
- (void)gotoRow:(int)i;
- (BOOL)mayPrevRow;
- (BOOL)mayNextRow;
- (WOElement *)pageBack;
- (WOElement *)pageForward;
- (BOOL)mayPageBack;
- (BOOL)mayPageForward;
- (int)selRow;
- (WOElement *)allSelection;
- (WOElement *)minimize;
- (WOElement *)minimizeDetail;
- (WOElement *)maximizeDetail;
- (int)pageLeng;
- (int)numOfPages;
- (BOOL)isMaximized;
- (BOOL)mayOffsetZurueck;
- (BOOL)mayOffsetWeiter;
- (void)offsetZurueck;
- (void)offsetWeiter;
- (int)colCount;
- (PBWOTVCCol *)columnWithName:(NSString *)s;
// selectedObject(s)
    ACCESSClassh(ma,setMa,NSMutableArray) // enthaelt die Treffermenge, max. fetchlimit
    ACCESSClassh(selObj, setSelObj, PBEO)
- (BOOL)mayNotChangeSelectedObject;
- (void)_selObjChanged;
- (void)gatherSelectedObjects;
- (NSMutableArray *)selectedObjects;
- (void)gotoObject:o;
- (void)positionTo:(int)posMode;
- (WOElement *)multiSelOn; // in Multiselection Modus wechseln
- (WOElement *)multiSelOff; // Multiselection Modus beenden
- (NSString *)isInserting;
- (WOElement *)editLine:(int)line columnName:(NSString *)columnName; // bei klick auf Zeile
- (void)gatherSelectedObjectsAndGoto:(BOOL)gotoSelObj;
@end
@interface PBWOViewer:PBWOEditor
@end
Foto