use of com.intellij.ui.treeStructure.Tree in project intellij-community by JetBrains.
the class AbstractTreeBuilderCrashTest method initTree.
private void initTree(final Node root) throws Exception {
myStructure = new BaseStructure() {
@Override
public Object getRootElement() {
return root;
}
@Override
public Object[] doGetChildElements(final Object element) {
return ((Node) element).getChildren();
}
@Override
public Object getParentElement(final Object element) {
return ((Node) element).getParent();
}
@Override
@NotNull
public NodeDescriptor doCreateDescriptor(final Object element, final NodeDescriptor parentDescriptor) {
return (NodeDescriptor) element;
}
};
myTreeModel = new DefaultTreeModel(new DefaultMutableTreeNode());
myTree = new Tree(myTreeModel);
myTree.setRootVisible(false);
initBuilder(new BaseTreeBuilder(myTree, myTreeModel, myStructure, AlphaComparator.INSTANCE) {
@Override
protected boolean isAutoExpandNode(final NodeDescriptor nodeDescriptor) {
return true;
}
@Override
protected boolean isDisposeOnCollapsing(final NodeDescriptor nodeDescriptor) {
return false;
}
});
Disposer.register(getRootDisposable(), getBuilder());
showTree();
}
use of com.intellij.ui.treeStructure.Tree in project intellij-community by JetBrains.
the class AbstractTreeBuilderTest method setUp.
@Override
protected void setUp() throws Exception {
super.setUp();
myComparator = new NodeDescriptor.NodeComparator.Delegate<>(new NodeDescriptor.NodeComparator<NodeDescriptor>() {
@Override
public int compare(NodeDescriptor o1, NodeDescriptor o2) {
return AlphaComparator.INSTANCE.compare(o1, o2);
}
});
mySortedParent.clear();
myTreeModel = new DefaultTreeModel(new DefaultMutableTreeNode(null));
myTreeModel.addTreeModelListener(new TreeModelListener() {
@Override
public void treeNodesChanged(TreeModelEvent e) {
assertEdt();
}
@Override
public void treeNodesInserted(TreeModelEvent e) {
assertEdt();
}
@Override
public void treeNodesRemoved(TreeModelEvent e) {
assertEdt();
}
@Override
public void treeStructureChanged(TreeModelEvent e) {
assertEdt();
}
});
myTree = new Tree(myTreeModel);
myStructure = new MyStructure();
myRoot = new Node(null, "/");
initBuilder(new MyBuilder());
myTree.getSelectionModel().addTreeSelectionListener(new TreeSelectionListener() {
@Override
public void valueChanged(TreeSelectionEvent e) {
assertEdt();
}
});
myTree.addTreeExpansionListener(new TreeExpansionListener() {
@Override
public void treeExpanded(TreeExpansionEvent event) {
assertEdt();
}
@Override
public void treeCollapsed(TreeExpansionEvent event) {
assertEdt();
}
});
}
use of com.intellij.ui.treeStructure.Tree in project intellij-community by JetBrains.
the class DnDDemo method main.
public static void main(String[] args) {
JFrame frame = new JFrame("DnD Demo");
frame.getContentPane().setLayout(new BorderLayout());
JPanel panel = new JPanel(new BorderLayout());
final JTree source = new Tree();
panel.add(source, BorderLayout.WEST);
final DnDManager dndManager = new DnDManagerImpl(null);
dndManager.registerSource(new DnDSource() {
public boolean canStartDragging(DnDAction action, Point dragOrigin) {
return true;
}
public DnDDragStartBean startDragging(DnDAction action, Point point) {
return new DnDDragStartBean(source.getLastSelectedPathComponent().toString());
}
@Nullable
public Pair<Image, Point> createDraggedImage(DnDAction action, Point dragOrigin) {
return null;
}
public void dragDropEnd() {
}
public void dropActionChanged(final int gestureModifiers) {
}
}, source);
JTabbedPane tabs = new JBTabbedPane();
JPanel delegates = new JPanel(new FlowLayout());
final JLabel delegate1Label = new JLabel("Delegate 1");
delegates.add(delegate1Label);
final JLabel delegate2Label = new JLabel("Delegate 2");
delegates.add(delegate2Label);
final DnDTarget delegee1 = new DnDTarget() {
public boolean update(DnDEvent aEvent) {
aEvent.setDropPossible(true, "Delegee 1");
aEvent.setHighlighting(delegate1Label, H_ARROWS | RECTANGLE);
return false;
}
public void drop(DnDEvent aEvent) {
System.out.println("Delegee 1 accepted drop");
}
public void cleanUpOnLeave() {
}
public void updateDraggedImage(Image image, Point dropPoint, Point imageOffset) {
}
};
final DnDTarget delegee2 = new DnDTarget() {
public boolean update(DnDEvent aEvent) {
aEvent.setDropPossible("Delegee 2", new DropActionHandler() {
public void performDrop(DnDEvent aEvent) {
System.out.println("Delegee 2 accepted drop");
}
});
aEvent.setHighlighting(delegate2Label, V_ARROWS | RECTANGLE);
return false;
}
public void drop(DnDEvent aEvent) {
}
public void cleanUpOnLeave() {
}
public void updateDraggedImage(Image image, Point dropPoint, Point imageOffset) {
}
};
dndManager.registerTarget(new DnDTarget() {
public boolean update(DnDEvent aEvent) {
if (aEvent.getCurrentOverComponent() == delegate1Label) {
return aEvent.delegateUpdateTo(delegee1);
} else if (aEvent.getCurrentOverComponent() == delegate2Label) {
return aEvent.delegateUpdateTo(delegee2);
}
aEvent.setDropPossible(false, "Nothing can be dropped here");
return false;
}
public void drop(DnDEvent aEvent) {
if (aEvent.getCurrentOverComponent() == delegate1Label) {
aEvent.delegateDropTo(delegee1);
}
}
public void cleanUpOnLeave() {
}
public void updateDraggedImage(Image image, Point dropPoint, Point imageOffset) {
}
}, delegates);
tabs.add("Delegates", delegates);
final JPanel xy = new JPanel();
dndManager.registerTarget(new DnDTarget() {
public boolean update(DnDEvent aEvent) {
aEvent.setDropPossible(true, "Drop to " + asXyString(aEvent));
return false;
}
public void drop(DnDEvent aEvent) {
System.out.println("Droppped to " + asXyString(aEvent));
}
public void cleanUpOnLeave() {
}
public void updateDraggedImage(Image image, Point dropPoint, Point imageOffset) {
}
}, xy);
tabs.add("XY drop", xy);
panel.add(tabs, BorderLayout.CENTER);
frame.getContentPane().add(panel, BorderLayout.CENTER);
frame.setBounds(100, 100, 500, 500);
frame.show();
}
use of com.intellij.ui.treeStructure.Tree in project intellij-community by JetBrains.
the class CvsTree method init.
public void init() {
final TreeNode root = createRoot(myProject);
myModel = new DefaultTreeModel(root, true);
myTree = new Tree(myModel);
add(ScrollPaneFactory.createScrollPane(myTree), BorderLayout.CENTER);
myTree.getSelectionModel().setSelectionMode(mySelectionMode);
myTree.setCellRenderer(new Cvs2Renderer());
addSelectionListener();
final TreeUIHelper uiHelper = TreeUIHelper.getInstance();
uiHelper.installTreeSpeedSearch(myTree);
TreeUtil.installActions(myTree);
IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> {
IdeFocusManager.getGlobalInstance().requestFocus(myTree, true);
});
}
use of com.intellij.ui.treeStructure.Tree in project intellij-community by JetBrains.
the class ConfigureClientPropertiesDialog method createCenterPanel.
@Nullable
protected JComponent createCenterPanel() {
myClassTree = new Tree();
myClassTree.setRootVisible(false);
myClassTree.getSelectionModel().addTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e) {
final TreePath leadSelectionPath = e.getNewLeadSelectionPath();
if (leadSelectionPath == null)
return;
final DefaultMutableTreeNode node = (DefaultMutableTreeNode) leadSelectionPath.getLastPathComponent();
mySelectedClass = (Class) node.getUserObject();
updateSelectedProperties();
}
});
myClassTree.setCellRenderer(new ColoredTreeCellRenderer() {
public void customizeCellRenderer(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
if (node.getUserObject() instanceof Class) {
Class cls = (Class) node.getUserObject();
if (cls != null) {
append(cls.getName(), SimpleTextAttributes.REGULAR_ATTRIBUTES);
}
}
}
});
fillClassTree();
myPropertiesTable = new JBTable();
myPropertiesTable.setModel(myTableModel);
mySplitter = new JBSplitter("ConfigureClientPropertiesDialog.splitterProportion", 0.5f);
mySplitter.setFirstComponent(ToolbarDecorator.createDecorator(myClassTree).setAddAction(new AnActionButtonRunnable() {
@Override
public void run(AnActionButton button) {
ClassNameInputDialog dlg = new ClassNameInputDialog(myProject, mySplitter);
dlg.show();
if (dlg.getExitCode() == OK_EXIT_CODE) {
String className = dlg.getClassName();
if (className.length() == 0)
return;
final Class aClass;
try {
aClass = Class.forName(className);
} catch (ClassNotFoundException ex) {
Messages.showErrorDialog(mySplitter, UIDesignerBundle.message("client.properties.class.not.found", className), UIDesignerBundle.message("client.properties.title"));
return;
}
if (!JComponent.class.isAssignableFrom(aClass)) {
Messages.showErrorDialog(mySplitter, UIDesignerBundle.message("client.properties.class.not.component", className), UIDesignerBundle.message("client.properties.title"));
return;
}
myManager.addClientPropertyClass(className);
fillClassTree();
}
}
}).setRemoveAction(new AnActionButtonRunnable() {
@Override
public void run(AnActionButton button) {
if (mySelectedClass != null) {
myManager.removeClientPropertyClass(mySelectedClass);
fillClassTree();
}
}
}).setToolbarPosition(SystemInfo.isMac ? ActionToolbarPosition.BOTTOM : ActionToolbarPosition.RIGHT).createPanel());
mySplitter.setSecondComponent(ToolbarDecorator.createDecorator(myPropertiesTable).disableUpDownActions().setAddAction(new AnActionButtonRunnable() {
@Override
public void run(AnActionButton button) {
AddClientPropertyDialog dlg = new AddClientPropertyDialog(myProject);
dlg.show();
if (dlg.getExitCode() == OK_EXIT_CODE) {
ClientPropertiesManager.ClientProperty[] props = myManager.getClientProperties(mySelectedClass);
for (ClientPropertiesManager.ClientProperty prop : props) {
if (prop.getName().equalsIgnoreCase(dlg.getEnteredProperty().getName())) {
Messages.showErrorDialog(mySplitter, UIDesignerBundle.message("client.properties.already.defined", prop.getName()), UIDesignerBundle.message("client.properties.title"));
return;
}
}
myManager.addConfiguredProperty(mySelectedClass, dlg.getEnteredProperty());
updateSelectedProperties();
}
}
}).setRemoveAction(new AnActionButtonRunnable() {
@Override
public void run(AnActionButton button) {
int row = myPropertiesTable.getSelectedRow();
if (row >= 0 && row < mySelectedProperties.length) {
myManager.removeConfiguredProperty(mySelectedClass, mySelectedProperties[row].getName());
updateSelectedProperties();
if (mySelectedProperties.length > 0) {
if (row >= mySelectedProperties.length)
row--;
myPropertiesTable.getSelectionModel().setSelectionInterval(row, row);
}
}
}
}).createPanel());
return mySplitter;
}
Aggregations