2 * Copyright 2000, International Business Machines Corporation and others.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
11 #include <afs/param.h>
16 #include "set_repprop.h"
17 #include "set_createrep.h"
18 #include "set_delete.h"
19 #include "set_release.h"
20 #include "propcache.h"
26 * DEFINITIONS ________________________________________________________________
35 } SET_REPPROP_PARAMS, *LPSET_REPPROP_PARAMS;
39 * PROTOTYPES _________________________________________________________________
43 BOOL CALLBACK Filesets_RepSites_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp);
44 void Filesets_RepSites_OnInitDialog (HWND hDlg, LPSET_REPPROP_PARAMS prp);
45 void Filesets_RepSites_OnSelect (HWND hDlg);
46 void Filesets_RepSites_OnDelete (HWND hDlg);
50 * ROUTINES ___________________________________________________________________
54 void Filesets_ShowReplication (HWND hDlg, LPIDENT lpiFileset, LPIDENT lpiTarget)
56 LPSET_REPPROP_INIT_PARAMS lpp = New (SET_REPPROP_INIT_PARAMS);
57 memset (lpp, 0x00, sizeof(SET_REPPROP_INIT_PARAMS));
58 lpp->lpiReq = lpiFileset;
60 StartTask (taskSET_REPPROP_INIT, g.hMain, lpp);
63 void Filesets_OnEndTask_ShowReplication (LPTASKPACKET ptp)
65 LPSET_REPPROP_INIT_PARAMS lpp = (LPSET_REPPROP_INIT_PARAMS)(ptp->lpUser);
67 TCHAR szSvrName[ cchNAME ];
68 TCHAR szAggName[ cchNAME ];
69 TCHAR szSetName[ cchNAME ];
70 lpp->lpiReq->GetServerName (szSvrName);
71 lpp->lpiReq->GetAggregateName (szAggName);
72 lpp->lpiReq->GetFilesetName (szSetName);
76 ErrorDialog (ptp->status, IDS_ERROR_REFRESH_FILESET_STATUS, TEXT("%s%s%s"), szSvrName, szAggName, szSetName);
78 else if (!lpp->lpiRW) // couldn't find RW fileset entry?
80 ErrorDialog (ptp->status, IDS_ERROR_NOT_REPLICATED, TEXT("%s"), szSetName);
85 if ((hCurrent = PropCache_Search (pcSET_REP, lpp->lpiRW)) != NULL)
91 LPSET_REPPROP_PARAMS prp = New (SET_REPPROP_PARAMS);
92 prp->lpiReq = lpp->lpiReq;
93 prp->lpiRW = lpp->lpiRW;
94 memcpy (&prp->fs, &lpp->fs, sizeof(lpp->fs));
96 LPTSTR pszTitle = FormatString (IDS_SET_REP_TITLE, TEXT("%s"), szSetName);
97 LPPROPSHEET psh = PropSheet_Create (pszTitle, FALSE);
98 psh->sh.dwFlags |= PSH_NOAPPLYNOW;
99 psh->fMadeCaption = TRUE;
101 if (PropSheet_AddTab (psh, IDS_SET_REPSITES_TAB, IDD_SET_REPSITES, (DLGPROC)Filesets_RepSites_DlgProc, (LPARAM)prp, TRUE, TRUE))
103 PropSheet_ShowModeless (psh);
112 BOOL CALLBACK Filesets_RepSites_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
114 if (HandleColumnNotify (hDlg, msg, wp, lp, &gr.viewRep))
117 if (AfsAppLib_HandleHelp (IDD_SET_REPSITES, hDlg, msg, wp, lp))
120 if (msg == WM_INITDIALOG)
121 SetWindowLong (hDlg, DWL_USER, ((LPPROPSHEETPAGE)lp)->lParam);
123 if (msg == WM_INITDIALOG_SHEET)
125 PropCache_Add (pcSET_REP, ((LPSET_REPPROP_PARAMS)lp)->lpiRW, hDlg);
127 else if (msg == WM_DESTROY_SHEET)
129 PropCache_Delete (hDlg);
133 LPSET_REPPROP_PARAMS prp;
134 if ((prp = (LPSET_REPPROP_PARAMS)GetWindowLong (hDlg, DWL_USER)) != NULL)
139 FastList_SetTextCallback (GetDlgItem (hDlg, IDC_SET_REP_LIST), GetItemText, (DWORD)&gr.viewRep);
140 Filesets_RepSites_OnInitDialog (hDlg, prp);
141 NotifyMe (WHEN_SETS_CHANGE, NULL, hDlg, 0);
145 DontNotifyMeEver (hDlg);
146 SetWindowLong (hDlg, DWL_USER, 0);
151 if ((HWND)wp == GetDlgItem (hDlg, IDC_SET_REP_LIST))
153 HWND hList = GetDlgItem (hDlg, IDC_SET_REP_LIST);
156 ptScreen.x = LOWORD(lp);
157 ptScreen.y = HIWORD(lp);
161 ScreenToClient ((HWND)wp, &ptClient);
163 if (FL_HitTestForHeaderBar (hList, ptClient))
165 HMENU hm = TaLocale_LoadMenu (MENU_COLUMNS);
166 DisplayContextMenu (hm, ptScreen, hList);
171 case WM_COLUMNS_CHANGED:
173 hList = GetDlgItem (hDlg, IDC_SET_REP_LIST);
175 lpiSel = (LPIDENT)FL_GetSelectedData (hList);
176 FL_RestoreView (hList, &gr.viewRep);
177 UpdateDisplay_Replicas (FALSE, hList, prp->lpiRW, lpiSel);
188 case IDC_SET_REPSITE_ADD:
189 Filesets_CreateReplica (prp->lpiRW);
192 case IDC_SET_REPSITE_DELETE:
193 Filesets_RepSites_OnDelete (hDlg);
196 case IDC_SET_RELEASE:
197 Filesets_Release (prp->lpiRW);
202 case WM_NOTIFY_FROM_DISPATCH:
203 UpdateDisplay_Replicas (FALSE, GetDlgItem (hDlg, IDC_SET_REP_LIST), prp->lpiRW, prp->lpiReq);
204 Delete ((LPNOTIFYSTRUCT)lp);
208 switch (((LPNMHDR)lp)->code)
210 case FLN_COLUMNRESIZE:
211 FL_StoreView (GetDlgItem (hDlg, IDC_SET_REP_LIST), &gr.viewRep);
215 Filesets_RepSites_OnSelect (hDlg);
227 static LONG procRepSitesList = 0;
229 LRESULT CALLBACK Filesets_RepSites_SubclassListProc (HWND hList, UINT msg, WPARAM wp, LPARAM lp)
233 if (procRepSitesList == 0)
234 rc = DefWindowProc (hList, msg, wp, lp);
236 rc = CallWindowProc ((WNDPROC)procRepSitesList, hList, msg, wp, lp);
241 if (procRepSitesList != 0)
242 SetWindowLong (hList, GWL_WNDPROC, procRepSitesList);
249 ShowColumnsDialog (GetParent (hList), &gr.viewRep);
259 void Filesets_RepSites_OnInitDialog (HWND hDlg, LPSET_REPPROP_PARAMS prp)
261 HWND hList = GetDlgItem (hDlg, IDC_SET_REP_LIST);
262 if (procRepSitesList == 0)
263 procRepSitesList = GetWindowLong (hList, GWL_WNDPROC);
264 SetWindowLong (hList, GWL_WNDPROC, (LONG)Filesets_RepSites_SubclassListProc);
266 TCHAR szServer[ cchNAME ];
267 TCHAR szFileset[ cchNAME ];
268 TCHAR szAggregate[ cchNAME ];
269 prp->lpiRW->GetServerName (szServer);
270 prp->lpiRW->GetAggregateName (szAggregate);
271 prp->lpiRW->GetFilesetName (szFileset);
272 SetDlgItemText (hDlg, IDC_SET_SERVER, szServer);
273 SetDlgItemText (hDlg, IDC_SET_AGGREGATE, szAggregate);
274 SetDlgItemText (hDlg, IDC_SET_NAME, szFileset);
276 FL_RestoreView (GetDlgItem (hDlg, IDC_SET_REP_LIST), &gr.viewRep);
277 UpdateDisplay_Replicas (FALSE, GetDlgItem (hDlg, IDC_SET_REP_LIST), prp->lpiRW, prp->lpiReq);
281 void Filesets_RepSites_OnSelect (HWND hDlg)
283 LPIDENT lpiSelected = (LPIDENT)FL_GetSelectedData (GetDlgItem (hDlg, IDC_SET_REP_LIST));
284 EnableWindow (GetDlgItem (hDlg, IDC_SET_REPSITE_DELETE), (lpiSelected != NULL));
288 void Filesets_RepSites_OnDelete (HWND hDlg)
290 LPIDENT lpiSelected = (LPIDENT)FL_GetSelectedData (GetDlgItem (hDlg, IDC_SET_REP_LIST));
292 Filesets_Delete (lpiSelected);