Search in sources :

Example 11 with TabbedPaneWrapper

use of com.intellij.ui.TabbedPaneWrapper in project intellij-community by JetBrains.

the class SdkEditor method createMainPanel.

private void createMainPanel() {
    myMainPanel = new JPanel(new GridBagLayout());
    myTabbedPane = new TabbedPaneWrapper(myDisposable);
    for (OrderRootType type : OrderRootType.getAllTypes()) {
        if (mySdk == null || showTabForType(type)) {
            final SdkPathEditor pathEditor = OrderRootTypeUIFactory.FACTORY.getByKey(type).createPathEditor(mySdk);
            if (pathEditor != null) {
                pathEditor.setAddBaseDir(mySdk.getHomeDirectory());
                myTabbedPane.addTab(pathEditor.getDisplayName(), pathEditor.createComponent());
                myPathEditors.put(type, pathEditor);
            }
        }
    }
    myTabbedPane.addChangeListener(new ChangeListener() {

        @Override
        public void stateChanged(final ChangeEvent e) {
            myHistory.pushQueryPlace();
        }
    });
    myHomeComponent = createHomeComponent();
    myHomeComponent.getTextField().setEditable(false);
    myHomeFieldLabel = new JLabel(getHomeFieldLabelValue());
    final int leftInset = 10;
    final int rightInset = 10;
    myMainPanel.add(myHomeFieldLabel, new GridBagConstraints(0, GridBagConstraints.RELATIVE, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, JBUI.insets(2, leftInset, 2, 2), 0, 0));
    myMainPanel.add(myHomeComponent, new GridBagConstraints(1, GridBagConstraints.RELATIVE, 1, 1, 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, JBUI.insets(2, 2, 2, rightInset), 0, 0));
    myAdditionalDataPanel = new JPanel(new BorderLayout());
    myMainPanel.add(myAdditionalDataPanel, new GridBagConstraints(0, GridBagConstraints.RELATIVE, 2, 1, 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, JBUI.insets(2, leftInset, 0, rightInset), 0, 0));
    myMainPanel.add(myTabbedPane.getComponent(), new GridBagConstraints(0, GridBagConstraints.RELATIVE, 2, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, JBUI.insetsTop(2), 0, 0));
}
Also used : ChangeEvent(javax.swing.event.ChangeEvent) TabbedPaneWrapper(com.intellij.ui.TabbedPaneWrapper) OrderRootType(com.intellij.openapi.roots.OrderRootType) ChangeListener(javax.swing.event.ChangeListener)

Example 12 with TabbedPaneWrapper

use of com.intellij.ui.TabbedPaneWrapper in project intellij-community by JetBrains.

the class TreeFileChooserDialog method createCenterPanel.

