eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/datasource/wizard/CdmDataSourceSQLServerWizardPage.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/datasource/wizard/CdmDataSourceTypeSelectionWizardPage.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/datasource/wizard/CdmDataSourceWizard.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/ISecuredEditor.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/UsageTermCollection.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/DefinedTermDragListener.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/DefinedTermDropAdapter.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewCollectionWizard.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewDerivedUnitBaseWizard.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewFieldObservationWizard.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewGrantedAuthorityWizard.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewGroupWizard.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewInstitutionWizard.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewNonViralNameWizard.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/TaxonRelationshipTypeMenuPreferences.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/VocabularyTermWizard.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/VocabularyTermWizardPage.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/security/RequiredPermissions.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStore.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStoreConnector.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/ContextManager.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/FeatureSelectionDialog.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/FeatureTreeSelectionDialog.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/FieldObservationSelectionDialog.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/GrantedAuthoritySelectionDialog.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/GroupSelectionDialog.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/InstitutionSelectionDialog.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/NameSelectionDialog.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/operation/ChangeDescriptionElementType.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/FeatureDistributionDetailElement.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/FeatureDistributionDetailSection.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/group/GrantedAuthorityDetailElement.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/group/GrantedAuthorityDetailSection.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/grantedAuthority/GrantedAuthorityCollectionElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/grantedAuthority/GrantedAuthorityDetailElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/grantedAuthority/GrantedAuthorityDetailSection.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/grantedAuthority/GrantedAuthorityDetailWizardPage.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/group/GroupDetailElement.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/group/GroupDetailSection.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/group/GroupDetailWizardPage.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/group/GroupSelectionElement.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/group/MemberDetailElement.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/group/MemberDetailSection.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/GeographicalScopeDetailSection.java -text
eu.etaxonomy.taxeditor.application/target
eu.etaxonomy.taxeditor.bulkeditor/.settings
eu.etaxonomy.taxeditor.bulkeditor/target
+eu.etaxonomy.taxeditor.cdmlib/.directory
eu.etaxonomy.taxeditor.cdmlib/.settings
eu.etaxonomy.taxeditor.cdmlib/cdmlib-*.jar
eu.etaxonomy.taxeditor.cdmlib/cdmlib-*.zip
}
private int authenticate(){
- Shell shell = TaxonomicEditorPlugin.getDefault().getWorkbench()
- .getActiveWorkbenchWindow().getShell();
+ Shell shell = TaxonomicEditorPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getShell();
LoginDialog loginDialog = new LoginDialog(shell);
return loginDialog.open();
org.hibernate.type,
org.hibernate.event,
eu.etaxonomy.cdm.model.common",
+ eu.etaxonomy.cdm.persistence.hibernate.permission,
eu.etaxonomy.cdm.persistence.query;uses:="org.hibernate,org.hibernate.envers.query,org.hibernate.criterion",
eu.etaxonomy.cdm.print,
eu.etaxonomy.cdm.print.out,
<artifactId>cdmlib-ext</artifactId>\r
<version>${cdmlib.version}</version>\r
</dependency>\r
+ <!-- for ikey-plus \r
+ TODO this should not be needed but the utils class contained in this jar \r
+ seems to be loaded as bean by spring\r
+ -->\r
+ <dependency>\r
+ <groupId>identificationKeyAPI</groupId>\r
+ <artifactId>identificationKeyAPI</artifactId>\r
+ <version>1.0-SNAPSHOT</version>\r
+ </dependency>\r
</dependencies>\r
</project>\r
public boolean isRedrawing();
/**
+ * Sets the editor page into enabled or disabled state depending on the
+ * value of the supplied parameter <code>enabled</code>.
*
* @param enabled
*/
public void setEnabled(boolean enabled);
/**
- *
+ * Sets the editor page into disabled state and changes the
+ * appearance accordingly.
*/
void setDisabled();
+ /**
+ * Sets the editor page into disabled state and changes the
+ * appearance in order to indicate that an error has occurred.
+ */
+ public void setOnError();
+
}
*/
public class MultiPageTaxonEditor extends FormEditor implements
IConversationEnabled, IPostOperationEnabled,
- IDirtyMarkableSelectionProvider, IPartContentHasDetails {
+ IDirtyMarkableSelectionProvider, IPartContentHasDetails, ISecuredEditor {
/** Constant <code>ID="eu.etaxonomy.taxeditor.editor.taxon"{trunked}</code> */
public static final String ID = "eu.etaxonomy.taxeditor.editor.taxon";
getClass(),
"An error occurred while saving the editor. Please close and reopen the taxon again.",
e);
- disableEditor();
+ disableEditor(true);
} finally {
monitor.done();
}
}
- private void disableEditor() {
+ private void disableEditor(boolean isOnError) {
for (IMultiPageTaxonEditorPage editorPage : getPages()) {
- editorPage.setDisabled();
+ if(isOnError){
+ editorPage.setOnError();
+ }else {
+ editorPage.setDisabled();
+ }
}
conversation.unregisterForDataStoreChanges(this);
conversation.close();
public String toString() {
return String.format("%s[%s]", this.getClass().getSimpleName(), getEditorInput());
}
+
+ @Override
+ public boolean permissionsSatisfied() {
+ IEditorPart activeEditor = getActiveEditor();
+ if(activeEditor != null && ISecuredEditor.class.isAssignableFrom(activeEditor.getClass())){
+ return ((ISecuredEditor)activeEditor).permissionsSatisfied();
+ }
+ return true;
+ }
}
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.editor.IDropTargetable;
import eu.etaxonomy.taxeditor.editor.IMultiPageTaxonEditorPage;
+import eu.etaxonomy.taxeditor.editor.ISecuredEditor;
import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
import eu.etaxonomy.taxeditor.editor.SimpleSelectionProvider;
import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
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>
public class TaxonNameEditor extends EditorPart implements
IMultiPageTaxonEditorPage, IAdaptable, IConversationEnabled,
IPostOperationEnabled, IPartContentHasDetails, IPartChangeListener,
- ISelectionListener, IDropTargetable {
+ ISelectionListener, IDropTargetable, ISecuredEditor {
/** Constant <code>ID="eu.etaxonomy.taxeditor.editor.taxon.name"</code> */
public static final String ID = "eu.etaxonomy.taxeditor.editor.taxon.name";
"There should always be a selected object.");
}
getSelectedContainer().setSelected();
+
+ // check permissions
+ boolean doEnable = permissionsSatisfied();
+ setEnabled(doEnable);
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.editor.name.ISecuredEditorPart#permissionsSatisfied()
+ */
+ @Override
+ public boolean permissionsSatisfied() {
+ TaxonNode taxonNode = ((TaxonEditorInput)getEditorInput()).getTaxonNode();
+ boolean doEnable = CdmStore.currentAuthentiationHasPermission(taxonNode, RequiredPermissions.TAXONNODE_EDIT);
+ return doEnable;
}
/** {@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);
+ setEnabled(false, disabledColor);
+ }
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.editor.IMultiPageTaxonEditorPage#setDisabled()
+ */
@Override
public void setDisabled(){
+ Color disabledColor = StoreUtil.getColor(Resources.COLOR_TEXT_DISABLED_BACKGROUND);
+ setEnabled(false);
+ }
+
+ protected void setEnabled(boolean enabled, Color background) {
+
for(AbstractGroupedContainer groupedContainer : getGroupedContainers()){
- groupedContainer.setDisabled(true);
+ groupedContainer.setEnabled(enabled);
}
- // 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);
+ groupedContainer.setBackground(background);
}
- getControl().setBackground(disabledColor);
+ getControl().setBackground(background);
}
@Override
public void setEnabled(boolean enabled) {
- for(AbstractGroupedContainer groupedContainer : getGroupedContainers()){
- groupedContainer.setEnabled(getManagedForm().setInput(selection));
- }
-
- // send an empty selection to the current provider
- getManagedForm().setInput(null);
+ Color background = StoreUtil.getColor(enabled ? Resources.COLOR_COMPOSITE_BACKGROUND : Resources.COLOR_TEXT_DISABLED_BACKGROUND);
+ setEnabled(enabled, background);
}
}
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;
}
}
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
+import java.util.Observable;
+import java.util.Observer;
import java.util.Set;
import java.util.UUID;
import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.LoginManager;
/**
* Taxonomic tree implementation using Common Navigator Framework.
* @version 1.0
*/
public class TaxonNavigator extends CommonNavigator implements
- IPostOperationEnabled, IConversationEnabled {
+ IPostOperationEnabled, IConversationEnabled, Observer {
/**
* Constant
conversation = CdmStore.createConversation();
conversation.registerForDataStoreChanges(TaxonNavigator.this);
}
+ CdmStore.getLoginManager().addObserver(this);
}
/**
* Refresh this navigators viewer
*/
public void refresh() {
- getConversationHolder().bind();
+ if(getConversationHolder() != null){
+ getConversationHolder().bind();
+ }
getCommonViewer().refresh();
}
}
}
}
+
+
+ /* (non-Javadoc)
+ * @see java.util.Observer#update(java.util.Observable, java.lang.Object)
+ */
+ @Override
+ public void update(Observable o, Object arg) {
+ if(o instanceof LoginManager){
+ refresh();
+ }
+
+ }
}
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.StyledString;
import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;
+import org.eclipse.jface.viewers.StyledString.Styler;
+import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.TextStyle;
import org.eclipse.ui.navigator.IDescriptionProvider;
import org.hibernate.LazyInitializationException;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.model.common.CdmBase;
import eu.etaxonomy.cdm.model.common.IIdentifiableEntity;
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.persistence.hibernate.permission.Operation;
import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
+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>TaxonNodeLabelProvider class.</p>
public class TaxonNodeLabelProvider extends ColumnLabelProvider
implements ILabelProvider, IDescriptionProvider, IStyledLabelProvider {
+
+ private Styler notGrantedStyler = null;
+
/** {@inheritDoc} */
@Override
public Image getImage(Object element) {
*/
/** {@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;
}
}
eu.etaxonomy.taxeditor.preference.matching,
eu.etaxonomy.taxeditor.preference.menu,
eu.etaxonomy.taxeditor.preference.wizard,
+ eu.etaxonomy.taxeditor.security,
eu.etaxonomy.taxeditor.store,
eu.etaxonomy.taxeditor.store.internal,
eu.etaxonomy.taxeditor.store.operations,
locationURI="menu:org.eclipse.ui.main.menu.file?after=eu.etaxonomy.taxeditor.application.filemenu.io">
<command
commandId="eu.etaxonomy.taxeditor.store.operations.showLoginWindow"
- label="Login"
+ label="Switch User"
style="push">
</command>
<separator
label="Disabled Name Editor Field"
value="105,114,124">
</colorDefinition>
+ <colorDefinition
+ categoryId="eu.etaxonomy.taxeditor.preferences.themeElementCategory"
+ id="eu.etaxonomy.taxeditor.preferences.colorDefinition.editorError"
+ label="Editor On Error"
+ value="255,0,0">
+ </colorDefinition>
</extension>
<extension
point="org.eclipse.core.expressions.propertyTesters">
--- /dev/null
+package eu.etaxonomy.taxeditor.editor;
+
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+
+public interface ISecuredEditor {
+
+ /**
+ *
+ * @return true if the current authentication (= {@link User}) has sufficient
+ * privileges to edit the {@link Taxon} or {@link TaxonNode}
+ */
+ public abstract boolean permissionsSatisfied();
+
+}
\ No newline at end of file
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.taxeditor.newWizard;
+
+import eu.etaxonomy.cdm.api.service.IGrantedAuthorityService;
+import eu.etaxonomy.cdm.api.service.IGroupService;
+import eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.section.grantedAuthority.GrantedAuthorityDetailWizardPage;
+import eu.etaxonomy.taxeditor.ui.section.group.GroupDetailWizardPage;
+
+/**
+ * @author a.kohlbecker
+ * @created Sept 13 2012
+ */
+public class NewGrantedAuthorityWizard extends AbstractNewEntityWizard<GrantedAuthorityImpl> {
+
+ private GrantedAuthorityDetailWizardPage authorityPage;
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.wizard.Wizard#addPages()
+ */
+ @Override
+ public void addPages() {
+ authorityPage = new GrantedAuthorityDetailWizardPage(formFactory, getConversationHolder(), getEntity());
+ super.addPage(authorityPage);
+ }
+
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard#saveEntity()
+ */
+ @Override
+ protected void saveEntity() {
+ CdmStore.getService(IGrantedAuthorityService.class).saveOrUpdate(getEntity());
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard#createNewEntity()
+ */
+ @Override
+ protected GrantedAuthorityImpl createNewEntity() {
+ return GrantedAuthorityImpl.NewInstance();
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard#getEntityName()
+ */
+ @Override
+ protected String getEntityName() {
+ return "GrantedAuthority";
+ }
+}
public static final String COLOR_DISABLED_EDITOR = "eu.etaxonomy.taxeditor.preferences.colorDefinition.disabledEditor";
+ public static final String COLOR_EDITOR_ERROR = "eu.etaxonomy.taxeditor.preferences.colorDefinition.editorError";
+
}
--- /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;
+
+
+}
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Type;
+import java.util.EnumSet;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.swt.widgets.Display;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
+import org.springframework.security.access.PermissionEvaluator;
import org.springframework.security.authentication.ProviderManager;
+import org.springframework.security.core.context.SecurityContext;
+import org.springframework.security.core.context.SecurityContextHolder;
import eu.etaxonomy.cdm.api.application.CdmApplicationController;
import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
import eu.etaxonomy.cdm.database.DbSchemaValidation;
import eu.etaxonomy.cdm.database.ICdmDataSource;
import eu.etaxonomy.cdm.ext.geo.IEditGeoService;
+import eu.etaxonomy.cdm.model.common.CdmBase;
import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
+import eu.etaxonomy.cdm.persistence.hibernate.permission.Operation;
import eu.etaxonomy.taxeditor.datasource.CdmDataSourceRepository;
import eu.etaxonomy.taxeditor.io.ExportManager;
import eu.etaxonomy.taxeditor.io.ImportManager;
}
/**
- * Generic method that will return an implementation of the given service
- * interface or <code>null</code> if the
+ * Generic method that will scan the getters of {@link ICdmApplicationConfiguration} for the given service
+ * interface. If a matching getter is found the according service implementation is returned by
+ * invoking the getter otherwise the method returns <code>null</code>.
*
* @param <T>
* @param serviceClass
- * @return
+ * @return the configured implementation of <code>serviceClass</code> or <code>null</code>
*/
public static <T extends IService> T getService(Class<T> serviceClass) {
ICdmApplicationConfiguration configuration = getCurrentApplicationConfiguration();
- Method[] methods = ICdmApplicationConfiguration.class
- .getDeclaredMethods();
+ Method[] methods = ICdmApplicationConfiguration.class.getDeclaredMethods();
T service = null;
public static ProviderManager getAuthenticationManager() {
return getCurrentApplicationConfiguration().getAuthenticationManager();
}
+
+ /**
+ * <p>
+ * getAuthenticationManager
+ * </p>
+ *
+ * @return a
+ * {@link PermissionEvaluator} object.
+ */
+ public static PermissionEvaluator getPermissionEvaluator() {
+ return getCurrentApplicationConfiguration().getPermissionEvaluator();
+ }
/**
* <p>
return (IEditGeoService) getCurrentApplicationConfiguration().getBean(
"editGeoService");
}
+
+ /*
+ * SECURITY RELATED CONVENIENCE METHODS
+ */
+
+ /**
+ * @see org.springframework.security.access.PermissionEvaluator#hasPermission(org.springframework.security.core.Authentication, java.lang.Object, java.lang.Object)
+ *
+ * @param targetDomainObject
+ * @param permission
+ * @return
+ */
+ public static boolean currentAuthentiationHasPermission(CdmBase targetDomainObject, EnumSet<CRUD> permission){
+ //TODO use getCurrentApplicationConfiguration().currentAuthentiationHasPermission(CdmBase targetDomainObject, Operation permission) instead
+ SecurityContext context = SecurityContextHolder.getContext();
+ return getPermissionEvaluator().hasPermission(context.getAuthentication(), targetDomainObject, permission);
+ }
/*
* LANGUAGE
public void update(CdmDataChangeMap changeEvents) {}
/**
- * Don't want to add a taxon or synonym to itself so filter the list to remove the taxon in question
- * so it is not available to add as a concept relation
+ * Don't want to add for example a taxon or synonym to itself
+ * so filter the list to remove the taxon in question
+ * (<code>cdmBaseToBeFiltered</code>)
+ * so it is not available in the filtered list.
*/
private void filterExcludedObjects() {
if (model != null && cdmBaseToBeFiltered != null) {
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.taxeditor.ui.dialog.selection;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import org.eclipse.swt.widgets.Shell;
+import org.springframework.security.core.GrantedAuthority;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.service.IGrantedAuthorityService;
+import eu.etaxonomy.cdm.api.service.IGroupService;
+import eu.etaxonomy.cdm.api.service.IUserService;
+import eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl;
+import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
+import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
+import eu.etaxonomy.taxeditor.newWizard.NewGrantedAuthorityWizard;
+import eu.etaxonomy.taxeditor.newWizard.NewGroupWizard;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * @author a.kohlbecker
+ * @created Sept 12, 2011
+ * @version 1.0
+ */
+public class GrantedAuthoritySelectionDialog extends AbstractFilteredCdmResourceSelectionDialog<GrantedAuthorityImpl> {
+
+ public static GrantedAuthority select(Shell shell, ConversationHolder conversation, GrantedAuthorityImpl authority){
+
+ GrantedAuthoritySelectionDialog dialog = new GrantedAuthoritySelectionDialog(shell, conversation,
+ "Choose Granted Authority", false, GrantedAuthoritySelectionDialog.class.getCanonicalName(), authority);
+
+ return getSelectionFromDialog(dialog);
+ }
+
+ /**
+ * @param shell
+ * @param conversation
+ * @param title
+ * @param multi
+ * @param settings
+ * @param cdmObject
+ */
+ protected GrantedAuthoritySelectionDialog(Shell shell,
+ ConversationHolder conversation, String title, boolean multi,
+ String settings, GrantedAuthorityImpl cdmObject) {
+ super(shell, conversation, title, multi, settings, cdmObject);
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.ui.dialogs.filteredSelection.AbstractFilteredCdmResourceSelectionDialog#initModel()
+ */
+ @Override
+ protected void initModel() {
+ List<GrantedAuthorityImpl> authorities = CdmStore.getService(IGrantedAuthorityService.class).list(GrantedAuthorityImpl.class, null, null, null, null);
+
+ model = new ArrayList<UuidAndTitleCache<GrantedAuthorityImpl>>();
+
+ for(GrantedAuthorityImpl authority : authorities){
+ model.add(new UuidAndTitleCache<GrantedAuthorityImpl>(GrantedAuthorityImpl.class, authority.getUuid(),String.format("%s", authority.getAuthority())));
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.ui.dialogs.filteredSelection.AbstractFilteredCdmResourceSelectionDialog#getNewWizardLinkText()
+ */
+ @Override
+ protected String getNewWizardLinkText() {
+ return "Create a new <A>GrantedAuthority</A>.";
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.ui.dialogs.filteredSelection.AbstractFilteredCdmResourceSelectionDialog#getNewEntityWizard(java.lang.String)
+ */
+ @Override
+ protected AbstractNewEntityWizard getNewEntityWizard(String parameter) {
+ return new NewGrantedAuthorityWizard();
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.ui.dialogs.filteredSelection.AbstractFilteredCdmResourceSelectionDialog#getPersistentObject(java.util.UUID)
+ */
+ @Override
+ protected GrantedAuthorityImpl getPersistentObject(UUID uuid) {
+ return CdmStore.getService(IGrantedAuthorityService.class).load(uuid);
+ }
+
+ @Override
+ protected String getTitle(GrantedAuthorityImpl authority) {
+ return authority != null ? authority.getAuthority() : "";
+ }
+
+}
import eu.etaxonomy.cdm.model.agent.Institution;
import eu.etaxonomy.cdm.model.agent.Person;
import eu.etaxonomy.cdm.model.agent.Team;
+import eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl;
import eu.etaxonomy.cdm.model.common.Group;
import eu.etaxonomy.cdm.model.common.ICdmBase;
import eu.etaxonomy.cdm.model.common.User;
if(clazz.equals(User.class)){
return (T) UserSelectionDialog.select(shell, conversation, (User) curentSelection);
}
+ if(clazz.equals(GrantedAuthorityImpl.class)){
+ return (T) GrantedAuthoritySelectionDialog.select(shell, conversation, (GrantedAuthorityImpl) curentSelection);
+ }
if (clazz.equals(Person.class)){
return (T) PersonSelectionDialog.select(shell, conversation, (Person) curentSelection);
}
import eu.etaxonomy.cdm.model.common.DefinedTermBase;
import eu.etaxonomy.cdm.model.common.DescriptionElementSource;
import eu.etaxonomy.cdm.model.common.Extension;
+import eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl;
import eu.etaxonomy.cdm.model.common.Group;
import eu.etaxonomy.cdm.model.common.ICdmBase;
import eu.etaxonomy.cdm.model.common.IDefinedTerm;
import eu.etaxonomy.taxeditor.ui.section.description.detail.TextDataDetailElement;
import eu.etaxonomy.taxeditor.ui.section.feature.FeatureDistributionDetailElement;
import eu.etaxonomy.taxeditor.ui.section.feature.FeatureDistributionDetailSection;
-import eu.etaxonomy.taxeditor.ui.section.group.GrantedAuthorityDetailElement;
-import eu.etaxonomy.taxeditor.ui.section.group.GrantedAuthorityDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.grantedAuthority.GrantedAuthorityCollectionElement;
+import eu.etaxonomy.taxeditor.ui.section.grantedAuthority.GrantedAuthorityDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.grantedAuthority.GrantedAuthorityDetailSection;
import eu.etaxonomy.taxeditor.ui.section.group.GroupDetailElement;
import eu.etaxonomy.taxeditor.ui.section.group.GroupDetailSection;
import eu.etaxonomy.taxeditor.ui.section.group.MemberDetailElement;
*
*/
public static enum DetailType {
- NONVIRALNAME,
- SCIENTIFICNAME,
- REFERENCEBASE,
- NOMENCLATURALREFERENCE,
- TAXONBASE,
AUTHORSHIP,
- TEAM,
- PERSON,
+ CLASSIFICATION,
+ COLLECTION,
+ DERIVED_UNIT,
+ DERIVED_UNIT_FACADE,
+ DERIVED_UNIT_GENERAL,
DESCRIPTION,
DESCRIPTIONELEMENT,
- PARSINGMESSAGE,
- NAMERELATIONSHIP,
- TEAMORPERSONBASE,
- MEDIA,
+ DETERMINATION,
+ FEATURE_DISTRIBUTION,
FIELD_OBSERVATION,
- DERIVED_UNIT_FACADE,
GATHERING_EVENT,
- DERIVED_UNIT,
+ GRANTEDAUTHORITY,
+ GROUP,
+ HYBRID,
+ INSTITUTION,
+ MEDIA,
+ NAMED_AREA,
+ NAMED_AREA_LEVEL,
+ NAMERELATIONSHIP,
NATURAL_LANGUAGE,
- FEATURE_DISTRIBUTION,
- CLASSIFICATION,
- TAXON_NODE,
- COLLECTION,
+ NOMENCLATURALREFERENCE,
+ NONVIRALNAME,
+ PARSINGMESSAGE,
+ PERSON,
POLYTOMOUS_KEY,
POLYTOMOUS_KEY_NODE,
- INSTITUTION,
- DERIVED_UNIT_GENERAL,
- HYBRID,
- USER,
- GROUP,
- DETERMINATION,
- TAXON_RELATIONSHIP,
+ REFERENCEBASE,
REFERENCED_ENTITY,
+ SCIENTIFICNAME,
+ TAXON_NODE,
+ TAXON_RELATIONSHIP,
+ TAXONBASE,
+ TEAM,
+ TEAMORPERSONBASE,
TERM_VOCABULARY,
- NAMED_AREA,
- NAMED_AREA_LEVEL,
- USE_RECORD
+ USE_RECORD,
+ USER
}
public AbstractFormSection createDefinedTermDetailSection(Class definedTermClass,
case GROUP:
element = new GroupDetailElement(this, parentElement);
break;
+ case GRANTEDAUTHORITY:
+ element = new GrantedAuthorityDetailElement(this, parentElement);
+ break;
case DETERMINATION:
element = new DeterminationDetailElement(this, parentElement);
break;
element = new MemberDetailElement(this, parentElement,
(User) entity, removeListener, style);
} else if (entity instanceof GrantedAuthority) {
- element = new GrantedAuthorityDetailElement(this, parentElement,
- (GrantedAuthority) entity, removeListener, style);
+ element = new GrantedAuthorityCollectionElement(this, parentElement,
+ (GrantedAuthorityImpl) entity, removeListener, style);
} else if (entity instanceof Group) {
element = new GroupsByUserDetailElement(this, parentElement,
(Group) entity, removeListener, style);
// $Id$
/**
-* Copyright (C) 2007 EDIT
+* Copyright (C) 2012 EDIT
* European Distributed Institute of Taxonomy
* http://www.e-taxonomy.eu
*
* See LICENSE.TXT at the top of this package for the full license terms.
*/
-package eu.etaxonomy.taxeditor.ui.section.group;
+package eu.etaxonomy.taxeditor.ui.section.grantedAuthority;
import org.eclipse.swt.events.SelectionListener;
-import org.springframework.security.core.GrantedAuthority;
+import org.eclipse.swt.graphics.Color;
+import eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl;
+import eu.etaxonomy.cdm.model.common.Group;
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
/**
- * @author n.hoffmann
- * @created Mar 9, 2011
- * @version 1.0
+ * @author a.kohlbecker
+ * @date Sept 12 2012
+ *
*/
-public class GrantedAuthorityDetailElement extends AbstractEntityCollectionElement<GrantedAuthority> {
+public class GrantedAuthorityCollectionElement extends AbstractEntityCollectionElement<GrantedAuthorityImpl> {
+
+ private EntitySelectionElement<GrantedAuthorityImpl> selection_authority;
- /**
- * @param formFactory
- * @param section
- * @param entity
- * @param removeListener
- * @param backgroundColor
- * @param style
- */
- public GrantedAuthorityDetailElement(CdmFormFactory formFactory,
- AbstractFormSection section, GrantedAuthority entity,
+
+ public GrantedAuthorityCollectionElement(CdmFormFactory formFactory,
+ AbstractFormSection section, GrantedAuthorityImpl entity,
SelectionListener removeListener, int style) {
- super(formFactory, section, entity, removeListener, null, style);
+ super(formFactory, section, entity, removeListener, null, style);
+ // TODO Auto-generated constructor stub
}
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement#setEntity(java.lang.Object)
*/
@Override
- public void setEntity(GrantedAuthority entity) {
- // TODO Auto-generated method stub
+ public void setEntity(GrantedAuthorityImpl entity) {
+ selection_authority.setEntity(entity);
}
/* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement#createControls(eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement, int)
+ * @see eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement#createControls(eu.etaxonomy.taxeditor.ui.element.ICdmFormElement, int)
*/
@Override
public void createControls(ICdmFormElement element, int style) {
- // TODO Auto-generated method stub
-
+ selection_authority = formFactory.createSelectionElement(
+ GrantedAuthorityImpl.class, getConversationHolder(), element, "", getEntity(), EntitySelectionElement.SELECTABLE, style);
}
/* (non-Javadoc)
*/
@Override
public void handleEvent(Object eventSource) {
- // TODO Auto-generated method stub
-
+ if (eventSource == selection_authority) {
+ setEntity(selection_authority.getEntity());
+ }
}
-
+
}
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.taxeditor.ui.section.grantedAuthority;
+
+import eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+
+/**
+ * @author n.hoffmann
+ * @author a.kohlbecker
+ * @created Mar 9, 2011
+ * @version 1.0
+ */
+public class GrantedAuthorityDetailElement extends AbstractCdmDetailElement<GrantedAuthorityImpl> {
+
+ private TextWithLabelElement text_authority;
+
+ /**
+ * @param formFactory
+ * @param formElement
+ */
+ public GrantedAuthorityDetailElement(CdmFormFactory formFactory,
+ ICdmFormElement formElement) {
+ super(formFactory, formElement);
+ }
+
+ @Override
+ protected void createControls(ICdmFormElement formElement,
+ GrantedAuthorityImpl entity, int style) {
+ text_authority = formFactory.createTextWithLabelElement(formElement, "Authority", entity.getAuthority(), style);
+
+ }
+
+ @Override
+ public void handleEvent(Object eventSource) {
+ if(eventSource == text_authority){
+ getEntity().setAuthority(text_authority.getText());
+ }
+
+ }
+
+
+
+}
* See LICENSE.TXT at the top of this package for the full license terms.
*/
-package eu.etaxonomy.taxeditor.ui.section.group;
+package eu.etaxonomy.taxeditor.ui.section.grantedAuthority;
import java.util.Collection;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.model.common.Group;
import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.dialog.selection.GrantedAuthoritySelectionDialog;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
*/
@Override
public GrantedAuthority createNewElement() {
- StoreUtil
- .warningDialog("Not implemented yet", getClass(),
- "This functionality needs to be implemented in CDM Library first.");
- // TODO GrantedAuthoritySelectionDialog.select(...);
- GrantedAuthority selection = null;
+// StoreUtil
+// .warningDialog("Not implemented yet", getClass(),
+// "This functionality needs to be implemented in CDM Library first.");
+
+ GrantedAuthority selection = GrantedAuthoritySelectionDialog.select(getLayoutComposite().getShell(), getConversationHolder(), null);
return selection;
}
*/
@Override
public String getEmptyString() {
- return "No Granted Athorities yet.";
+ return "No Granted Authorities yet.";
}
/*
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.ui.section.grantedAuthority;
+
+import org.eclipse.swt.SWT;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl;
+import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+
+/**
+ * @author a.kohlbecker
+ * @created Sept 13 2012
+ */
+public class GrantedAuthorityDetailWizardPage extends AbstractCdmEntityWizardPage<GrantedAuthorityImpl> {
+
+ public GrantedAuthorityDetailWizardPage(CdmFormFactory formFactory,
+ ConversationHolder conversation, GrantedAuthorityImpl entity) {
+ super(formFactory, conversation, entity);
+ setTitle("GrantedAuthority");
+ }
+
+ @Override
+ public AbstractCdmDetailElement<GrantedAuthorityImpl> createElement(
+ ICdmFormElement rootElement) {
+ GrantedAuthorityDetailElement authorityElement = (GrantedAuthorityDetailElement) formFactory.createCdmDetailElement(DetailType.GRANTEDAUTHORITY, rootElement, SWT.NULL);
+ authorityElement.setEntity(getEntity());
+ return authorityElement;
+ }
+
+}
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2012 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.ui.section.group;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.model.common.Group;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
+
+/**
+ * @author a.kohlbecker
+ *
+ */
+public class GroupSelectionElement extends EntitySelectionElement<Group> {
+
+ public GroupSelectionElement(CdmFormFactory formFactory,
+ ConversationHolder conversation, ICdmFormElement parentElement,
+ String labelString, Group entity, int mode,
+ int style) {
+ super(formFactory, conversation, parentElement, Group.class, labelString, entity,
+ mode, style);
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement#getTitle()
+ */
+ @Override
+ protected String getTitle() {
+ if (getEntity() != null) {
+ return getEntity().getName();
+ }
+ return super.getTitle();
+ }
+
+}
public void createControls(ICdmFormElement element, int style) {
selection_group = formFactory
.createSelectionElement(Group.class,
- getConversationHolder(), element, "Group", getEntity(),
+ getConversationHolder(), element, "", getEntity(),
EntitySelectionElement.NOTHING, style);
}
@Override
public void handleEvent(Object eventSource) {
if (eventSource == selection_group) {
-
+ setEntity(selection_group.getEntity());
}
}
}
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
+import org.springframework.security.core.GrantedAuthority;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.cdm.model.common.Group;
import eu.etaxonomy.cdm.model.common.ICdmBase;
import eu.etaxonomy.cdm.model.common.IIdentifiableEntity;
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
* @return a {@link java.lang.String} object.
*/
protected String getTitle() {
- if (entity != null && entity instanceof IIdentifiableEntity) {
- return ((IIdentifiableEntity) entity).getTitleCache();
+ if (entity != null){
+ if(entity instanceof IIdentifiableEntity) {
+ return ((IIdentifiableEntity) entity).getTitleCache();
+ } else if(entity instanceof Group){
+ return ((Group) entity).getName();
+ } else if(entity instanceof GrantedAuthority){
+ return ((GrantedAuthority) entity).getAuthority();
+ }
}
return "";
}
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IEditorPart;
+import eu.etaxonomy.taxeditor.editor.ISecuredEditor;
import eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider;
import eu.etaxonomy.taxeditor.store.StoreUtil;
public IEditorPart getEditor() {
return StoreUtil.getActiveEditor();
}
+
+ /** {@inheritDoc} */
+ @Override
+ public void setFocus() {
+ super.setFocus();
+
+ if(getEditor() != null && ISecuredEditor.class.isAssignableFrom(getEditor().getClass())){
+ boolean doEnable = ((ISecuredEditor)getEditor()).permissionsSatisfied();
+ setEnabled(doEnable);
+ }
+ }
/** {@inheritDoc} */
@Override
pageBook.showPage(viewerComposite);
}
+ public void setEnabled(boolean enabled){
+ pageBook.setEnabled(enabled);
+ }
/** {@inheritDoc} */
@Override
getConversationHolder(), parent, this, Section.TWISTIE
| Section.EXPANDED);
- formFactory.createHorizontalSeparator(parent, SWT.BORDER);
-
+// formFactory.createHorizontalSeparator(parent, SWT.BORDER);
+//
// GeographicalScopeDetailSection geographicalScopeDetailSection = (GeographicalScopeDetailSection) formFactory
// .createEntityDetailSection(EntityDetailType.GEOGRAPHICAL_SCOPE,
// getConversationHolder(), parent, Section.TWISTIE | Section.COMPACT);
// getConversationHolder(), parent, Section.TWISTIE | Section.COMPACT);
//
// formFactory.createHorizontalSeparator(parent, SWT.BORDER);
-
- TaxonomicScopeSection taxonomicScopeSection = (TaxonomicScopeSection) formFactory
- .createEntityDetailSection(EntityDetailType.TAXONOMIC_SCOPE,
- getConversationHolder(), parent, Section.TWISTIE | Section.COMPACT);
+//
+// TaxonomicScopeSection taxonomicScopeSection = (TaxonomicScopeSection) formFactory
+// .createEntityDetailSection(EntityDetailType.TAXONOMIC_SCOPE,
+// getConversationHolder(), parent, Section.TWISTIE | Section.COMPACT);
addPart(polytomousKeyDetailSection);
addPart(polytomousKeyNodeDetailSection);
// addPart(geographicalScopeDetailSection);
// addPart(scopeRestrictionSection);
- addPart(taxonomicScopeSection);
+// addPart(taxonomicScopeSection);
}