package org.aperteworkflow.editor.stepeditor.user; import org.aperteworkflow.editor.ui.permission.PermissionDefinition; import org.aperteworkflow.editor.ui.property.AperteProcessClassInfo; import pl.net.bluesoft.rnd.processtool.ui.widgets.annotations.Permission; import java.io.Serializable; import java.util.*; public class WidgetItem implements Serializable { private static final long serialVersionUID = -8907544816596058014L; private static Map<String, WidgetItem> widgetSet = new HashMap<String, WidgetItem>(); private BundleItem bundle; private AperteProcessClassInfo classInfo; public WidgetItem(String widgetId, String name, String description, String icon, List<Property<?>> properties, List<PermissionDefinition> permissions, Boolean childrenAllowed, BundleItem bundle) { classInfo = new AperteProcessClassInfo(); classInfo.setAliasName(widgetId); classInfo.setDocName(name); classInfo.setDocDescription(description); classInfo.setDocIcon(icon); classInfo.setProperties(properties); classInfo.setChildrenAllowed(childrenAllowed); this.bundle = bundle; classInfo.setPermissions(permissions); storeInWidgetset(widgetId); } public WidgetItem(Class<?> aperteClass, Set<Permission> defaultPermissions, BundleItem bundle) { classInfo = new AperteProcessClassInfo(aperteClass, defaultPermissions); this.bundle = bundle; storeInWidgetset(classInfo.getAliasName()); } private void storeInWidgetset(String widgetId) { widgetSet.put(widgetId, this); } public static WidgetItem getWidgetItem(String widgetId) { return widgetSet.get(widgetId); } public String getName() { return classInfo.getDocName(); } public String getDescription() { return classInfo.getDocDescription(); } public Collection<Property<?>> getProperties() { return classInfo.getProperties(); } public Collection<PermissionDefinition> getPermissions() { return classInfo.getPermissions(); } public Boolean getChildrenAllowed() { return classInfo.isChildrenAllowed(); } public String getWidgetId() { return classInfo.getAliasName(); } public String getIcon() { return classInfo.getDocIcon(); } public BundleItem getBundle() { return bundle; } public AperteProcessClassInfo getClassInfo() { return classInfo; } }