@Override
protected JComponent createCenterPanel() {
    final DefaultTreeModel model = new DefaultTreeModel(new DefaultMutableTreeNode());
    myTree = new Tree(model);
    final ProjectAbstractTreeStructureBase treeStructure = new AbstractProjectTreeStructure(myProject) {

        @Override
        public boolean isFlattenPackages() {
            return false;
        }

        @Override
        public boolean isShowMembers() {
            return false;
        }

        @Override
        public boolean isHideEmptyMiddlePackages() {
            return true;
        }

        @Override
        public Object[] getChildElements(final Object element) {
            return filterFiles(super.getChildElements(element));
        }

        @Override
        public boolean isAbbreviatePackageNames() {
            return false;
        }

        @Override
        public boolean isShowLibraryContents() {
            return myShowLibraryContents;
        }

        @Override
        public boolean isShowModules() {
            return false;
        }

        @Override
        public List<TreeStructureProvider> getProviders() {
            return myDisableStructureProviders ? null : super.getProviders();
        }
    };
    myBuilder = new ProjectTreeBuilder(myProject, myTree, model, AlphaComparator.INSTANCE, treeStructure);
    myTree.setRootVisible(false);
    myTree.expandRow(0);
    myTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
    myTree.setCellRenderer(new NodeRenderer());
    UIUtil.setLineStyleAngled(myTree);
    final JScrollPane scrollPane = ScrollPaneFactory.createScrollPane(myTree);
    scrollPane.setPreferredSize(JBUI.size(500, 300));
    myTree.addKeyListener(new KeyAdapter() {

        @Override
        public void keyPressed(final KeyEvent e) {
            if (KeyEvent.VK_ENTER == e.getKeyCode()) {
                doOKAction();
            }
        }
    });
    new DoubleClickListener() {

        @Override
        protected boolean onDoubleClick(MouseEvent e) {
            final TreePath path = myTree.getPathForLocation(e.getX(), e.getY());
            if (path != null && myTree.isPathSelected(path)) {
                doOKAction();
                return true;
            }
            return false;
        }
    }.installOn(myTree);
    myTree.addTreeSelectionListener(new TreeSelectionListener() {

        @Override
        public void valueChanged(final TreeSelectionEvent e) {
            handleSelectionChanged();
        }
    });
    new TreeSpeedSearch(myTree);
    myTabbedPane = new TabbedPaneWrapper(getDisposable());
    final JPanel dummyPanel = new JPanel(new BorderLayout());
    String name = null;
    if (myInitialFile != null) {
        name = myInitialFile.getName();
    }
    PsiElement context = myInitialFile == null ? null : myInitialFile;
    myGotoByNamePanel = new ChooseByNamePanel(myProject, new MyGotoFileModel(), name, true, context) {

        @Override
        protected void close(final boolean isOk) {
            super.close(isOk);
            if (isOk) {
                doOKAction();
            } else {
                doCancelAction();
            }
        }

        @Override
        protected void initUI(final ChooseByNamePopupComponent.Callback callback, final ModalityState modalityState, boolean allowMultipleSelection) {
            super.initUI(callback, modalityState, allowMultipleSelection);
            dummyPanel.add(myGotoByNamePanel.getPanel(), BorderLayout.CENTER);
            //IdeFocusTraversalPolicy.getPreferredFocusedComponent(myGotoByNamePanel.getPanel()).requestFocus();
            if (mySelectSearchByNameTab) {
                myTabbedPane.setSelectedIndex(1);
            }
        }

        @Override
        protected void showTextFieldPanel() {
        }

        @Override
        protected void chosenElementMightChange() {
            handleSelectionChanged();
        }
    };
    myTabbedPane.addTab(IdeBundle.message("tab.chooser.project"), scrollPane);
    myTabbedPane.addTab(IdeBundle.message("tab.chooser.search.by.name"), dummyPanel);
    SwingUtilities.invokeLater(() -> myGotoByNamePanel.invoke(new MyCallback(), ModalityState.stateForComponent(getRootPane()), false));
    myTabbedPane.addChangeListener(new ChangeListener() {

        @Override
        public void stateChanged(final ChangeEvent e) {
            handleSelectionChanged();
        }
    });
    return myTabbedPane.getComponent();
}
Also used : DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) DoubleClickListener(com.intellij.ui.DoubleClickListener) KeyAdapter(java.awt.event.KeyAdapter) TreeSpeedSearch(com.intellij.ui.TreeSpeedSearch) TreeSelectionListener(javax.swing.event.TreeSelectionListener) TreeStructureProvider(com.intellij.ide.projectView.TreeStructureProvider) AbstractProjectTreeStructure(com.intellij.ide.projectView.impl.AbstractProjectTreeStructure) NodeRenderer(com.intellij.ide.util.treeView.NodeRenderer) KeyEvent(java.awt.event.KeyEvent) ProjectAbstractTreeStructureBase(com.intellij.ide.projectView.impl.ProjectAbstractTreeStructureBase) Tree(com.intellij.ui.treeStructure.Tree) ChangeListener(javax.swing.event.ChangeListener) PsiElement(com.intellij.psi.PsiElement) MouseEvent(java.awt.event.MouseEvent) TabbedPaneWrapper(com.intellij.ui.TabbedPaneWrapper) DefaultTreeModel(javax.swing.tree.DefaultTreeModel) ChooseByNamePanel(com.intellij.ide.util.gotoByName.ChooseByNamePanel) TreePath(javax.swing.tree.TreePath) ChangeEvent(javax.swing.event.ChangeEvent) BaseProjectTreeBuilder(com.intellij.ide.projectView.BaseProjectTreeBuilder) ProjectTreeBuilder(com.intellij.ide.projectView.impl.ProjectTreeBuilder) ModalityState(com.intellij.openapi.application.ModalityState) TreeSelectionEvent(javax.swing.event.TreeSelectionEvent) ChooseByNamePopupComponent(com.intellij.ide.util.gotoByName.ChooseByNamePopupComponent)

Example 13 with TabbedPaneWrapper

use of com.intellij.ui.TabbedPaneWrapper in project intellij-community by JetBrains.

the class SearchUtil method processComponent.

