Search in sources :

Example 1 with ProjectListBuilder

use of com.intellij.ide.commander.ProjectListBuilder in project intellij-community by JetBrains.

the class FileStructureDialog method addCheckbox.

private void addCheckbox(final JPanel panel, final TreeAction action) {
    String text = action instanceof FileStructureFilter ? ((FileStructureFilter) action).getCheckBoxText() : action instanceof FileStructureNodeProvider ? ((FileStructureNodeProvider) action).getCheckBoxText() : null;
    if (text == null)
        return;
    Shortcut[] shortcuts = FileStructurePopup.extractShortcutFor(action);
    final JCheckBox chkFilter = new JCheckBox();
    chkFilter.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(final ActionEvent e) {
            ProjectListBuilder builder = (ProjectListBuilder) myCommanderPanel.getBuilder();
            PsiElement currentParent = null;
            if (builder != null) {
                final AbstractTreeNode parentNode = builder.getParentNode();
                final Object value = parentNode.getValue();
                if (value instanceof StructureViewTreeElement) {
                    final Object elementValue = ((StructureViewTreeElement) value).getValue();
                    if (elementValue instanceof PsiElement) {
                        currentParent = (PsiElement) elementValue;
                    }
                }
            }
            final boolean state = chkFilter.isSelected();
            myTreeActionsOwner.setActionIncluded(action, action instanceof FileStructureFilter ? !state : state);
            myTreeStructure.rebuildTree();
            if (builder != null) {
                if (currentParent != null) {
                    boolean oldNarrowDown = myShouldNarrowDown;
                    myShouldNarrowDown = false;
                    try {
                        builder.enterElement(currentParent, PsiUtilCore.getVirtualFile(currentParent));
                    } finally {
                        myShouldNarrowDown = oldNarrowDown;
                    }
                }
                builder.updateList(true);
            }
            if (SpeedSearchBase.hasActiveSpeedSearch(myCommanderPanel.getList())) {
                final SpeedSearchSupply supply = SpeedSearchSupply.getSupply(myCommanderPanel.getList());
                if (supply != null && supply.isPopupActive())
                    supply.refreshSelection();
            }
        }
    });
    chkFilter.setFocusable(false);
    if (shortcuts.length > 0) {
        text += " (" + KeymapUtil.getShortcutText(shortcuts[0]) + ")";
        new AnAction() {

            @Override
            public void actionPerformed(final AnActionEvent e) {
                chkFilter.doClick();
            }
        }.registerCustomShortcutSet(new CustomShortcutSet(shortcuts), myCommanderPanel);
    }
    chkFilter.setText(text);
    panel.add(chkFilter);
//,new GridBagConstraints(0, GridBagConstraints.RELATIVE, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 5, 0, 5), 0, 0));
}
Also used : ProjectListBuilder(com.intellij.ide.commander.ProjectListBuilder) ActionEvent(java.awt.event.ActionEvent) AbstractTreeNode(com.intellij.ide.util.treeView.AbstractTreeNode) ActionListener(java.awt.event.ActionListener) SpeedSearchSupply(com.intellij.ui.speedSearch.SpeedSearchSupply) StructureViewTreeElement(com.intellij.ide.structureView.StructureViewTreeElement) PsiElement(com.intellij.psi.PsiElement)

Example 2 with ProjectListBuilder

use of com.intellij.ide.commander.ProjectListBuilder in project intellij-community by JetBrains.

the class FileStructureDialog method createCenterPanel.

