use of com.intellij.ui.treeStructure.Tree in project azure-tools-for-java by Microsoft.
the class ServerExplorerToolWindowFactory method getTreeNodeOnMouseClick.
@Nullable
private Node getTreeNodeOnMouseClick(JTree tree, TreePath treePath) {
final Object raw = treePath.getLastPathComponent();
if (raw instanceof com.microsoft.azure.toolkit.intellij.common.component.Tree.TreeNode || raw instanceof LoadingNode) {
return null;
}
SortableTreeNode treeNode = (SortableTreeNode) raw;
Node node = (Node) treeNode.getUserObject();
// set tree and tree path to expand the node later
node.setTree(tree);
node.setTreePath(treePath);
return node;
}
use of com.intellij.ui.treeStructure.Tree in project android by JetBrains.
the class ApkDiffPanel method createUIComponents.
private void createUIComponents() {
myTreeModel = new DefaultTreeModel(new LoadingNode());
myTree = new Tree(myTreeModel);
myTree.setShowsRootHandles(true);
// show root node only when showing LoadingNode
myTree.setRootVisible(true);
myTree.setPaintBusy(true);
Convertor<TreePath, String> convertor = new Convertor<TreePath, String>() {
@Override
public String convert(TreePath path) {
ApkEntry e = ApkEntry.fromNode(path.getLastPathComponent());
if (e == null) {
return null;
}
return e.getPath();
}
};
TreeSpeedSearch treeSpeedSearch = new TreeSpeedSearch(myTree, convertor, true);
ColumnTreeBuilder builder = new ColumnTreeBuilder(myTree).addColumn(new ColumnTreeBuilder.ColumnBuilder().setName("File").setPreferredWidth(600).setHeaderAlignment(SwingConstants.LEADING).setRenderer(new NameRenderer(treeSpeedSearch))).addColumn(new ColumnTreeBuilder.ColumnBuilder().setName("Old Size").setPreferredWidth(150).setHeaderAlignment(SwingConstants.TRAILING).setRenderer(new SizeRenderer(ApkDiffEntry::getOldSize))).addColumn(new ColumnTreeBuilder.ColumnBuilder().setName("New Size").setPreferredWidth(150).setHeaderAlignment(SwingConstants.TRAILING).setRenderer(new SizeRenderer(ApkDiffEntry::getNewSize))).addColumn(new ColumnTreeBuilder.ColumnBuilder().setName("Diff Size").setPreferredWidth(150).setHeaderAlignment(SwingConstants.TRAILING).setRenderer(new SizeRenderer(ApkEntry::getSize)));
myColumnTreePane = (JScrollPane) builder.build();
}
use of com.intellij.ui.treeStructure.Tree in project android by JetBrains.
the class ColumnTreeBuilderTest method testTreeFillsViewportIfSmallerThanViewport.
@Test
public void testTreeFillsViewportIfSmallerThanViewport() throws Exception {
// Prepare
DefaultTreeModel treeModel = new DefaultTreeModel(new LoadingNode());
Tree tree = new Tree(treeModel);
ColumnTreeBuilder builder = new ColumnTreeBuilder(tree).addColumn(new ColumnTreeBuilder.ColumnBuilder().setName("A").setPreferredWidth(30).setHeaderAlignment(SwingConstants.LEADING).setRenderer(new MyEmptyRenderer())).addColumn(new ColumnTreeBuilder.ColumnBuilder().setName("B").setPreferredWidth(60).setHeaderAlignment(SwingConstants.TRAILING).setRenderer(new MyEmptyRenderer()));
JScrollPane columnTreePane = (JScrollPane) builder.build();
columnTreePane.setPreferredSize(new Dimension(100, 100));
assertThat(tree.getHeight()).isEqualTo(0);
// Act: Simulate layout
columnTreePane.setSize(new Dimension(100, 100));
columnTreePane.doLayout();
columnTreePane.getViewport().doLayout();
columnTreePane.getViewport().getView().doLayout();
// Assert: Check the tree height has been extended to the whole viewport
assertThat(tree.getHeight()).isGreaterThan(0);
assertThat(tree.getHeight()).isEqualTo(columnTreePane.getViewport().getHeight());
}
use of com.intellij.ui.treeStructure.Tree in project android by JetBrains.
the class GradleToolWindowFixture method runTask.
public void runTask(@NotNull final String taskName) {
Content content = getContent("projects");
final Tree tasksTree = findComponentOfType(content.getComponent(), Tree.class);
Wait.seconds(1).expecting("tree to be populated").until(() -> !tasksTree.isEmpty() && !field("myBusy").ofType(boolean.class).in(tasksTree).get());
execute(new GuiTask() {
@Override
protected void executeInEDT() throws Throwable {
expandAll(tasksTree);
}
});
Object root = tasksTree.getModel().getRoot();
final TreePath treePath = findTaskPath((DefaultMutableTreeNode) root, taskName);
Point clickLocation = GuiQuery.getNonNull(() -> {
// We store screen location here because it shows weird (negative) values after 'scrollPathToVisible()' is called.
Point locationOnScreen = tasksTree.getLocationOnScreen();
tasksTree.expandPath(treePath.getParentPath());
tasksTree.scrollPathToVisible(treePath);
Rectangle bounds = tasksTree.getPathBounds(treePath);
// Make sure we are not under the horizontal scroll bar
bounds.translate(0, bounds.height / 2);
tasksTree.scrollRectToVisible(bounds);
Rectangle visibleRect = tasksTree.getVisibleRect();
return new Point(locationOnScreen.x + bounds.x + bounds.width / 2 - visibleRect.x, locationOnScreen.y + bounds.y - visibleRect.y);
});
myRobot.click(clickLocation, LEFT_BUTTON, 2);
}
use of com.intellij.ui.treeStructure.Tree in project android by JetBrains.
the class MemoryClassView method ensureTreeInitialized.
private void ensureTreeInitialized(@NotNull JPanel parentPanel, @NotNull HeapObject heapObject) {
if (myClassesTree != null) {
assert myClassesTreeModel != null && myClassesTreeRoot != null;
return;
}
myClassesTreeRoot = new MemoryObjectTreeNode<>(new ClassObject() {
@NotNull
@Override
public List<InstanceAttribute> getInstanceAttributes() {
return Collections.emptyList();
}
});
myClassesTreeModel = new DefaultTreeModel(myClassesTreeRoot);
JTree tree = new Tree(myClassesTreeModel);
tree.setRootVisible(false);
tree.setShowsRootHandles(true);
tree.addTreeSelectionListener(e -> {
TreePath path = e.getPath();
if (!e.isAddedPath()) {
return;
}
assert path.getLastPathComponent() instanceof MemoryObjectTreeNode;
MemoryObjectTreeNode classObject = (MemoryObjectTreeNode) path.getLastPathComponent();
assert classObject.getAdapter() instanceof ClassObject;
myStage.selectClass((ClassObject) classObject.getAdapter());
});
List<HeapObject.ClassAttribute> attributes = heapObject.getClassAttributes();
ColumnTreeBuilder builder = new ColumnTreeBuilder(tree);
for (ClassAttribute attribute : attributes) {
builder.addColumn(myAttributeColumns.get(attribute).getBuilder());
}
builder.setTreeSorter((Comparator<MemoryObjectTreeNode<ClassObject>> comparator, SortOrder sortOrder) -> {
myClassesTreeRoot.sort(comparator);
myClassesTreeModel.nodeStructureChanged(myClassesTreeRoot);
});
builder.setBackground(ProfilerColors.MONITOR_BACKGROUND);
myClassesTree = builder.build();
parentPanel.add(myClassesTree, BorderLayout.CENTER);
}
Aggregations