merge-update from trunk
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / group / grantedauthority / CRUDOperationChooser.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9 package eu.etaxonomy.taxeditor.ui.group.grantedauthority;
10
11 import org.eclipse.swt.SWT;
12 import org.eclipse.swt.events.MouseAdapter;
13 import org.eclipse.swt.events.MouseEvent;
14 import org.eclipse.swt.events.MouseTrackAdapter;
15 import org.eclipse.swt.layout.RowLayout;
16 import org.eclipse.swt.widgets.Button;
17 import org.eclipse.swt.widgets.Composite;
18 import org.eclipse.swt.widgets.Display;
19
20 import eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl;
21 import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
22 import eu.etaxonomy.cdm.persistence.hibernate.permission.CdmAuthority;
23 import eu.etaxonomy.cdm.persistence.hibernate.permission.Operation;
24
25
26 /**
27 * Widget for editing {@link Operation} objects, consisting of 4 checkboxes for CREATE, UPDATE, READ, DELETE operations.
28 *
29 * @author cmathew
30 * @created Mar 28, 2013
31 *
32 */
33 public class CRUDOperationChooser extends Composite {
34
35 private Button createCheckButton;
36 private Button readCheckButton;
37 private Button deleteCheckButton;
38 private Button updateCheckButton;
39
40 private CdmAuthorityRow caRow;
41 private GrantedAuthorityImpl grantedAuthorityI;
42 private CdmAuthority cdmAuthority;
43 private CdmAuthorityCompositeViewer viewer;
44
45 /**
46 * Create the composite.
47 * @param parent
48 * @param style
49 */
50 public CRUDOperationChooser(final CdmAuthorityRow parent, int style) {
51 super(parent, style);
52 setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
53 RowLayout rowLayout = new RowLayout(SWT.HORIZONTAL);
54 rowLayout.justify = true;
55 setLayout(rowLayout);
56
57
58 this.caRow = parent;
59 createCheckButton = new Button(this, SWT.CHECK);
60 createCheckButton.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_WIDGET_DARK_SHADOW));
61 createCheckButton.addMouseListener(new MouseAdapter() {
62 @Override
63 public void mouseUp(MouseEvent arg0) {
64 if(cdmAuthority.getOperation() != null) {
65 if(createCheckButton.getSelection()) {
66 cdmAuthority.getOperation().add(CRUD.CREATE);
67 } else {
68 cdmAuthority.getOperation().remove(CRUD.CREATE);
69 }
70 if(viewer != null) {
71 grantedAuthorityI = viewer.updateGrantedAuthority(grantedAuthorityI, cdmAuthority);
72 parent.setDirty(true);
73 }
74
75 }
76 }
77 });
78 createCheckButton.setText("C");
79
80 readCheckButton = new Button(this, SWT.CHECK);
81 readCheckButton.addMouseTrackListener(new MouseTrackAdapter() {
82 @Override
83 public void mouseHover(MouseEvent arg0) {
84 }
85 });
86 readCheckButton.addMouseListener(new MouseAdapter() {
87 @Override
88 public void mouseUp(MouseEvent arg0) {
89 if(cdmAuthority.getOperation() != null) {
90 if(readCheckButton.getSelection()) {
91 cdmAuthority.getOperation().add(CRUD.READ);
92 } else {
93 cdmAuthority.getOperation().remove(CRUD.READ);
94 }
95 if(viewer != null) {
96 grantedAuthorityI = viewer.updateGrantedAuthority(grantedAuthorityI, cdmAuthority);
97 parent.setDirty(true);
98 }
99
100 }
101
102 }
103 });
104 readCheckButton.setText("R");
105
106 deleteCheckButton = new Button(this, SWT.CHECK);
107 deleteCheckButton.addMouseListener(new MouseAdapter() {
108 @Override
109 public void mouseUp(MouseEvent arg0) {
110 if(cdmAuthority.getOperation() != null) {
111 if(deleteCheckButton.getSelection()) {
112 cdmAuthority.getOperation().add(CRUD.DELETE);
113 } else {
114 cdmAuthority.getOperation().remove(CRUD.DELETE);
115 }
116 if(viewer != null) {
117 grantedAuthorityI = viewer.updateGrantedAuthority(grantedAuthorityI, cdmAuthority);
118 parent.setDirty(true);
119 }
120
121 }
122 }
123 });
124 deleteCheckButton.setText("D");
125
126 updateCheckButton = new Button(this, SWT.CHECK);
127 updateCheckButton.addMouseListener(new MouseAdapter() {
128 @Override
129 public void mouseUp(MouseEvent arg0) {
130 if(cdmAuthority.getOperation() != null) {
131 if(updateCheckButton.getSelection()) {
132 cdmAuthority.getOperation().add(CRUD.UPDATE);
133 } else {
134 cdmAuthority.getOperation().remove(CRUD.UPDATE);
135 }
136 if(viewer != null) {
137 grantedAuthorityI = viewer.updateGrantedAuthority(grantedAuthorityI, cdmAuthority);
138 parent.setDirty(true);
139 }
140
141 }
142 }
143 });
144 updateCheckButton.setText("U");
145 updateView();
146 }
147
148
149 @Override
150 protected void checkSubclass() {
151 // Disable the check that prevents subclassing of SWT components
152 }
153
154 /**
155 * Set viewer, CDM Authority and corresponding GrantedAuthorityImpl object
156 *
157 * @param viewer
158 * @param grantedAuthorityI
159 * @param cdmAuthority
160 */
161 public void setAuthority(CdmAuthorityCompositeViewer viewer,
162 GrantedAuthorityImpl grantedAuthorityI,
163 CdmAuthority cdmAuthority) {
164 this.grantedAuthorityI = grantedAuthorityI;
165 this.cdmAuthority = cdmAuthority;
166 this.viewer = viewer;
167 updateView();
168 }
169
170
171
172 /**
173 * Update widget state.
174 */
175 private void updateView() {
176 createCheckButton.setSelection(false);
177 readCheckButton.setSelection(false);
178 deleteCheckButton.setSelection(false);
179 updateCheckButton.setSelection(false);
180
181
182 if(cdmAuthority!= null && cdmAuthority.getOperation() != null) {
183 if(cdmAuthority.getOperation().contains(CRUD.CREATE)) {
184 createCheckButton.setSelection(true);
185 }
186 if(cdmAuthority.getOperation().contains(CRUD.READ)) {
187 readCheckButton.setSelection(true);
188 }
189 if(cdmAuthority.getOperation().contains(CRUD.DELETE)) {
190 deleteCheckButton.setSelection(true);
191 }
192 if(cdmAuthority.getOperation().contains(CRUD.UPDATE)) {
193 updateCheckButton.setSelection(true);
194 }
195
196 }
197 }
198
199 }