En esta lección desarrollará código para la clase Decorator que maneja la decoración de los recursos CARMA en la vista Repositorios de CARMA.
Para añadir esta función a la clase Decorator:
private static ImageDescriptor lock;
private static ImageDescriptor question;
static
{
lock = Activator.getImageDescriptor("icons/lock.jpg");
question = Activator.getImageDescriptor("icons/question_mark.jpg");
}
si( el recurso es Contenedor CARMA o Miembro CARMA){
si( se ha establecido Member Info Map){
if( Member Info Map establecida contiene la clave “locked”){
if( el valor de la clave “locked” no es una serie vacía){
decorar miembro/contenedor CARMA con decorador de bloqueo
Añadir sufijo “locked” al miembro/contenedor CARMA }
} de lo contrario {
decorar miembro/contenedor CARMA con decorador de signo de interrogación
}
}
}
Utilice el siguiente código de muestra para implementar esta funcionalidad.
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(" - (Miembro bloqueado)");
else
decoration.addSuffix(" - (Contenedor bloqueado)");
}
}
}
catch(NotSynchronizedException e)
{
//Excepción de descriptor de contexto TODO
}
}
else
{
decoration.addOverlay(question);
decoration.addSuffix(" - (Sin sincronizar)");
}
}
}
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;