public MidpPropertyPresenterSerializer (String displayName, PropertyDescriptor property) { this.displayName = displayName; this.editorID = createEditorIDForPropertyDescriptor (property); this.propertyName = property.getName (); }
/** * Returns a property descriptor for a property. * @param propertyName the property name * @return the property descriptor */ public final PropertyDescriptor getPropertyDescriptor (String propertyName) { // HINT - optimize to HashMap for (PropertyDescriptor propertyDescriptor : getPropertyDescriptors ()) { if (propertyName.equals (propertyDescriptor.getName ())) return propertyDescriptor; } return null; }
void dumpComponent(String indent) { assert document.getTransactionManager().isAccess(); System.out.println(indent + componentID + " : " + componentDescriptor); // NOI18N indent += " "; // NOI18N HashSet<String> undefinedProperties = new HashSet<String> (properties.keySet()); Collection<PropertyDescriptor> propertyDescriptors = componentDescriptor.getPropertyDescriptors(); for (PropertyDescriptor property : propertyDescriptors) { String name = property.getName(); System.out.println(indent + (properties.get(name) == defaultProperties.get(name) ? "## " : ":: ") + name + " = " + properties.get(name)); // NOI18N undefinedProperties.remove(name); } for (String name : undefinedProperties) System.out.println(indent + "?? " + name + " = " + properties.get(name)); // NOI18N for (Object presenter : presenters.lookupAll(Object.class)) System.out.println(indent + ">>" + presenter); // NOI18N for (DesignComponent child : children) child.dumpComponent(indent); }
private void filterResources(DesignComponent component,Collection<DesignComponent> resources) { for (DesignComponent child : component.getComponents()) { filterResources(child, resources); } Collection<DesignComponent> references = new ArrayList<DesignComponent>(); for (PropertyDescriptor pd : component.getComponentDescriptor().getPropertyDescriptors()) { Debug.collectAllComponentReferences(component.readProperty(pd.getName()), references); resources.removeAll(references); references.clear(); } }
PropertyDescriptor property = MidpTypesConvertor.createPropertyDescriptorForParameter (fqn + "#" + constructorIndex + "#" + index, true, parameter); // NOI18N item.addProperty (property); properties.add (property.getName ()); String displayName = NbBundle.getMessage (ComponentInstaller.class, "NAME_ConstructorParam", new Object[] { parameter.getSimpleName (), constructorIndex, index, fqn }); // NOI18N item.addPresenter (new MidpPropertyPresenterSerializer (displayName, property)); properties.add (property.getName ()); String displayName = NbBundle.getMessage (ComponentInstaller.class, "NAME_SetterParam", parameter.getSimpleName (), name, fqn); // NOI18N item.addPresenter (new MidpPropertyPresenterSerializer (displayName, property));
private static boolean isComponentReferencedInRootTree (DesignComponent treeComponent, DesignComponent referenceComponent) { ArrayList<DesignComponent> referenced = new ArrayList<DesignComponent> (); ComponentDescriptor descriptor = treeComponent.getComponentDescriptor (); if (descriptor != null) { for (PropertyDescriptor propertyDescriptor : descriptor.getPropertyDescriptors ()) { PropertyValue propertyValue = treeComponent.readProperty (propertyDescriptor.getName ()); referenced.clear (); Debug.collectAllComponentReferences (propertyValue, referenced); if (referenced.contains (referenceComponent)) return true; } } for (DesignComponent child : treeComponent.getComponents ()) if (isComponentReferencedInRootTree (child, referenceComponent)) return true; return false; }
private void processComponentProperty (DefaultListModel list, DesignComponent component, PropertyDescriptor property) { DescriptorRegistry registry = component.getDocument ().getDescriptorRegistry (); if (registry.isInHierarchy (ItemCD.TYPEID, component.getType ()) && ItemCD.PROP_LAYOUT.equals (property.getName ())) { if (! registry.isInHierarchy (ImageItemCD.TYPEID, component.getType ())) { list.addElement (NbBundle.getMessage(Midp1CompliantAnalyzer.class, "MSG_IncompatibleItemLayout", InfoPresenter.getHtmlDisplayName (component))); // NOI18N return; } int value = MidpTypes.getInteger (component.readProperty (ItemCD.PROP_LAYOUT)); if ((value & (ItemCD.VALUE_LAYOUT_TOP | ItemCD.VALUE_LAYOUT_BOTTOM | ItemCD.VALUE_LAYOUT_VCENTER | ItemCD.VALUE_LAYOUT_SHRINK | ItemCD.VALUE_LAYOUT_VSHRINK | ItemCD.VALUE_LAYOUT_VSHRINK | ItemCD.VALUE_LAYOUT_VEXPAND | ItemCD.VALUE_LAYOUT_2)) != 0) { list.addElement (NbBundle.getMessage(Midp1CompliantAnalyzer.class, "MSG_IncompatibleItemLayout", InfoPresenter.getHtmlDisplayName (component))); // NOI18N return; } } }
private void removeReferences(DesignComponent component) { List<PropertyDescriptor> descriptors = component.getComponentDescriptor().getDeclaredPropertyDescriptors(); if (descriptors == null) { return; } for (PropertyDescriptor descriptor : descriptors) { PropertyValue value = component.readProperty(descriptor.getName()); if (value.getComponent() != null && value.getComponent() == getComponent()) { component.writeProperty(descriptor.getName(), PropertyValue.createNull()); } } } };
protected void collectRequiredComponents(Collection<DesignComponent> requiredComponents) { DesignComponent component = getComponent(); ComponentDescriptor descriptor = component.getComponentDescriptor(); if (descriptor != null) for (PropertyDescriptor property : descriptor.getPropertyDescriptors()) Debug.collectAllComponentReferences(component.readProperty(property.getName()), requiredComponents); } }
private static void collectUsedReferences (HashSet<DesignComponent> referencedComponents, DesignComponent component) { ComponentDescriptor descriptor = component.getComponentDescriptor (); Collection<PropertyDescriptor> propertyDescriptors = descriptor.getPropertyDescriptors (); for (PropertyDescriptor propertyDescriptor : propertyDescriptors) { if (! propertyDescriptor.isUseForSerialization ()) continue; PropertyValue propertyValue = component.readProperty (propertyDescriptor.getName ()); Debug.collectAllComponentReferences (propertyValue, referencedComponents); } }
/** * Removes a component from the component tree and removes references to this component from all property values * in all components in the document. * <p> * Note: It does not allows to remove the root component. * @param component the component */ public void deleteComponent (DesignComponent component) { assert transactionManager.isWriteAccess (); assert component != null && component != rootComponent; assert component.getDocument () == this; Collection<DesignComponent> components = component.getComponents (); if (components.size () > 0) Debug.warning ("Children has to be deleted before deleting the component", component, components); // NOI18N component.removeFromParentComponent (); ComponentDescriptor descriptor = component.getComponentDescriptor (); if (descriptor != null) for (PropertyDescriptor property : descriptor.getPropertyDescriptors ()) component.resetToDefault (property.getName ()); if (selectedComponents.contains (component)) { HashSet<DesignComponent> selected = new HashSet<DesignComponent> (selectedComponents); selected.remove (component); setSelectedComponents ("deleteComponent", selected); // NOI18N } assert ! Debug.isComponentReferencedInRootTree (component) : "Component (" + component + ") is referenced still after deletion"; // NOI18N }
private static void saveComponent (Document xml, Node parentNode, DesignComponent component) { ComponentDescriptor descriptor = component.getComponentDescriptor (); Node node = xml.createElement (COMPONENT_NODE); parentNode.appendChild (node); setAttribute (xml, node, COMPONENTID_ATTR, Long.toString (component.getComponentID ())); setAttribute (xml, node, TYPEID_ATTR, component.getType ().getEncoded ()); Collection<PropertyDescriptor> propertyDescriptors = descriptor.getPropertyDescriptors (); for (PropertyDescriptor propertyDescriptor : propertyDescriptors) { if (! propertyDescriptor.isUseForSerialization ()) continue; String propertyName = propertyDescriptor.getName (); if (component.isDefaultValue (propertyName)) continue; PropertyValue propertyValue = component.readProperty (propertyName); String serialized = propertyValue.serialize (); Node propertyNode = xml.createElement (PROPERTY_NODE); node.appendChild (propertyNode); setAttribute (xml, propertyNode, NAME_ATTR, propertyDescriptor.getName ()); setAttribute (xml, propertyNode, TYPEID_ATTR, propertyDescriptor.getType ().getEncoded ()); setAttribute (xml, propertyNode, VALUE_ATTR, serialized); } for (DesignComponent child : component.getComponents ()) saveComponent (xml, node, child); }
String name = propertyDescriptor.getName (); if (name == null) continue; if (declaredDescriptors != null) for (PropertyDescriptor declaredDescriptor : declaredDescriptors) if (name.equals (declaredDescriptor.getName ())) continue found; propertyDescriptors.add (propertyDescriptor); String name = declaredDescriptor.getName (); if (name == null) { Debug.warning ("Null declared property descriptor name", name); // NOI18N if (tested != null && name.equals (tested.getName ())) continue declared;
private DesignComponent goThroughChildren(DesignComponent currentComponent, DesignComponent child, DescriptorRegistry registry) { Collection<PropertyDescriptor> descriptorsList = child.getComponentDescriptor().getPropertyDescriptors(); if (descriptorsList != null) { for (PropertyDescriptor descriptor : descriptorsList) { if (registry.isInHierarchy(PointCD.TYPEID, descriptor.getType())) { if (child.readProperty(descriptor.getName()).getComponent() == currentComponent) { return currentComponent; } } } } return null; }
if (descriptor != null) for (PropertyDescriptor property : descriptor.getPropertyDescriptors ()) component.resetToDefault (property.getName ());
private void analyze (DefaultListModel list, DesignComponent component) { ComponentDescriptor descriptor = component.getComponentDescriptor (); if (descriptor == null) return; VersionDescriptor version = descriptor.getVersionDescriptor (); if (! version.isCompatibleWith (MidpVersionDescriptor.MIDP_1)) { reportComponent (list, component); return; } for (PropertyDescriptor property : descriptor.getPropertyDescriptors ()) { if (! property.getVersionable ().isCompatibleWith (MidpVersionable.MIDP_1)) if (! component.isDefaultValue (property.getName ())) reportComponentProperty (list, component, property.getName ()); processComponentProperty (list, component, property); } for (DesignComponent child : component.getComponents ()) analyze (list, child); }
String propertyName = propertyDescriptor.getName(); PropertyValue propertyValue = properties.get(propertyName); if (propertyValue == null || ! propertyValue.isCompatible(propertyDescriptor.getType())) {
PropertyValue value = component.readProperty (propertyDescriptor.getName ()); Debug.collectAllComponentReferences (value, references);
assert propertyDescriptor != null; Element propertyNode = document.createElement (XMLComponentDescriptor.PROPERTY_DESCRIPTOR_NODE); setAttribute (document, propertyNode, XMLComponentDescriptor.NAME_ATTR, propertyDescriptor.getName ()); setAttribute (document, propertyNode, XMLComponentDescriptor.TYPEID_ATTR, propertyDescriptor.getType ().toString ()); String userCode = propertyDescriptor.getDefaultValue ().getUserCode ();