import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
++import eu.etaxonomy.cdm.model.taxon.TaxonNode;
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
import eu.etaxonomy.taxeditor.editor.CdmDataTransfer;
import eu.etaxonomy.taxeditor.editor.EditorUtil;
import eu.etaxonomy.taxeditor.model.TaxeditorPartService;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
import eu.etaxonomy.taxeditor.preference.Resources;
++import eu.etaxonomy.taxeditor.security.RequiredPermissions;
++import eu.etaxonomy.taxeditor.store.CdmStore;
++import eu.etaxonomy.taxeditor.store.StoreUtil;
/**
* <p>
"There should always be a selected object.");
}
getSelectedContainer().setSelected();
++
++ // check permissions
++ TaxonNode taxonNode = ((TaxonEditorInput)getEditorInput()).getTaxonNode();
++ boolean doEnable = CdmStore.currentAuthentiationHasPermission(taxonNode, RequiredPermissions.TAXONNODE_EDIT);
++ if(!doEnable){
++ setDisabled();
++ }
}
/** {@inheritDoc} */
getSite().setSelectionProvider(simpleSelectionProvider);
}
++
/**
*
*/
allGroups.add(getAcceptedGroup());
-- List<HomotypicalSynonymGroup> grps = getHeterotypicSynonymGroups();
++// List<HomotypicalSynonymGroup> grps = getHeterotypicSynonymGroups(); // UNUSED => remove
heterotypicSynonymGroups = getHeterotypicSynonymGroups();
}
return getAcceptedNameContainer();
}
++
++ /* (non-Javadoc)
++ * @see eu.etaxonomy.taxeditor.editor.IMultiPageTaxonEditorPage#setOnError()
++ */
++ public void setOnError() {
++ Color disabledColor = StoreUtil.getColor(Resources.COLOR_EDITOR_ERROR);
++ setDisabled(disabledColor);
++ }
++ /* (non-Javadoc)
++ * @see eu.etaxonomy.taxeditor.editor.IMultiPageTaxonEditorPage#setDisabled()
++ */
@Override
public void setDisabled(){
++ Color disabledColor = StoreUtil.getColor(Resources.COLOR_TEXT_DISABLED_BACKGROUND);
++ setDisabled(disabledColor);
++ }
++
++ protected void setDisabled(Color disabledColor) {
++
for(AbstractGroupedContainer groupedContainer : getGroupedContainers()){
groupedContainer.setDisabled(true);
}
-- // send an empty selection to the current provider
++ // send an empty selection to the current provider - TODO only on error ???
getManagedForm().setInput(null);
-- // coloring the widgets
--
-- // TODO move this to resources and make configurable via Preferences
-- Color disabledColor = Display.getDefault().getSystemColor(SWT.COLOR_RED);
--
for(AbstractGroupedContainer groupedContainer : getGroupedContainers()){
groupedContainer.setBackground(disabledColor);
}
@Override
public void setEnabled(boolean enabled) {
++ //FIXME this method seems incomplete
for(AbstractGroupedContainer groupedContainer : getGroupedContainers()){
groupedContainer.setEnabled(getManagedForm().setInput(selection));
}
focusListener = new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
-- if(disabled){
++ if(!enabled){
return;
}
for (AbstractGroupedContainer container : getEditor()
private boolean enabled;
-- private boolean disabled;
--
/**
* nonEditableInfo is a label displayed underneath a GroupedComposite's
* input field. For instance, NameComposites display things like name
}
public void setDisabled(boolean disabled) {
-- this.disabled = disabled;
-- setEnabled(disabled);
++ this.enabled = !disabled;
++ setEnabled(enabled);
}
public void setEnabled(boolean enabled) {
Color color = enabled ? control.getForeground() : EditorUtil.getColor(Resources.COLOR_DISABLED_EDITOR);
getNameViewer().getTextWidget().setEditable(enabled);
++ getNameViewer().getTextWidget().setEnabled(enabled);
getNameViewer().getTextWidget().setForeground(color);
}
-- public boolean getEnabled(){
++ public boolean isEnabled(){
return enabled;
}
}
*/
/** {@inheritDoc} */
public StyledString getStyledText(Object element) {
- return new StyledString(getText(element));
+ // determine style base on user grants
+ Styler styler = null;
+ if(!CdmStore.currentAuthentiationHasPermission((CdmBase)element, RequiredPermissions.TAXONNODE_EDIT)){
+ styler = getNotGrantedStyler();
- }
++ }
+ return new StyledString(getText(element), styler);
+
+ }
+
+ /**
+ * @return
+ */
+ private Styler getNotGrantedStyler() {
+ if (notGrantedStyler == null) {
+ notGrantedStyler = new Styler() {
+ @Override
+ public void applyStyles(TextStyle textStyle) {
+ textStyle.underline = false;
+ textStyle.foreground = StoreUtil.getColor(Resources.COLOR_TEXT_DISABLED);
+ }
+ };
+ }
+ return notGrantedStyler;
}
}
--- /dev/null
+/**
+ *
+ */
+package eu.etaxonomy.taxeditor.security;
+
+import java.util.EnumSet;
+
+import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
+import eu.etaxonomy.cdm.persistence.hibernate.permission.Operation;
+
+/**
+ * Provides the required permissions a user would need in order to view or edit a
+ * specific cdm type.
+ *
+ * @author andreas kohlbecker
+ *
+ */
+public class RequiredPermissions {
+
+ public static final EnumSet<CRUD> TAXONNODE_EDIT = Operation.UPDATE;
+
++ public static final EnumSet<CRUD> TAXON_EDIT = Operation.UPDATE;
++
++ public static final EnumSet<CRUD> DESCRIPTION_EDIT = Operation.UPDATE;
++
+
+}