7 #include "set_createrep.h"
9 #include "svr_window.h"
14 * PROTOTYPES _________________________________________________________________
18 BOOL CALLBACK Filesets_CreateReplica_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp);
19 void Filesets_CreateReplica_OnInitDialog (HWND hDlg, LPSET_CREATEREP_PARAMS pscp);
20 void Filesets_CreateReplica_OnSelectServer (HWND hDlg, LPIDENT *plpiTarget);
21 void Filesets_CreateReplica_OnEndTask_EnumAggregates (HWND hDlg, LPSET_CREATEREP_PARAMS pscp);
22 void Filesets_CreateReplica_EnableOK (HWND hDlg, LPSET_CREATEREP_PARAMS pscp);
23 void Filesets_CreateReplica_StartDisplay_Aggregates (HWND hDlg, LPIDENT lpiTarget);
27 * ROUTINES ___________________________________________________________________
31 void Filesets_CreateReplica (LPIDENT lpiSource, LPIDENT lpiTarget)
33 LPSET_CREATEREP_PARAMS pscp = New (SET_CREATEREP_PARAMS);
34 pscp->lpiSource = lpiSource;
35 pscp->lpiTarget = lpiTarget;
37 int rc = ModalDialogParam (IDD_SET_CREATEREP, NULL, (DLGPROC)Filesets_CreateReplica_DlgProc, (LPARAM)pscp);
42 else if (!ASSERT( pscp->lpiTarget && pscp->lpiTarget->fIsAggregate() ))
48 StartTask (taskSET_CREATEREP, NULL, pscp);
53 BOOL CALLBACK Filesets_CreateReplica_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
55 static LPSET_CREATEREP_PARAMS pscp = NULL;
56 if (msg == WM_INITDIALOG)
57 pscp = (LPSET_CREATEREP_PARAMS)lp;
59 if (HandleColumnNotify (hDlg, msg, wp, lp, &gr.viewAggMove))
62 if (AfsAppLib_HandleHelp (IDD_SET_CREATEREP, hDlg, msg, wp, lp))
70 FastList_SetTextCallback (GetDlgItem (hDlg, IDC_AGG_LIST), GetItemText, (DWORD)&gr.viewAggMove);
71 Filesets_CreateReplica_OnInitDialog (hDlg, pscp);
76 if ((ptp = (LPTASKPACKET)lp) != NULL)
78 if (ptp->idTask == taskAGG_ENUM_TO_LISTVIEW)
79 Filesets_CreateReplica_OnEndTask_EnumAggregates (hDlg, pscp);
80 else if (ptp->idTask == taskSVR_ENUM_TO_COMBOBOX)
82 EnableWindow (GetDlgItem (hDlg, IDC_SET_SERVER), TRUE);
83 Filesets_CreateReplica_OnSelectServer (hDlg, &pscp->lpiTarget);
91 hList = GetDlgItem (hDlg, IDC_AGG_LIST);
95 ptScreen.x = LOWORD(lp);
96 ptScreen.y = HIWORD(lp);
99 ScreenToClient (hList, &ptClient);
101 if (FL_HitTestForHeaderBar (hList, ptClient))
103 HMENU hm = TaLocale_LoadMenu (MENU_COLUMNS);
104 DisplayContextMenu (hm, ptScreen, hList);
108 case WM_COLUMNS_CHANGED:
110 lpSel = FL_GetSelectedData (GetDlgItem (hDlg, IDC_AGG_LIST));
111 FL_RestoreView (GetDlgItem (hDlg, IDC_AGG_LIST), &gr.viewAggMove);
112 Filesets_CreateReplica_OnSelectServer (hDlg, (LPIDENT*)&lpSel);
120 EndDialog (hDlg, LOWORD(wp));
124 EndDialog (hDlg, LOWORD(wp));
128 if (HIWORD(wp) == CBN_SELCHANGE)
129 Filesets_CreateReplica_OnSelectServer (hDlg, &pscp->lpiTarget);
135 FL_StoreView (GetDlgItem (hDlg, IDC_AGG_LIST), &gr.viewAggMove);
140 switch (((LPNMHDR)lp)->code)
144 if ((lpi = (LPIDENT)FL_GetSelectedData (GetDlgItem (hDlg, IDC_AGG_LIST))) != NULL)
146 pscp->lpiTarget = lpi;
147 Filesets_CreateReplica_EnableOK (hDlg, pscp);
159 static LONG procFilesetsCreateReplicaList = 0;
161 LRESULT CALLBACK Filesets_CreateReplica_SubclassListProc (HWND hList, UINT msg, WPARAM wp, LPARAM lp)
165 if (procFilesetsCreateReplicaList == 0)
166 rc = DefWindowProc (hList, msg, wp, lp);
168 rc = CallWindowProc ((WNDPROC)procFilesetsCreateReplicaList, hList, msg, wp, lp);
173 if (procFilesetsCreateReplicaList != 0)
174 SetWindowLong (hList, GWL_WNDPROC, procFilesetsCreateReplicaList);
181 ShowColumnsDialog (GetParent (hList), &gr.viewAggMove);
191 void Filesets_CreateReplica_OnInitDialog (HWND hDlg, LPSET_CREATEREP_PARAMS pscp)
193 TCHAR szServer[ cchNAME ];
194 TCHAR szAggregate[ cchNAME ];
195 TCHAR szFileset[ cchNAME ];
196 pscp->lpiSource->GetServerName (szServer);
197 pscp->lpiSource->GetAggregateName (szAggregate);
198 pscp->lpiSource->GetFilesetName (szFileset);
200 TCHAR szText[ cchRESOURCE ];
201 GetDlgItemText (hDlg, IDC_SET_NAME, szText, cchRESOURCE);
202 LPTSTR pszText = FormatString (szText, TEXT("%s%s%s"), szServer, szAggregate, szFileset);
203 SetDlgItemText (hDlg, IDC_SET_NAME, pszText);
204 FreeString (pszText);
206 HWND hList = GetDlgItem (hDlg, IDC_AGG_LIST);
207 if (procFilesetsCreateReplicaList == 0)
208 procFilesetsCreateReplicaList = GetWindowLong (hList, GWL_WNDPROC);
209 SetWindowLong (hList, GWL_WNDPROC, (LONG)Filesets_CreateReplica_SubclassListProc);
211 if (gr.viewAggMove.lvsView == 0) // never initialized this?
213 if (gr.viewAggCreate.lvsView == 0)
214 memcpy (&gr.viewAggMove, &gr.viewAgg, sizeof(VIEWINFO));
216 memcpy (&gr.viewAggMove, &gr.viewAggCreate, sizeof(VIEWINFO));
218 FL_RestoreView (GetDlgItem (hDlg, IDC_AGG_LIST), &gr.viewAggMove);
220 EnableWindow (GetDlgItem (hDlg, IDOK), FALSE);
221 EnableWindow (GetDlgItem (hDlg, IDC_SET_SERVER), FALSE);
222 EnableWindow (GetDlgItem (hDlg, IDC_AGG_LIST), FALSE);
224 // Fill in the Servers combobox, and select the default server
225 // (if one was specified).
227 LPSVR_ENUM_TO_COMBOBOX_PACKET lpp = New (SVR_ENUM_TO_COMBOBOX_PACKET);
228 lpp->hCombo = GetDlgItem (hDlg, IDC_SET_SERVER);
229 lpp->lpiSelect = (pscp->lpiTarget) ? pscp->lpiTarget->GetServer() : NULL;
230 StartTask (taskSVR_ENUM_TO_COMBOBOX, hDlg, lpp);
234 void Filesets_CreateReplica_OnSelectServer (HWND hDlg, LPIDENT *plpiTarget)
236 LPIDENT lpiServerNew = (LPIDENT)CB_GetSelectedData (GetDlgItem (hDlg, IDC_SET_SERVER));
238 SetWindowLong (hDlg, DWL_USER, (LONG)lpiServerNew);
240 if (*plpiTarget && (*plpiTarget)->fIsServer())
242 if (*plpiTarget && ((*plpiTarget)->GetServer() != lpiServerNew))
245 Filesets_CreateReplica_StartDisplay_Aggregates (hDlg, *plpiTarget);
249 void Filesets_CreateReplica_OnEndTask_EnumAggregates (HWND hDlg, LPSET_CREATEREP_PARAMS pscp)
251 EnableWindow (GetDlgItem (hDlg, IDC_AGG_LIST), TRUE);
252 Filesets_CreateReplica_EnableOK (hDlg, pscp);
256 void Filesets_CreateReplica_EnableOK (HWND hDlg, LPSET_CREATEREP_PARAMS pscp)
258 EnableWindow (GetDlgItem (hDlg, IDOK), (pscp->lpiTarget) ? TRUE : FALSE);
262 void Filesets_CreateReplica_StartDisplay_Aggregates (HWND hDlg, LPIDENT lpiTarget)
264 LPIDENT lpiServerNew = (LPIDENT)CB_GetSelectedData (GetDlgItem (hDlg, IDC_SET_SERVER));
266 EnableWindow (GetDlgItem (hDlg, IDOK), FALSE);
268 LPAGG_ENUM_TO_LISTVIEW_PACKET lpp = New (AGG_ENUM_TO_LISTVIEW_PACKET);
269 lpp->hList = GetDlgItem (hDlg, IDC_AGG_LIST);
270 lpp->lpiServer = lpiServerNew;
271 lpp->lpiSelect = lpiTarget;
272 lpp->lpvi = &gr.viewAggMove;
273 StartTask (taskAGG_ENUM_TO_LISTVIEW, hDlg, lpp);