use of com.intellij.ui.treeStructure.Tree in project android by JetBrains.
the class MemoryInstanceView method ensureTreeInitialized.
private void ensureTreeInitialized(@NotNull JPanel parentPanel) {
if (myTree != null) {
assert myTreeModel != null && myTreeRoot != null;
return;
}
myTreeRoot = new MemoryObjectTreeNode<>(new InstanceObject() {
@NotNull
@Override
public String getName() {
return "";
}
});
myTreeModel = new DefaultTreeModel(myTreeRoot);
JTree tree = new Tree(myTreeModel);
tree.setRootVisible(false);
tree.setShowsRootHandles(true);
tree.addTreeSelectionListener(e -> {
TreePath path = e.getPath();
if (!e.isAddedPath()) {
return;
}
assert path.getLastPathComponent() instanceof MemoryObjectTreeNode;
MemoryObjectTreeNode instanceObject = (MemoryObjectTreeNode) path.getLastPathComponent();
assert instanceObject.getAdapter() instanceof InstanceObject;
InstanceObject selectedInstanceObject = (InstanceObject) instanceObject.getAdapter();
myStage.selectInstance(selectedInstanceObject);
});
// Not all nodes have been populated during buildTree. Here we capture the TreeExpansionEvent to check whether any children
// under the expanded node need to be populated.
tree.addTreeExpansionListener(new TreeExpansionListener() {
@Override
public void treeExpanded(TreeExpansionEvent event) {
TreePath path = event.getPath();
assert path.getLastPathComponent() instanceof MemoryObjectTreeNode;
MemoryObjectTreeNode treeNode = (MemoryObjectTreeNode) path.getLastPathComponent();
for (int i = 0; i < treeNode.getChildCount(); i++) {
assert treeNode.getChildAt(i) instanceof MemoryObjectTreeNode;
MemoryObjectTreeNode childNode = (MemoryObjectTreeNode) treeNode.getChildAt(i);
// Anything below the top level should be FieldObjects
assert childNode.getAdapter() instanceof FieldObject;
FieldObject childObject = (FieldObject) childNode.getAdapter();
if (childObject.getValueType() == ValueType.OBJECT && childNode.getChildCount() == 0) {
populateFields(childNode);
myTreeModel.nodeStructureChanged(childNode);
}
}
}
@Override
public void treeCollapsed(TreeExpansionEvent event) {
// No-op. TODO remove unseen children?
}
});
assert myClassObject != null;
List<InstanceAttribute> attributes = myClassObject.getInstanceAttributes();
ColumnTreeBuilder builder = new ColumnTreeBuilder(tree);
for (InstanceAttribute attribute : attributes) {
builder.addColumn(myAttributeColumns.get(attribute).getBuilder());
}
builder.setTreeSorter((Comparator<MemoryObjectTreeNode<InstanceObject>> comparator, SortOrder sortOrder) -> {
myTreeRoot.sort(comparator);
myTreeModel.nodeStructureChanged(myTreeRoot);
});
builder.setBackground(ProfilerColors.MONITOR_BACKGROUND);
myTree = builder.build();
parentPanel.add(myTree, BorderLayout.CENTER);
}
use of com.intellij.ui.treeStructure.Tree in project intellij-plugins by JetBrains.
the class UsersTreeModel_OnlyOfflineShownTest method setUp.
@Override
protected void setUp() throws Exception {
super.setUp();
myUserModel = TestFactory.createUserListWithUsers(this);
myTree = new Tree();
myIDEFacade = new MockIDEFacade(getClass());
myLocalMessageDispatcher = new LocalMessageDispatcherImpl(getBroadcaster(), myIDEFacade, myUserModel);
disposeOnTearDown(myLocalMessageDispatcher);
myUsersTreeModel = new UsersTreeModel(myTree, myUserModel, myLocalMessageDispatcher);
disposeOnTearDown(myUsersTreeModel);
myTree.setModel(myUsersTreeModel);
OptionFlag.OPTION_HIDE_OFFLINE_USERS.change(true);
getBroadcaster().fireEvent(new SettingsChanged());
}
use of com.intellij.ui.treeStructure.Tree in project intellij-plugins by JetBrains.
the class UsersTreeModelTest method setUp.
@Override
protected void setUp() throws Exception {
super.setUp();
myUserModel = TestFactory.createUserListWithUsers(this);
myTree = new Tree();
myLocalMessageDispatcher = new LocalMessageDispatcherImpl(getBroadcaster(), new MockIDEFacade(getClass()), myUserModel);
disposeOnTearDown(myLocalMessageDispatcher);
myUsersTreeModel = new UsersTreeModel(myTree, myUserModel, myLocalMessageDispatcher);
disposeOnTearDown(myUsersTreeModel);
myTree.setModel(myUsersTreeModel);
}
use of com.intellij.ui.treeStructure.Tree in project intellij-community by JetBrains.
the class PsiViewerDialog method createUIComponents.
private void createUIComponents() {
myPsiTree = new Tree(new DefaultTreeModel(new DefaultMutableTreeNode()));
myBlockTree = new Tree(new DefaultTreeModel(new DefaultMutableTreeNode()));
myRefs = new JBList(new DefaultListModel());
}
use of com.intellij.ui.treeStructure.Tree in project intellij-community by JetBrains.
the class SlicePanel method createTree.
@NotNull
private JTree createTree() {
DefaultMutableTreeNode root = new DefaultMutableTreeNode();
final Tree tree = new Tree(new DefaultTreeModel(root));
tree.setOpaque(false);
tree.setToggleClickCount(-1);
SliceUsageCellRendererBase renderer = myProvider.getRenderer();
renderer.setOpaque(false);
tree.setCellRenderer(renderer);
UIUtil.setLineStyleAngled(tree);
tree.setRootVisible(false);
tree.setShowsRootHandles(true);
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
tree.setSelectionPath(new TreePath(root.getPath()));
//ActionGroup group = (ActionGroup)ActionManager.getInstance().getAction(IdeActions.GROUP_METHOD_HIERARCHY_POPUP);
//PopupHandler.installPopupHandler(tree, group, ActionPlaces.METHOD_HIERARCHY_VIEW_POPUP, ActionManager.getInstance());
EditSourceOnDoubleClickHandler.install(tree);
new TreeSpeedSearch(tree);
TreeUtil.installActions(tree);
ToolTipManager.sharedInstance().registerComponent(tree);
myAutoScrollToSourceHandler.install(tree);
tree.getSelectionModel().addTreeSelectionListener(e -> treeSelectionChanged());
tree.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (KeyEvent.VK_ENTER == e.getKeyCode()) {
List<Navigatable> navigatables = getNavigatables();
if (navigatables.isEmpty())
return;
for (Navigatable navigatable : navigatables) {
if (navigatable instanceof AbstractTreeNode && ((AbstractTreeNode) navigatable).getValue() instanceof Usage) {
navigatable = (Usage) ((AbstractTreeNode) navigatable).getValue();
}
if (navigatable.canNavigateToSource()) {
navigatable.navigate(false);
if (navigatable instanceof Usage) {
((Usage) navigatable).highlightInEditor();
}
}
}
e.consume();
}
}
});
tree.addTreeWillExpandListener(new TreeWillExpandListener() {
@Override
public void treeWillCollapse(TreeExpansionEvent event) {
}
@Override
public void treeWillExpand(TreeExpansionEvent event) {
TreePath path = event.getPath();
SliceNode node = fromPath(path);
node.calculateDupNode();
}
});
return tree;
}
Aggregations