public void setInput()

in application/org.openjdk.jmc.rjmx.ui/src/main/java/org/openjdk/jmc/rjmx/ui/internal/AttributeSelectorComponent.java [120:180]


	public void setInput(AttributeSelectionContentModel selectorModel) {
		m_selectorModel = selectorModel;
		IMRIMetadataService mds = selectorModel.getMetadataService();
		// Build model
		TreeNodeBuilder root = new TreeNodeBuilder();
		int mriCount = 0;
		for (MRI mri : selectorModel.getAvailableAttributes()) {
			ObjectName bean = mri.getObjectName();
			IMRIMetadata md = mds.getMetadata(mri);
			if (!m_viewModel.isNumericalOnly() || MRIMetadataToolkit.isNumerical(md)) {
				TreeNodeBuilder node = root.getUniqueChild(bean.getDomain());
				Property[] properties = MBeanPropertiesOrderer.getOrderedProperties(bean);
				for (Property p : properties) {
					node = node.get(p.getStringRepresentation());
					if (p instanceof PropertyWithMBean || node.getValue() == null) {
						node.setValue(p);
					}
				}
				for (MRI parentMri : mri.getParentMRIs()) {
					node = node.get(parentMri, mds.getMetadata(parentMri));
				}
				node.get(mri, md);
				mriCount++;
			}
		}

		ITreeNode[] tree = root.getChildren(null);
		mbeanTreeViewer.setInput(tree);
		// Select and expand
		List<ITreeNode> selectList = new ArrayList<>();
		List<ITreeNode> expandList = new ArrayList<>();
		List<ITreeNode> search = new ArrayList<>();
		search.addAll(Arrays.asList(tree));
		while (!search.isEmpty()) {
			ITreeNode node = search.remove(0);
			if (node.getUserData() instanceof IMRIMetadata) {
				MRI mri = ((IMRIMetadata) node.getUserData()).getMRI();
				for (MRI e : selectorModel.getInitialExpandedAttributes()) {
					if (mri.equals(e)) {
						expandList.add(node);
					}
				}
				for (MRI s : selectorModel.getSelectedAttributes()) {
					if (mri.equals(s)) {
						selectList.add(node);
					}
				}
			}
			ITreeNode[] children = node.getChildren();
			if (children != null) {
				search.addAll(Arrays.asList(children));
			}
		}
		if (!selectList.isEmpty()) {
			mbeanTreeViewer.setSelection(new StructuredSelection(selectList), true);
		}
		for (ITreeNode e : expandList) {
			mbeanTreeViewer.expandToLevel(e, 0);
		}
		TreeNodeFilter.install(mbeanTreeViewer, filterText, mriCount > MAX_ATTRIBUTES_SYNC_FILTER);
	}