private static void processComponent(JComponent component, Set<OptionDescription> configurableOptions, String path) {
    if (component instanceof SkipSelfSearchComponent)
        return;
    final Border border = component.getBorder();
    if (border instanceof TitledBorder) {
        final TitledBorder titledBorder = (TitledBorder) border;
        final String title = titledBorder.getTitle();
        if (title != null) {
            processUILabel(title, configurableOptions, path);
        }
    }
    if (component instanceof JLabel) {
        final String label = ((JLabel) component).getText();
        if (label != null) {
            processUILabel(label, configurableOptions, path);
        }
    } else if (component instanceof JCheckBox) {
        final String checkBoxTitle = ((JCheckBox) component).getText();
        if (checkBoxTitle != null) {
            processUILabel(checkBoxTitle, configurableOptions, path);
        }
    } else if (component instanceof JRadioButton) {
        final String radioButtonTitle = ((JRadioButton) component).getText();
        if (radioButtonTitle != null) {
            processUILabel(radioButtonTitle, configurableOptions, path);
        }
    } else if (component instanceof JButton) {
        final String buttonTitle = ((JButton) component).getText();
        if (buttonTitle != null) {
            processUILabel(buttonTitle, configurableOptions, path);
        }
    }
    if (component instanceof JTabbedPane) {
        final JTabbedPane tabbedPane = (JTabbedPane) component;
        final int tabCount = tabbedPane.getTabCount();
        for (int i = 0; i < tabCount; i++) {
            final String title = path != null ? path + '.' + tabbedPane.getTitleAt(i) : tabbedPane.getTitleAt(i);
            processUILabel(title, configurableOptions, title);
            final Component tabComponent = tabbedPane.getComponentAt(i);
            if (tabComponent instanceof JComponent) {
                processComponent((JComponent) tabComponent, configurableOptions, title);
            }
        }
    } else if (component instanceof TabbedPaneWrapper.TabbedPaneHolder) {
        final TabbedPaneWrapper tabbedPane = ((TabbedPaneWrapper.TabbedPaneHolder) component).getTabbedPaneWrapper();
        final int tabCount = tabbedPane.getTabCount();
        for (int i = 0; i < tabCount; i++) {
            String tabTitle = tabbedPane.getTitleAt(i);
            final String title = path != null ? path + '.' + tabTitle : tabTitle;
            processUILabel(title, configurableOptions, title);
            final JComponent tabComponent = tabbedPane.getComponentAt(i);
            if (tabComponent != null) {
                processComponent(tabComponent, configurableOptions, title);
            }
        }
    } else {
        final Component[] components = component.getComponents();
        if (components != null) {
            for (Component child : components) {
                if (child instanceof JComponent) {
                    processComponent((JComponent) child, configurableOptions, path);
                }
            }
        }
    }
}
Also used : TabbedPaneWrapper(com.intellij.ui.TabbedPaneWrapper) TitledBorder(javax.swing.border.TitledBorder) SkipSelfSearchComponent(com.intellij.application.options.SkipSelfSearchComponent) SimpleColoredComponent(com.intellij.ui.SimpleColoredComponent) SkipSelfSearchComponent(com.intellij.application.options.SkipSelfSearchComponent) Border(javax.swing.border.Border) TitledBorder(javax.swing.border.TitledBorder)

Example 14 with TabbedPaneWrapper

use of com.intellij.ui.TabbedPaneWrapper in project intellij-community by JetBrains.

the class ShowJavadocAction method actionPerformed.

public void actionPerformed(final AnActionEvent e) {
    final PropertyInspectorTable inspector = PropertyInspectorTable.DATA_KEY.getData(e.getDataContext());
    final IntrospectedProperty introspectedProperty = inspector.getSelectedIntrospectedProperty();
    final PsiClass aClass = inspector.getComponentClass();
    final PsiMethod getter = PropertyUtil.findPropertyGetter(aClass, introspectedProperty.getName(), false, true);
    LOG.assertTrue(getter != null);
    final PsiMethod setter = PropertyUtil.findPropertySetter(aClass, introspectedProperty.getName(), false, true);
    LOG.assertTrue(setter != null);
    final DocumentationManager documentationManager = DocumentationManager.getInstance(aClass.getProject());
    final DocumentationComponent component1 = new DocumentationComponent(documentationManager);
    final DocumentationComponent component2 = new DocumentationComponent(documentationManager);
    final Disposable disposable = Disposer.newDisposable();
    final TabbedPaneWrapper tabbedPane = new TabbedPaneWrapper(disposable);
    tabbedPane.addTab(UIDesignerBundle.message("tab.getter"), component1);
    tabbedPane.addTab(UIDesignerBundle.message("tab.setter"), component2);
    documentationManager.fetchDocInfo(getter, component1);
    documentationManager.queueFetchDocInfo(setter, component2).doWhenProcessed(() -> {
        final JBPopup hint = JBPopupFactory.getInstance().createComponentPopupBuilder(tabbedPane.getComponent(), component1).setDimensionServiceKey(aClass.getProject(), DocumentationManager.JAVADOC_LOCATION_AND_SIZE, false).setResizable(true).setMovable(true).setRequestFocus(true).setTitle(UIDesignerBundle.message("property.javadoc.title", introspectedProperty.getName())).createPopup();
        component1.setHint(hint);
        component2.setHint(hint);
        Disposer.register(hint, component1);
        Disposer.register(hint, component2);
        Disposer.register(hint, disposable);
        hint.show(new RelativePoint(inspector, new Point(0, 0)));
    //component1.requestFocus();
    });
}
Also used : Disposable(com.intellij.openapi.Disposable) DocumentationManager(com.intellij.codeInsight.documentation.DocumentationManager) PropertyInspectorTable(com.intellij.uiDesigner.propertyInspector.PropertyInspectorTable) PsiMethod(com.intellij.psi.PsiMethod) DocumentationComponent(com.intellij.codeInsight.documentation.DocumentationComponent) TabbedPaneWrapper(com.intellij.ui.TabbedPaneWrapper) IntrospectedProperty(com.intellij.uiDesigner.propertyInspector.IntrospectedProperty) PsiClass(com.intellij.psi.PsiClass) RelativePoint(com.intellij.ui.awt.RelativePoint) RelativePoint(com.intellij.ui.awt.RelativePoint) JBPopup(com.intellij.openapi.ui.popup.JBPopup)

