Eclipse CheckboxTreeViewerノード選択状態の初期化

1545 ワード

CheckboxTreeViewerコントロールを使用する場合、選択した状態を初期化します.コードは次のとおりです.
// Create the tree viewer to display the file tree
		tv = new CheckboxTreeViewer(composite);

		// When user checks a checkbox in the tree, check all its children
		tv.addCheckStateListener(new ICheckStateListener() {
			public void checkStateChanged(CheckStateChangedEvent event) {

				// If the item is checked . . .
				if (event.getChecked()) {

					// . . . check all its children
					tv.setSubtreeChecked(event.getElement(), true);
				}

			}
		});
		tv.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
		tv.setContentProvider(new FileTreeContentProvider());
		tv.setLabelProvider(new FileTreeLabelProvider());

初期化:
IProjectDescription description = project.getDescription();

			String[] natures = description.getNatureIds();

			TreeItem[] list = tv.getTree().getItems();

			
			//         
			for (TreeItem item : list) {
				
				Element element = (Element) item.getData();

				for (String nature : natures) {

					if (element.elementText("natureId").equals(nature)) {

						item.setChecked(true);

					}

				}

			}

キーコードは次の文です.
Element element = (Element) item.getData();

これにより、ノードのデータソースオブジェクトを取得し、プロパティに基づいて検索する必要がなくなります.