use of com.intellij.ui.treeStructure.treetable.TreeTable in project intellij-community by JetBrains.
the class GrDynamicImplicitProperty method navigate.
@Override
public void navigate(boolean requestFocus) {
if (canNavigateToSource()) {
super.navigate(requestFocus);
return;
}
DynamicToolWindowWrapper.getInstance(myProject).getToolWindow().activate(() -> {
DynamicToolWindowWrapper toolWindowWrapper = DynamicToolWindowWrapper.getInstance(myProject);
final TreeTable treeTable = toolWindowWrapper.getTreeTable();
final ListTreeTableModelOnColumns model = toolWindowWrapper.getTreeTableModel();
Object root = model.getRoot();
if (root == null || !(root instanceof DefaultMutableTreeNode))
return;
DefaultMutableTreeNode treeRoot = ((DefaultMutableTreeNode) root);
final PsiClass psiClass = getContainingClassElement();
if (psiClass == null)
return;
final DefaultMutableTreeNode desiredNode;
DPropertyElement dynamicProperty = null;
PsiClass trueSuper = null;
for (PsiClass aSuper : PsiUtil.iterateSupers(psiClass, true)) {
dynamicProperty = DynamicManager.getInstance(myProject).findConcreteDynamicProperty(aSuper.getQualifiedName(), getName());
if (dynamicProperty != null) {
trueSuper = aSuper;
break;
}
}
if (trueSuper == null)
return;
final DefaultMutableTreeNode classNode = TreeUtil.findNodeWithObject(treeRoot, new DClassElement(myProject, trueSuper.getQualifiedName()));
if (classNode == null)
return;
desiredNode = TreeUtil.findNodeWithObject(classNode, dynamicProperty);
if (desiredNode == null)
return;
final TreePath path = TreeUtil.getPathFromRoot(desiredNode);
treeTable.getTree().expandPath(path);
treeTable.getTree().setSelectionPath(path);
treeTable.getTree().fireTreeExpanded(path);
ToolWindowManager.getInstance(myProject).getFocusManager().requestFocus(treeTable, true);
treeTable.revalidate();
treeTable.repaint();
}, true);
}
use of com.intellij.ui.treeStructure.treetable.TreeTable in project android by JetBrains.
the class TraceViewPanel method createUIComponents.
private void createUIComponents() {
MouseAdapter l = new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
if (e.getSource() == myCloseLabel) {
closeSearchComponent();
} else if (e.getSource() == mySearchLabel) {
showSearchComponent();
} else if (e.getSource() == myZoomFitLabel) {
myTraceViewCanvas.zoomFit();
}
}
};
myDefaultHeaderPanel = new EditorHeaderComponent();
mySearchLabel = new JLabel(AllIcons.Actions.Search);
mySearchLabel.addMouseListener(l);
mySearchLabel.setToolTipText("Find (Ctrl + F)");
myZoomFitLabel = new JLabel(AndroidIcons.ZoomFit);
myZoomFitLabel.setToolTipText("Zoom Fit");
myZoomFitLabel.addMouseListener(l);
myFindPanel = new EditorHeaderComponent();
myFindFieldWrapper = new NonOpaquePanel(new BorderLayout());
mySearchField = createSearchField();
myFindFieldWrapper.add(mySearchField);
myCloseLabel = new JLabel(AllIcons.Actions.Cross);
myCloseLabel.addMouseListener(l);
myVmStatsTreeTableModel = new VmStatsTreeTableModel();
myTreeTable = new TreeTable(myVmStatsTreeTableModel);
myTraceViewCanvas = new TraceViewCanvasWrapper();
JBScrollPane scrollPane = new JBScrollPane(myTreeTable);
mySplitter = new JBSplitter(true, 0.75f);
mySplitter.setShowDividerControls(true);
mySplitter.setShowDividerIcon(true);
mySplitter.setFirstComponent(myTraceViewCanvas);
mySplitter.setSecondComponent(scrollPane);
}
use of com.intellij.ui.treeStructure.treetable.TreeTable in project intellij-community by JetBrains.
the class OptionTableWithPreviewPanel method createOptionsTree.
protected TreeTable createOptionsTree(CodeStyleSettings settings) {
DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode();
Map<String, DefaultMutableTreeNode> groupsMap = new THashMap<>();
List<Option> sorted = sortOptions(ContainerUtil.concat(myOptions, myCustomOptions));
for (Option each : sorted) {
if (!(myCustomOptions.contains(each) || myAllowedOptions.contains(each.field.getName()) || myShowAllStandardOptions))
continue;
String group = each.groupName;
MyTreeNode newNode = new MyTreeNode(each, each.title, settings);
DefaultMutableTreeNode groupNode = groupsMap.get(group);
if (groupNode != null) {
groupNode.add(newNode);
} else {
String groupName;
if (group == null) {
groupName = each.title;
groupNode = newNode;
} else {
groupName = group;
groupNode = new DefaultMutableTreeNode(groupName);
groupNode.add(newNode);
}
groupsMap.put(groupName, groupNode);
rootNode.add(groupNode);
}
}
ListTreeTableModel model = new ListTreeTableModel(rootNode, COLUMNS);
TreeTable treeTable = new TreeTable(model) {
@Override
public TreeTableCellRenderer createTableRenderer(TreeTableModel treeTableModel) {
TreeTableCellRenderer tableRenderer = super.createTableRenderer(treeTableModel);
UIUtil.setLineStyleAngled(tableRenderer);
tableRenderer.setRootVisible(false);
tableRenderer.setShowsRootHandles(true);
return tableRenderer;
}
@Override
public TableCellRenderer getCellRenderer(int row, int column) {
TreePath treePath = getTree().getPathForRow(row);
if (treePath == null)
return super.getCellRenderer(row, column);
Object node = treePath.getLastPathComponent();
@SuppressWarnings("unchecked") TableCellRenderer renderer = COLUMNS[column].getRenderer(node);
return renderer == null ? super.getCellRenderer(row, column) : renderer;
}
@Override
public TableCellEditor getCellEditor(int row, int column) {
TreePath treePath = getTree().getPathForRow(row);
if (treePath == null)
return super.getCellEditor(row, column);
Object node = treePath.getLastPathComponent();
@SuppressWarnings("unchecked") TableCellEditor editor = COLUMNS[column].getEditor(node);
return editor == null ? super.getCellEditor(row, column) : editor;
}
};
new TreeTableSpeedSearch(treeTable).setComparator(new SpeedSearchComparator(false));
treeTable.setRootVisible(false);
final JTree tree = treeTable.getTree();
tree.setCellRenderer(myTitleRenderer);
tree.setShowsRootHandles(true);
//myTreeTable.setRowHeight(new JComboBox(new String[]{"Sample Text"}).getPreferredSize().height);
treeTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
treeTable.setTableHeader(null);
TreeUtil.expandAll(tree);
treeTable.getColumnModel().getSelectionModel().setAnchorSelectionIndex(1);
treeTable.getColumnModel().getSelectionModel().setLeadSelectionIndex(1);
int maxWidth = tree.getPreferredScrollableViewportSize().width + 10;
final TableColumn titleColumn = treeTable.getColumnModel().getColumn(0);
titleColumn.setPreferredWidth(maxWidth);
titleColumn.setMinWidth(maxWidth);
titleColumn.setMaxWidth(maxWidth);
titleColumn.setResizable(false);
//final TableColumn levelColumn = treeTable.getColumnModel().getColumn(1);
//TODO[max]: better preffered size...
//TODO[kb]: Did I fixed it by making the last column floating?
//levelColumn.setPreferredWidth(valueSize.width);
//levelColumn.setMaxWidth(valueSize.width);
//levelColumn.setMinWidth(valueSize.width);
//levelColumn.setResizable(false);
final Dimension valueSize = new JLabel(ApplicationBundle.message("option.table.sizing.text")).getPreferredSize();
treeTable.setPreferredScrollableViewportSize(new Dimension(maxWidth + valueSize.width + 10, 20));
return treeTable;
}
use of com.intellij.ui.treeStructure.treetable.TreeTable in project intellij-plugins by JetBrains.
the class CompilerOptionsConfigurable method createTreeTable.
private TreeTable createTreeTable() {
final DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode();
final TreeTableModel model = new ListTreeTableModel(rootNode, createColumns());
final TreeTable treeTable = new TreeTable(model);
treeTable.getColumnModel().getColumn(1).setCellRenderer(createValueRenderer());
treeTable.getColumnModel().getColumn(1).setCellEditor(createValueEditor());
final TreeTableTree tree = treeTable.getTree();
tree.setRootVisible(false);
tree.setLineStyleAngled();
tree.setShowsRootHandles(true);
tree.setCellRenderer(createTreeCellRenderer());
treeTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
treeTable.setRowHeight(new JTextField("Fake").getPreferredSize().height + 3);
//treeTable.setTableHeader(null);
final DefaultActionGroup group = new DefaultActionGroup();
group.add(new RestoreDefaultValueAction(tree));
PopupHandler.installPopupHandler(treeTable, group, ActionPlaces.UNKNOWN, ActionManager.getInstance());
new TreeTableSpeedSearch(treeTable, o -> {
final Object userObject = ((DefaultMutableTreeNode) o.getLastPathComponent()).getUserObject();
return userObject instanceof CompilerOptionInfo ? ((CompilerOptionInfo) userObject).DISPLAY_NAME : "";
}).setComparator(new SpeedSearchComparator(false));
return treeTable;
}
use of com.intellij.ui.treeStructure.treetable.TreeTable in project intellij-community by JetBrains.
the class GrDynamicImplicitMethod method navigate.
@Override
public void navigate(boolean requestFocus) {
DynamicToolWindowWrapper.getInstance(getProject()).getToolWindow().activate(() -> {
DynamicToolWindowWrapper toolWindowWrapper = DynamicToolWindowWrapper.getInstance(getProject());
final TreeTable treeTable = toolWindowWrapper.getTreeTable();
final ListTreeTableModelOnColumns model = toolWindowWrapper.getTreeTableModel();
Object root = model.getRoot();
if (root == null || !(root instanceof DefaultMutableTreeNode))
return;
DefaultMutableTreeNode treeRoot = ((DefaultMutableTreeNode) root);
DefaultMutableTreeNode desiredNode;
JavaPsiFacade facade = JavaPsiFacade.getInstance(getProject());
final PsiClassType fqClassName = facade.getElementFactory().createTypeByFQClassName(myContainingClassName, ProjectScope.getAllScope(getProject()));
final PsiClass psiClass = fqClassName.resolve();
if (psiClass == null)
return;
PsiClass trueClass = null;
DMethodElement methodElement = null;
final GrParameter[] parameters = getParameters();
List<String> parameterTypes = new ArrayList<>();
for (GrParameter parameter : parameters) {
final String type = parameter.getType().getCanonicalText();
parameterTypes.add(type);
}
for (PsiClass aSuper : PsiUtil.iterateSupers(psiClass, true)) {
methodElement = DynamicManager.getInstance(getProject()).findConcreteDynamicMethod(aSuper.getQualifiedName(), getName(), ArrayUtil.toStringArray(parameterTypes));
if (methodElement != null) {
trueClass = aSuper;
break;
}
}
if (trueClass == null)
return;
final DefaultMutableTreeNode classNode = TreeUtil.findNodeWithObject(treeRoot, new DClassElement(getProject(), trueClass.getQualifiedName()));
if (classNode == null)
return;
desiredNode = TreeUtil.findNodeWithObject(classNode, methodElement);
if (desiredNode == null)
return;
final TreePath path = TreeUtil.getPathFromRoot(desiredNode);
treeTable.getTree().expandPath(path);
treeTable.getTree().setSelectionPath(path);
treeTable.getTree().fireTreeExpanded(path);
// ToolWindowManager.getInstance(myProject).getFocusManager().requestFocus(treeTable, true);
treeTable.revalidate();
treeTable.repaint();
}, true);
}
Aggregations