use of com.microsoft.tooling.msservices.serviceexplorer.Node in project azure-tools-for-java by Microsoft.
the class ServiceExplorerView method createTreeNode.
private TreeNode createTreeNode(Node node) {
TreeNode treeNode = new TreeNode(node);
// associate the TreeNode with the Node via it's "viewData"
// property; this allows us to quickly retrieve the DefaultMutableTreeNode
// object associated with a Node
node.setViewData(treeNode);
// listen for property change events on the node
node.addPropertyChangeListener(this);
// listen for structure changes on the node, i.e. when child nodes are
// added or removed
node.getChildNodes().addChangeListener(new NodeListChangeListener(treeNode));
// create child tree nodes for each child node
if (node.hasChildNodes()) {
for (Node childNode : node.getChildNodes()) {
treeNode.add(createTreeNode(childNode));
}
}
return treeNode;
}
use of com.microsoft.tooling.msservices.serviceexplorer.Node in project azure-tools-for-java by Microsoft.
the class ServerExplorerToolWindowFactory method treeNodeDblClicked.
private void treeNodeDblClicked(MouseEvent e, JTree tree, final Project project) {
final TreePath treePath = tree.getPathForLocation(e.getX(), e.getY());
if (treePath == null) {
return;
}
final Node node = getTreeNodeOnMouseClick(tree, treePath);
if (Objects.nonNull(node) && !node.isLoading()) {
node.onNodeDblClicked(project);
}
}
use of com.microsoft.tooling.msservices.serviceexplorer.Node in project azure-tools-for-java by Microsoft.
the class ServerExplorerToolWindowFactory method treeMousePressed.
private void treeMousePressed(MouseEvent e, JTree tree) {
// delegate click to the node's click action if this is a left button click
if (SwingUtilities.isLeftMouseButton(e)) {
TreePath treePath = tree.getPathForLocation(e.getX(), e.getY());
if (treePath == null) {
return;
}
// get the tree node associated with left mouse click
Node node = getTreeNodeOnMouseClick(tree, treePath);
// do not propagate the click event to it
if (Objects.nonNull(node) && !node.isLoading()) {
node.getClickAction().fireNodeActionEvent();
}
// for right click show the context menu populated with all the
// actions from the node
} else if (SwingUtilities.isRightMouseButton(e) || e.isPopupTrigger()) {
TreePath treePath = tree.getClosestPathForLocation(e.getX(), e.getY());
if (treePath == null) {
return;
}
// get the tree node associated with right mouse click
Node node = getTreeNodeOnMouseClick(tree, treePath);
if (Objects.nonNull(node) && node.hasNodeActions()) {
// select the node which was right-clicked
tree.getSelectionModel().setSelectionPath(treePath);
JPopupMenu menu = createPopupMenuForNode(node);
menu.show(e.getComponent(), e.getX(), e.getY());
}
}
}
use of com.microsoft.tooling.msservices.serviceexplorer.Node in project azure-tools-for-java by Microsoft.
the class ServerExplorerToolWindowFactory method createToolWindowContent.
@Override
@AzureOperation(name = "common|explorer.initialize", type = AzureOperation.Type.SERVICE)
public void createToolWindowContent(@NotNull final Project project, @NotNull final ToolWindow toolWindow) {
// initialize azure service module
AzureModule azureModule = new AzureModuleImpl(project);
HDInsightUtil.setHDInsightRootModule(azureModule);
azureModule.setSparkServerlessModule(new CosmosSparkClusterRootModuleImpl(azureModule));
azureModule.setArcadiaModule(new ArcadiaSparkClusterRootModuleImpl(azureModule));
// initialize aris service module
SqlBigDataClusterModule arisModule = new SqlBigDataClusterModule(project);
// initialize with all the service modules
DefaultTreeModel treeModel = new DefaultTreeModel(initRoot(project, ImmutableList.of(azureModule, arisModule)));
treeModelMap.put(project, treeModel);
// initialize tree
final JTree tree = new Tree(treeModel);
tree.setRootVisible(false);
tree.setCellRenderer(new NodeTreeCellRenderer());
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
new TreeSpeedSearch(tree);
final DefaultMutableTreeNode root = (DefaultMutableTreeNode) treeModel.getRoot();
final DefaultMutableTreeNode azureRoot = (DefaultMutableTreeNode) root.getChildAt(0);
final List<? extends com.microsoft.azure.toolkit.intellij.common.component.Tree.TreeNode<?>> modules = AzureExplorer.getModules().stream().map(m -> new com.microsoft.azure.toolkit.intellij.common.component.Tree.TreeNode<>(m, tree)).collect(Collectors.toList());
modules.forEach(azureRoot::add);
azureModule.setClearResourcesListener(() -> modules.forEach(m -> m.clearChildren()));
com.microsoft.azure.toolkit.intellij.common.component.Tree.installPopupMenu(tree);
treeModel.reload();
DataManager.registerDataProvider(tree, dataId -> {
if (StringUtils.equals(dataId, Action.SOURCE)) {
final DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
if (Objects.nonNull(selectedNode)) {
return selectedNode.getUserObject();
}
}
return null;
});
// add a click handler for the tree
tree.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(final MouseEvent e) {
if (e.getClickCount() == 2 && SwingUtilities.isLeftMouseButton(e)) {
treeNodeDblClicked(e, tree, project);
}
}
@Override
public void mousePressed(MouseEvent e) {
treeMousePressed(e, tree);
}
});
// add keyboard handler for the tree
tree.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
TreePath treePath = tree.getAnchorSelectionPath();
if (treePath == null) {
return;
}
final Object raw = treePath.getLastPathComponent();
if (raw instanceof com.microsoft.azure.toolkit.intellij.common.component.Tree.TreeNode || raw instanceof LoadingNode) {
return;
}
SortableTreeNode treeNode = (SortableTreeNode) raw;
Node node = (Node) treeNode.getUserObject();
Rectangle rectangle = tree.getRowBounds(tree.getRowForPath(treePath));
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
if (!node.isLoading()) {
node.getClickAction().fireNodeActionEvent();
}
} else if (e.getKeyCode() == KeyEvent.VK_CONTEXT_MENU) {
if (node.hasNodeActions()) {
JPopupMenu menu = createPopupMenuForNode(node);
menu.show(e.getComponent(), (int) rectangle.getX(), (int) rectangle.getY());
}
}
}
});
// add the tree to the window
toolWindow.getComponent().add(new JBScrollPane(tree));
// set tree and tree path to expand the node later
azureModule.setTree(tree);
azureModule.setTreePath(tree.getPathForRow(0));
// setup toolbar icons
addToolbarItems(toolWindow, project, azureModule);
}
use of com.microsoft.tooling.msservices.serviceexplorer.Node 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;
}
Aggregations