use of com.intellij.ui.treeStructure.Tree in project intellij-community by JetBrains.
the class BaseExecuteBeforeRunDialog method createCenterPanel.
@Override
protected JComponent createCenterPanel() {
JPanel panel = new JPanel(new BorderLayout());
myRoot = buildNodes();
final Tree tree = new Tree(myRoot);
final MyTreeCellRenderer cellRenderer = new MyTreeCellRenderer();
tree.setCellRenderer(cellRenderer);
tree.setRootVisible(false);
tree.setShowsRootHandles(true);
tree.setLineStyleAngled();
TreeUtil.installActions(tree);
new TreeSpeedSearch(tree);
tree.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
int row = tree.getRowForLocation(e.getX(), e.getY());
if (row >= 0) {
Rectangle rowBounds = tree.getRowBounds(row);
cellRenderer.setBounds(rowBounds);
Rectangle checkBounds = cellRenderer.myCheckbox.getBounds();
checkBounds.setLocation(rowBounds.getLocation());
if (checkBounds.contains(e.getPoint())) {
toggleNode(tree, (DefaultMutableTreeNode) tree.getPathForRow(row).getLastPathComponent());
e.consume();
tree.setSelectionRow(row);
}
}
}
});
tree.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_SPACE) {
TreePath treePath = tree.getLeadSelectionPath();
DefaultMutableTreeNode node = (DefaultMutableTreeNode) treePath.getLastPathComponent();
toggleNode(tree, node);
e.consume();
}
}
});
expacndChecked(tree);
JScrollPane scrollPane = ScrollPaneFactory.createScrollPane(tree);
scrollPane.setPreferredSize(JBUI.size(400, 400));
panel.add(scrollPane, BorderLayout.CENTER);
return panel;
}
use of com.intellij.ui.treeStructure.Tree in project intellij-plugins by JetBrains.
the class ChooseBuildConfigurationDialog method createCenterPanel.
@Override
protected JComponent createCenterPanel() {
DefaultMutableTreeNode root = new DefaultMutableTreeNode();
List<Module> modules = new ArrayList<>(myTreeItems.keySet());
Collections.sort(modules, (o1, o2) -> o1.getName().compareToIgnoreCase(o2.getName()));
for (Module module : modules) {
DefaultMutableTreeNode moduleNode = new DefaultMutableTreeNode(module, true);
root.add(moduleNode);
List<FlexBCConfigurable> bcs = myTreeItems.get(module);
Collections.sort(bcs, (o1, o2) -> o1.getDisplayName().compareToIgnoreCase(o2.getDisplayName()));
for (FlexBCConfigurable bc : bcs) {
DefaultMutableTreeNode bcNode = new DefaultMutableTreeNode(bc, false);
moduleNode.add(bcNode);
}
}
myTree.setModel(new DefaultTreeModel(root));
myTree.setRootVisible(false);
new TreeSpeedSearch(myTree, o -> {
Object lastPathComponent = o.getLastPathComponent();
return getText((DefaultMutableTreeNode) lastPathComponent);
}, true).setComparator(new SpeedSearchComparator(false));
TreeUIHelper.getInstance().installTreeSpeedSearch(myTree);
myTree.getSelectionModel().setSelectionMode(TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);
myTree.getSelectionModel().addTreeSelectionListener(new TreeSelectionListener() {
@Override
public void valueChanged(TreeSelectionEvent e) {
updateOnSelectionChange();
}
});
myTree.setCellRenderer(new ColoredTreeCellRenderer() {
@Override
public void customizeCellRenderer(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
DefaultMutableTreeNode treeNode = (DefaultMutableTreeNode) value;
Object object = treeNode.getUserObject();
if (object instanceof Module) {
Module module = (Module) object;
setIcon(ModuleType.get(module).getIcon());
append(module.getName());
} else if (object instanceof FlexBCConfigurable) {
FlexBCConfigurable configurable = (FlexBCConfigurable) object;
setIcon(configurable.getIcon());
BCUtils.renderBuildConfiguration(configurable.getEditableObject(), null).appendToComponent(this);
}
}
});
TreeUtil.expandAll(myTree);
new DoubleClickListener() {
@Override
protected boolean onDoubleClick(MouseEvent e) {
if (mySelection != null) {
doOKAction();
return true;
}
return false;
}
}.installOn(myTree);
myTree.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
if (e.getKeyChar() == KeyEvent.VK_ENTER) {
doOKAction();
}
}
});
updateOnSelectionChange();
return myContentPane;
}
use of com.intellij.ui.treeStructure.Tree in project android by JetBrains.
the class ApkViewPanel method createUIComponents.
private void createUIComponents() {
myNameAsyncIcon = new AsyncProcessIcon("aapt xmltree manifest");
mySizeAsyncIcon = new AsyncProcessIcon("estimating apk size");
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);
TreeSpeedSearch treeSpeedSearch = new TreeSpeedSearch(myTree, path -> {
ApkEntry e = ApkEntry.fromNode(path.getLastPathComponent());
if (e == null) {
return null;
}
return e.getPath();
}, true);
// Provides the percentage of the node size to the total size of the APK
PercentRenderer.PercentProvider percentProvider = (jTree, value, row) -> {
ApkEntry entry = ApkEntry.fromNode(value);
ApkEntry rootEntry = ApkEntry.fromNode(jTree.getModel().getRoot());
if (entry == null || rootEntry == null) {
return 0;
} else if (!entry.isCompressedSizeKnown() || !rootEntry.isCompressedSizeKnown()) {
return 0;
} else {
return (double) entry.getCompressedSize() / rootEntry.getCompressedSize();
}
};
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("Raw File Size").setPreferredWidth(150).setHeaderAlignment(SwingConstants.TRAILING).setRenderer(new SizeRenderer(false))).addColumn(new ColumnTreeBuilder.ColumnBuilder().setName("Download Size").setPreferredWidth(150).setHeaderAlignment(SwingConstants.TRAILING).setRenderer(new SizeRenderer(true))).addColumn(new ColumnTreeBuilder.ColumnBuilder().setName("% of Total Download size").setPreferredWidth(150).setHeaderAlignment(SwingConstants.LEADING).setRenderer(new PercentRenderer(percentProvider)));
myColumnTreePane = (JScrollPane) builder.build();
myTree.addTreeSelectionListener(this);
}
use of com.intellij.ui.treeStructure.Tree in project android by JetBrains.
the class MemoryDetailSegment method createComponentsList.
@Override
public void createComponentsList(@NotNull List<Animatable> animatables) {
mTreeModel = new DefaultTreeModel(mRoot);
mTree = new Tree(mTreeModel);
mTree.setRootVisible(false);
mTree.setShowsRootHandles(true);
ColumnTreeBuilder builder = new ColumnTreeBuilder(mTree).addColumn(new ColumnTreeBuilder.ColumnBuilder().setName("Class").setHeaderAlignment(SwingConstants.LEFT).setRenderer(new MemoryInfoColumnRenderer(0, mRoot))).addColumn(new ColumnTreeBuilder.ColumnBuilder().setName("Count").setHeaderAlignment(SwingConstants.LEFT).setRenderer(new MemoryInfoColumnRenderer(1, mRoot)).setInitialOrder(SortOrder.DESCENDING).setComparator((MemoryInfoTreeNode a, MemoryInfoTreeNode b) -> a.getCount() - b.getCount()));
builder.setTreeSorter((Comparator<MemoryInfoTreeNode> comparator, SortOrder sortOrder) -> {
mRoot.sort(comparator);
mTreeModel.nodeStructureChanged(mRoot);
});
mColumnTree = builder.build();
}
use of com.intellij.ui.treeStructure.Tree in project checkstyle-idea by jshiell.
the class CheckStyleToolWindowPanel method createToolPanel.
private JPanel createToolPanel() {
configurationOverrideCombo.setModel(configurationOverrideModel);
final int preferredHeight = configurationOverrideCombo.getPreferredSize().height;
configurationOverrideCombo.setPreferredSize(new Dimension(250, preferredHeight));
configurationOverrideCombo.setMaximumSize(new Dimension(350, preferredHeight));
treeModel = new ResultTreeModel();
resultsTree = new Tree(treeModel);
resultsTree.setRootVisible(false);
final TreeSelectionListener treeSelectionListener = new ToolWindowSelectionListener();
resultsTree.addTreeSelectionListener(treeSelectionListener);
final MouseListener treeMouseListener = new ToolWindowMouseListener();
resultsTree.addMouseListener(treeMouseListener);
resultsTree.addKeyListener(new ToolWindowKeyboardListener());
resultsTree.setCellRenderer(new ResultTreeRenderer());
progressLabel = new JLabel(" ");
progressBar = new JProgressBar(JProgressBar.HORIZONTAL);
progressBar.setMinimum(0);
final Dimension progressBarSize = new Dimension(100, progressBar.getPreferredSize().height);
progressBar.setMinimumSize(progressBarSize);
progressBar.setPreferredSize(progressBarSize);
progressBar.setMaximumSize(progressBarSize);
progressPanel = new JToolBar(JToolBar.HORIZONTAL);
progressPanel.add(Box.createHorizontalStrut(4));
progressPanel.add(new JLabel(CheckStyleBundle.message("plugin.toolwindow.override")));
progressPanel.add(Box.createHorizontalStrut(4));
progressPanel.add(configurationOverrideCombo);
progressPanel.add(Box.createHorizontalStrut(4));
progressPanel.addSeparator();
progressPanel.add(Box.createHorizontalStrut(4));
progressPanel.add(progressLabel);
progressPanel.add(Box.createHorizontalGlue());
progressPanel.setFloatable(false);
progressPanel.setBackground(UIManager.getColor("Panel.background"));
progressPanel.setBorder(null);
final JPanel toolPanel = new JPanel(new BorderLayout());
toolPanel.add(new JBScrollPane(resultsTree), BorderLayout.CENTER);
toolPanel.add(progressPanel, BorderLayout.NORTH);
ToolTipManager.sharedInstance().registerComponent(resultsTree);
return toolPanel;
}
Aggregations