若要將此功能新增至 Decorator 類別:
private static ImageDescriptor lock;
private static ImageDescriptor question;
static
{
lock = Activator.getImageDescriptor("icons/lock.jpg");
question = Activator.getImageDescriptor("icons/question_mark.jpg");
}
if( resource is CARMA Container or CARMA Member){
if( Member Info Map Set){
if( Member Info Map Set contains the Key “locked”){
if( value for the key “locked” is not empty string){
decorate CARMA Member/Container with lock decorator
Add “locked” suffix to CARMA Member/Container }
} else {
decorate CARMA Member/Container with question decorator
}
}
}
請利用下列範例程式碼來實作此功能。
public void decorate(Object resource, IDecoration decoration)
{
if(resource instanceof CARMAContainer || resource instanceof CARMAMember)
{
CARMAResource myResource = (CARMAResource) resource;
if(myResource.isSetMemberInfoMap())
{
try
{
EMap myMap = myResource.getMemberInfoMap();
if(myMap.containsKey("locked"))
{
String value = myMap.get("locked").toString();
if( !value.equals(""))
{
decoration.addOverlay(lock);
if(myResource instanceof CARMAMember)
decoration.addSuffix(" - (Member Locked)");
else
decoration.addSuffix(" - (Container Locked)");
}
}
}
catch(NotSynchronizedException e)
{
//TODO handle exception
}
}
else
{
decoration.addOverlay(question);
decoration.addSuffix(" - (Not Syncronized)");
}
}
}
import com.ibm.carma.plugin.decorators.Activator; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.IDecoration; import org.eclipse.jface.viewers.ILightweightLabelDecorator; import org.eclipse.jface.viewers.LabelProvider; import com.ibm.carma.model.CARMAMember; import com.ibm.carma.model.CARMAContainer; import com.ibm.carma.model.CARMAResource; import com.ibm.carma.transport.NotSynchronizedException; import org.eclipse.emf.common.util.EMap;