37ff78a1a8e88c6391a21e28937aad641f4291df
[openafs.git] / src / WINNT / client_exp / add_acl_entry_dlg.cpp
1 /*
2  * Copyright 2000, International Business Machines Corporation and others.
3  * All Rights Reserved.
4  * 
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
8  */
9
10 extern "C" {
11 #include <afs/param.h>
12 #include <afs/stds.h>
13 }
14
15 #include "stdafx.h"
16 #include "afs_shl_ext.h"
17 #include "add_acl_entry_dlg.h"
18 #include "set_afs_acl.h"
19 #include "msgs.h"
20
21 #ifdef _DEBUG
22 #define new DEBUG_NEW
23 #undef THIS_FILE
24 static char THIS_FILE[] = __FILE__;
25 #endif
26
27 /////////////////////////////////////////////////////////////////////////////
28 // CAddAclEntryDlg dialog
29
30
31 CAddAclEntryDlg::CAddAclEntryDlg(CWnd* pParent /*=NULL*/)
32         : CDialog()
33 {
34         InitModalIndirect (TaLocale_GetDialogResource (CAddAclEntryDlg::IDD), pParent);
35
36         //{{AFX_DATA_INIT(CAddAclEntryDlg)
37         //}}AFX_DATA_INIT
38
39         m_pAclSetDlg = 0;
40 }
41
42
43 void CAddAclEntryDlg::DoDataExchange(CDataExchange* pDX)
44 {
45         CDialog::DoDataExchange(pDX);
46         //{{AFX_DATA_MAP(CAddAclEntryDlg)
47         DDX_Control(pDX, IDOK, m_Ok);
48         DDX_Control(pDX, IDC_NAME, m_Name);
49         DDX_Control(pDX, IDC_ADD_NORMAL_ENTRY, m_NormalEntry);
50         DDX_Control(pDX, IDC_LOOKUP2, m_LookupPerm);
51         DDX_Control(pDX, IDC_LOCK2, m_LockPerm);
52         DDX_Control(pDX, IDC_WRITE, m_WritePerm);
53         DDX_Control(pDX, IDC_ADMINISTER, m_AdminPerm);
54         DDX_Control(pDX, IDC_READ, m_ReadPerm);
55         DDX_Control(pDX, IDC_INSERT, m_InsertPerm);
56         DDX_Control(pDX, IDC_DELETE, m_DeletePerm);
57         //}}AFX_DATA_MAP
58 }
59
60
61 BEGIN_MESSAGE_MAP(CAddAclEntryDlg, CDialog)
62         //{{AFX_MSG_MAP(CAddAclEntryDlg)
63         ON_BN_CLICKED(IDC_ADD_NEGATIVE_ENTRY, OnAddNegativeEntry)
64         ON_BN_CLICKED(IDC_ADD_NORMAL_ENTRY, OnAddNormalEntry)
65         ON_EN_CHANGE(IDC_NAME, OnChangeName)
66         ON_BN_CLICKED(IDHELP, OnHelp)
67         //}}AFX_MSG_MAP
68 END_MESSAGE_MAP()
69
70 /////////////////////////////////////////////////////////////////////////////
71 // CAddAclEntryDlg message handlers
72
73 void CAddAclEntryDlg::OnAddNegativeEntry() 
74 {
75         m_bNormal = FALSE;
76 }
77
78 void CAddAclEntryDlg::OnAddNormalEntry() 
79 {
80         m_bNormal = TRUE;
81 }
82
83 BOOL CAddAclEntryDlg::OnInitDialog() 
84 {
85         CDialog::OnInitDialog();
86
87         ASSERT_VALID(m_pAclSetDlg);
88
89         m_NormalEntry.SetCheck(CHECKED);
90         m_Ok.EnableWindow(FALSE);
91
92         m_Name.SetFocus();
93
94         m_bNormal = TRUE;
95         
96         return TRUE;  // return TRUE unless you set the focus to a control
97                       // EXCEPTION: OCX Property Pages should return FALSE
98 }
99
100 CString CAddAclEntryDlg::MakePermString()
101 {
102         CString str;
103
104         if (m_ReadPerm.GetCheck() == CHECKED)
105                 str += "r";
106         if (m_LookupPerm.GetCheck() == CHECKED)
107                 str += "l";
108         if (m_InsertPerm.GetCheck() == CHECKED)
109                 str += "i";
110         if (m_DeletePerm.GetCheck() == CHECKED)
111                 str += "d";
112         if (m_WritePerm.GetCheck() == CHECKED)
113                 str += "w";
114         if (m_LockPerm.GetCheck() == CHECKED)
115                 str += "k";
116         if (m_AdminPerm.GetCheck() == CHECKED)
117                 str += "a";
118
119         return str;
120 }
121
122 void CAddAclEntryDlg::OnOK() 
123 {
124         m_Rights = MakePermString();
125         m_Name.GetWindowText(m_strName);
126
127         if (m_pAclSetDlg->IsNameInUse(m_bNormal, m_strName)) {
128                 ShowMessageBox(IDS_ACL_ENTRY_NAME_IN_USE, MB_ICONEXCLAMATION, IDS_ACL_ENTRY_NAME_IN_USE);
129                 return;
130         }
131
132         CDialog::OnOK();
133 }
134
135 void CAddAclEntryDlg::OnChangeName() 
136 {
137         m_Name.GetWindowText(m_strName);
138
139         if (m_strName.GetLength() > 0)
140                 m_Ok.EnableWindow(TRUE);
141 }
142
143 void CAddAclEntryDlg::OnHelp() 
144 {
145         ShowHelp(m_hWnd, ADD_ACL_ENTRY_HELP_ID);
146 }
147