@Override
protected JComponent createCenterPanel() {
    myCommanderPanel = new MyCommanderPanel(myProject);
    myTreeStructure = new MyStructureTreeStructure();
    List<FileStructureFilter> fileStructureFilters = new ArrayList<>();
    List<FileStructureNodeProvider> fileStructureNodeProviders = new ArrayList<>();
    if (myTreeActionsOwner != null) {
        for (Filter filter : myBaseTreeModel.getFilters()) {
            if (filter instanceof FileStructureFilter) {
                final FileStructureFilter fsFilter = (FileStructureFilter) filter;
                myTreeActionsOwner.setActionIncluded(fsFilter, true);
                fileStructureFilters.add(fsFilter);
            }
        }
        if (myBaseTreeModel instanceof ProvidingTreeModel) {
            for (NodeProvider provider : ((ProvidingTreeModel) myBaseTreeModel).getNodeProviders()) {
                if (provider instanceof FileStructureNodeProvider) {
                    fileStructureNodeProviders.add((FileStructureNodeProvider) provider);
                }
            }
        }
    }
    PsiFile psiFile = getPsiFile(myProject);
    boolean showRoot = isShowRoot(psiFile);
    ProjectListBuilder projectListBuilder = new ProjectListBuilder(myProject, myCommanderPanel, myTreeStructure, null, showRoot) {

        @Override
        protected boolean shouldEnterSingleTopLevelElement(Object rootChild) {
            Object element = ((StructureViewTreeElement) ((AbstractTreeNode) rootChild).getValue()).getValue();
            return myBaseTreeModel.shouldEnterElement(element);
        }

        @Override
        protected boolean nodeIsAcceptableForElement(AbstractTreeNode node, Object element) {
            return Comparing.equal(((StructureViewTreeElement) node.getValue()).getValue(), element);
        }

        @Override
        protected void refreshSelection() {
            myCommanderPanel.scrollSelectionInView();
            if (myShouldNarrowDown) {
                myCommanderPanel.updateSpeedSearch();
            }
        }

        @Override
        protected List<AbstractTreeNode> getAllAcceptableNodes(final Object[] childElements, VirtualFile file) {
            ArrayList<AbstractTreeNode> result = new ArrayList<>();
            for (Object childElement : childElements) {
                result.add((AbstractTreeNode) childElement);
            }
            return result;
        }
    };
    myCommanderPanel.setBuilder(projectListBuilder);
    myCommanderPanel.setTitlePanelVisible(false);
    new AnAction() {

        @Override
        public void actionPerformed(AnActionEvent e) {
            final boolean succeeded = myCommanderPanel.navigateSelectedElement();
            if (succeeded) {
                unregisterCustomShortcutSet(myCommanderPanel);
            }
        }
    }.registerCustomShortcutSet(ActionManager.getInstance().getAction(IdeActions.ACTION_EDIT_SOURCE).getShortcutSet(), myCommanderPanel);
    myCommanderPanel.setPreferredSize(JBUI.size(400, 500));
    JPanel panel = new JPanel(new BorderLayout());
    JPanel comboPanel = new JPanel(new GridLayout(0, 2, 0, 0));
    addNarrowDownCheckbox(comboPanel);
    for (FileStructureFilter filter : fileStructureFilters) {
        addCheckbox(comboPanel, filter);
    }
    for (FileStructureNodeProvider provider : fileStructureNodeProviders) {
        addCheckbox(comboPanel, provider);
    }
    myCommanderPanel.setBorder(IdeBorderFactory.createBorder(SideBorder.TOP));
    panel.add(comboPanel, BorderLayout.NORTH);
    panel.add(myCommanderPanel, BorderLayout.CENTER);
    return panel;
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) ProjectListBuilder(com.intellij.ide.commander.ProjectListBuilder) ArrayList(java.util.ArrayList) AbstractTreeNode(com.intellij.ide.util.treeView.AbstractTreeNode) PsiFile(com.intellij.psi.PsiFile) StructureViewTreeElement(com.intellij.ide.structureView.StructureViewTreeElement)

Example 3 with ProjectListBuilder

use of com.intellij.ide.commander.ProjectListBuilder in project intellij-community by JetBrains.

the class FileStructureDialog method addNarrowDownCheckbox.

private void addNarrowDownCheckbox(final JPanel panel) {
    final JCheckBox checkBox = new JCheckBox(IdeBundle.message("checkbox.narrow.down.the.list.on.typing"));
    checkBox.setSelected(PropertiesComponent.getInstance().isTrueValue(ourPropertyKey));
    checkBox.addChangeListener(new ChangeListener() {

        @Override
        public void stateChanged(ChangeEvent e) {
            myShouldNarrowDown = checkBox.isSelected();
            PropertiesComponent.getInstance().setValue(ourPropertyKey, myShouldNarrowDown);
            ProjectListBuilder builder = (ProjectListBuilder) myCommanderPanel.getBuilder();
            if (builder == null) {
                return;
            }
            builder.addUpdateRequest();
        }
    });
    checkBox.setFocusable(false);
    panel.add(checkBox);
//,new GridBagConstraints(0, GridBagConstraints.RELATIVE, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 5, 0, 5), 0, 0));
}
Also used : ProjectListBuilder(com.intellij.ide.commander.ProjectListBuilder) ChangeEvent(javax.swing.event.ChangeEvent) PropertyChangeEvent(java.beans.PropertyChangeEvent) ChangeListener(javax.swing.event.ChangeListener) PropertyChangeListener(java.beans.PropertyChangeListener)

Aggregations

ProjectListBuilder (com.intellij.ide.commander.ProjectListBuilder)3 StructureViewTreeElement (com.intellij.ide.structureView.StructureViewTreeElement)2 AbstractTreeNode (com.intellij.ide.util.treeView.AbstractTreeNode)2 VirtualFile (com.intellij.openapi.vfs.VirtualFile)1 PsiElement (com.intellij.psi.PsiElement)1 PsiFile (com.intellij.psi.PsiFile)1 SpeedSearchSupply (com.intellij.ui.speedSearch.SpeedSearchSupply)1 ActionEvent (java.awt.event.ActionEvent)1 ActionListener (java.awt.event.ActionListener)1 PropertyChangeEvent (java.beans.PropertyChangeEvent)1 PropertyChangeListener (java.beans.PropertyChangeListener)1 ArrayList (java.util.ArrayList)1 ChangeEvent (javax.swing.event.ChangeEvent)1 ChangeListener (javax.swing.event.ChangeListener)1