Example 15 with TabbedPaneWrapper

use of com.intellij.ui.TabbedPaneWrapper in project intellij-community by JetBrains.

the class FacetEditorImpl method createComponent.

@Override
public JComponent createComponent() {
    final JComponent editorComponent;
    if (myEditorTabs.length > 1) {
        final TabbedPaneWrapper tabbedPane = new TabbedPaneWrapper(myDisposable);
        for (FacetEditorTab editorTab : myEditorTabs) {
            JComponent c = editorTab.createComponent();
            UIUtil.addInsets(c, UIUtil.PANEL_SMALL_INSETS);
            tabbedPane.addTab(editorTab.getDisplayName(), c);
        }
        tabbedPane.addChangeListener(new ChangeListener() {

            @Override
            public void stateChanged(@NotNull ChangeEvent e) {
                myEditorTabs[mySelectedTabIndex].onTabLeaving();
                mySelectedTabIndex = tabbedPane.getSelectedIndex();
                onTabSelected(myEditorTabs[mySelectedTabIndex]);
            }
        });
        editorComponent = tabbedPane.getComponent();
        myTabbedPane = tabbedPane;
    } else if (myEditorTabs.length == 1) {
        editorComponent = myEditorTabs[0].createComponent();
        UIUtil.addInsets(editorComponent, JBUI.insets(0, 5, 0, 0));
    } else {
        editorComponent = new JPanel();
    }
    final JComponent errorComponent = myErrorPanel.getComponent();
    UIUtil.addInsets(errorComponent, JBUI.insets(0, 5, 5, 0));
    final JPanel panel = new JPanel(new BorderLayout());
    panel.add(BorderLayout.CENTER, editorComponent);
    panel.add(BorderLayout.SOUTH, errorComponent);
    return panel;
}
Also used : ChangeEvent(javax.swing.event.ChangeEvent) TabbedPaneWrapper(com.intellij.ui.TabbedPaneWrapper) FacetEditorTab(com.intellij.facet.ui.FacetEditorTab) ChangeListener(javax.swing.event.ChangeListener)

Aggregations

TabbedPaneWrapper (com.intellij.ui.TabbedPaneWrapper)15 ChangeEvent (javax.swing.event.ChangeEvent)8 ChangeListener (javax.swing.event.ChangeListener)7 SkipSelfSearchComponent (com.intellij.application.options.SkipSelfSearchComponent)2 BaseProjectTreeBuilder (com.intellij.ide.projectView.BaseProjectTreeBuilder)2 AbstractProjectTreeStructure (com.intellij.ide.projectView.impl.AbstractProjectTreeStructure)2 ProjectAbstractTreeStructureBase (com.intellij.ide.projectView.impl.ProjectAbstractTreeStructureBase)2 ProjectTreeBuilder (com.intellij.ide.projectView.impl.ProjectTreeBuilder)2 NodeRenderer (com.intellij.ide.util.treeView.NodeRenderer)2 Disposable (com.intellij.openapi.Disposable)2 ModalityState (com.intellij.openapi.application.ModalityState)2 Configurable (com.intellij.openapi.options.Configurable)2 DoubleClickListener (com.intellij.ui.DoubleClickListener)2 SimpleColoredComponent (com.intellij.ui.SimpleColoredComponent)2 TreeSpeedSearch (com.intellij.ui.TreeSpeedSearch)2 Tree (com.intellij.ui.treeStructure.Tree)2 NotNull (org.jetbrains.annotations.NotNull)2 DocumentationComponent (com.intellij.codeInsight.documentation.DocumentationComponent)1 DocumentationManager (com.intellij.codeInsight.documentation.DocumentationManager)1 FacetEditorTab (com.intellij.facet.ui.FacetEditorTab)1