+
+ @Override
+ public void update(Observable o, Object arg){
+ if(o instanceof LoginManager){
+ updateControlStates();
+ }
+ }
+
+
+ protected void updateControlStates(){
+ Collection<Object> except = new ArrayList<Object>();
+ for(ICdmFormElement formElement:getElements()){
+ if(formElement instanceof IEnableableFormElement && !((IEnableableFormElement) formElement).isEnabled()){
+ except.add(formElement);
+ }
+ }
+ setEnabled(getEntity() != null && CdmStore.currentAuthentiationHasPermission(StoreUtil.getCdmEntity(getEntity()), requiredCrud), except);
+ }
+
+ public LabelElement getWarnForReferencedObjects() {
+ return warnForReferencedObjects;
+ }
+
+ public void setWarnForReferencedObjects(LabelElement warnForReferencedObjects) {
+ this.warnForReferencedObjects = warnForReferencedObjects;
+ }
+
+ public void setWarnForReferencingObjects(ICdmFormElement formElement, int defaultReferencingObjects){
+ if (getEntity() instanceof CdmBase){
+ CdmBase cdmBase = (CdmBase) getEntity();
+ if (cdmBase.getId() != 0){
+ long referencingObjectsCount = CdmStore.getCommonService().getReferencingObjectsCount(cdmBase);
+
+ if (referencingObjectsCount > defaultReferencingObjects){
+ setWarnForReferencedObjects(formFactory.createLabel(formElement, CdmUtils.Nz("The "+ cdmBase.getUserFriendlyTypeName()+" is referenced by " + referencingObjectsCount+ " objects, if you change it, it is changed for all these objects")));
+ getWarnForReferencedObjects().setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
+ getWarnForReferencedObjects().setLayout(LayoutConstants.FILL(2, 3));
+ getWarnForReferencedObjects().setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
+
+ }
+ }
+ }
+ }
+
+ public void setWarnForReferencingObjects(ICdmFormElement formElement){
+ setWarnForReferencingObjects(formElement, 1);
+ }
+
+ public void setWarnForReferencingObjectsVisible(boolean isVisible){
+ if (getWarnForReferencedObjects() != null){
+ getWarnForReferencedObjects().setVisible(isVisible);
+ }
+ }
+