修改GMF属性视图
        上图中紫色的椭圆结点在ecore模型中代表Method,在属性视图中可见它的一些属性。如果要使TimeProperty属性值为"NONE" 时,TimeUnit和Value值分别变为"NONE"和0.0,应该如下修改MethodItemProvider类中的 notifyChanged()方法(紫色的代码是添加的,其他均为GMF生成的):

修改GMF属性视图修改GMF属性视图    public void notifyChanged(Notification notification) 修改GMF属性视图{
修改GMF属性视图        updateChildren(notification);
修改GMF属性视图
修改GMF属性视图修改GMF属性视图        
switch (notification.getFeatureID(Method.class)) 修改GMF属性视图{
修改GMF属性视图            
case EventPackage.METHOD__PROPERTY_NAME:
修改GMF属性视图修改GMF属性视图         
{
修改GMF属性视图                
//如果该项设置为NONE,那么TimeUnit和Value项应该分别设置为NONE和0.0
修改GMF属性视图
                Method owner = (Method)notification.getNotifier();
修改GMF属性视图                TimeProperty newValue = (TimeProperty)notification.getNewValue();
修改GMF属性视图                if(newValue.equals(TimeProperty.NONE))
修改GMF属性视图修改GMF属性视图              {
修改GMF属性视图                    owner.setTimeUnit(TimeUnit.NONE);
修改GMF属性视图                    owner.setValue(0.0);修改GMF属性视图
 
           
修改GMF属性视图                }

修改GMF属性视图             }

修改GMF属性视图            
case EventPackage.METHOD__VALUE:
修改GMF属性视图            
case EventPackage.METHOD__TIME_UNIT:
修改GMF属性视图            
case EventPackage.METHOD__CLASS_NAME:
修改GMF属性视图            
case EventPackage.METHOD__METHOD_NAME:
修改GMF属性视图            
case EventPackage.METHOD__PARAMETERS:
修改GMF属性视图            
case EventPackage.METHOD__RETURN_TYPE:
修改GMF属性视图                fireNotifyChanged(
new ViewerNotification(notification, notification.getNotifier(), falsetrue));
修改GMF属性视图                
return;
修改GMF属性视图        }

修改GMF属性视图        
super.notifyChanged(notification);
修改GMF属性视图    }

  MethodItemProvider类位于genmodel生成的edit项目中,它相当于Property View的ContentProvider。

相关文章: