// 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