private void setupCentralPanel() { myCentralPanel.removeAll(); if (myUsagePreviewPanel != null) { Disposer.dispose(myUsagePreviewPanel); myUsagePreviewPanel = null; } JScrollPane pane = ScrollPaneFactory.createScrollPane(myTree); if (UsageViewSettings.getInstance().IS_PREVIEW_USAGES) { Splitter splitter = new Splitter(false, UsageViewSettings.getInstance().PREVIEW_USAGES_SPLITTER_PROPORTIONS); pane.putClientProperty(UIUtil.KEEP_BORDER_SIDES, SideBorder.RIGHT); splitter.setFirstComponent(pane); myUsagePreviewPanel = new UsagePreviewPanel(myProject); myUsagePreviewPanel.setBorder(IdeBorderFactory.createBorder(SideBorder.LEFT)); Disposer.register(this, myUsagePreviewPanel); splitter.setSecondComponent(myUsagePreviewPanel); myCentralPanel.add(splitter, BorderLayout.CENTER); } else { myCentralPanel.add(pane, BorderLayout.CENTER); } myCentralPanel.add(myButtonPanel, BorderLayout.SOUTH); myRootPanel.revalidate(); }
private void layoutPanel() { if (myUsagePreviewPanel != null) { Disposer.dispose(myUsagePreviewPanel); } removeAll(); JScrollPane pane = ScrollPaneFactory.createScrollPane(myTree); if (isPreview()) { pane.setBorder(IdeBorderFactory.createBorder(SideBorder.LEFT | SideBorder.RIGHT)); boolean vertical = myToolWindow.getAnchor() == ToolWindowAnchor.LEFT || myToolWindow.getAnchor() == ToolWindowAnchor.RIGHT; Splitter splitter = new Splitter( vertical, UsageViewSettings.getInstance().PREVIEW_USAGES_SPLITTER_PROPORTIONS); splitter.setFirstComponent(pane); myUsagePreviewPanel = new UsagePreviewPanel(myProject, new UsageViewPresentation()); myUsagePreviewPanel.setBorder(IdeBorderFactory.createBorder(SideBorder.LEFT)); Disposer.register(this, myUsagePreviewPanel); splitter.setSecondComponent(myUsagePreviewPanel); add(splitter, BorderLayout.CENTER); } else { pane.setBorder(IdeBorderFactory.createBorder(SideBorder.LEFT)); add(pane, BorderLayout.CENTER); } add(createToolbar().getComponent(), BorderLayout.WEST); myTree.getParent().setBackground(UIManager.getColor("Tree.background")); revalidate(); }
private void updateArchetypeDescription() { MavenArchetype sel = getSelectedArchetype(); String desc = sel == null ? null : sel.description; if (StringUtil.isEmptyOrSpaces(desc)) { myArchetypeDescriptionScrollPane.setVisible(false); } else { myArchetypeDescriptionScrollPane.setVisible(true); myArchetypeDescriptionField.setText(desc); } }
protected JComponent createCenterPanel() { JScrollPane scrollPane = ScrollPaneFactory.createScrollPane(myTree); scrollPane.setBorder(IdeBorderFactory.createBorder(SideBorder.LEFT)); myCenterPanel.add(CARD_STATUS, scrollPane); myTreeBrowser = new CommittedChangesTreeBrowser(myProject, Collections.<CommittedChangeList>emptyList()); Disposer.register(this, myTreeBrowser); myTreeBrowser.setHelpId(getHelpId()); myCenterPanel.add(CARD_CHANGES, myTreeBrowser); return myCenterPanel; }
@Override protected JComponent createCenterPanel() { JPanel panel = new JPanel(new BorderLayout()); // Toolbar DefaultActionGroup group = new DefaultActionGroup(); fillToolbarActions(group); group.addSeparator(); ExpandAllAction expandAllAction = new ExpandAllAction(); expandAllAction.registerCustomShortcutSet( new CustomShortcutSet( KeymapManager.getInstance() .getActiveKeymap() .getShortcuts(IdeActions.ACTION_EXPAND_ALL)), myTree); group.add(expandAllAction); CollapseAllAction collapseAllAction = new CollapseAllAction(); collapseAllAction.registerCustomShortcutSet( new CustomShortcutSet( KeymapManager.getInstance() .getActiveKeymap() .getShortcuts(IdeActions.ACTION_COLLAPSE_ALL)), myTree); group.add(collapseAllAction); panel.add( ActionManager.getInstance() .createActionToolbar(ActionPlaces.UNKNOWN, group, true) .getComponent(), BorderLayout.NORTH); // Tree expandFirst(); defaultExpandTree(); installSpeedSearch(); JScrollPane scrollPane = ScrollPaneFactory.createScrollPane(myTree); scrollPane.setPreferredSize(new Dimension(350, 450)); panel.add(scrollPane, BorderLayout.CENTER); return panel; }
public void actionPerformed(final AnActionEvent e) { @NonNls final String delim = " -> "; final StringBuffer buf = new StringBuffer(); processDependencies( getSelectedScope(myLeftTree), getSelectedScope(myRightTree), new Processor<List<PsiFile>>() { public boolean process(final List<PsiFile> path) { if (buf.length() > 0) buf.append("<br>"); buf.append( StringUtil.join( path, new Function<PsiFile, String>() { public String fun(final PsiFile psiFile) { return psiFile.getName(); } }, delim)); return true; } }); final JEditorPane pane = new JEditorPane(UIUtil.HTML_MIME, "<html>" + buf.toString() + "</html>"); pane.setForeground(Color.black); pane.setBackground(HintUtil.INFORMATION_COLOR); pane.setOpaque(true); final JScrollPane scrollPane = ScrollPaneFactory.createScrollPane(pane); final Dimension dimension = pane.getPreferredSize(); scrollPane.setMinimumSize(new Dimension(dimension.width, dimension.height + 20)); scrollPane.setPreferredSize(new Dimension(dimension.width, dimension.height + 20)); JBPopupFactory.getInstance() .createComponentPopupBuilder(scrollPane, pane) .setTitle("Dependencies") .setMovable(true) .createPopup() .showInBestPositionFor(e.getDataContext()); }
public static Pair<JPanel, JBList> createActionGroupPanel( ActionGroup action, final JComponent parent, final Runnable backAction) { JPanel actionsListPanel = new JPanel(new BorderLayout()); actionsListPanel.setBackground(getProjectsBackground()); final JBList list = new JBList(action.getChildren(null)); list.setBackground(getProjectsBackground()); list.installCellRenderer( new NotNullFunction<AnAction, JComponent>() { final JLabel label = new JLabel(); { label.setBorder(JBUI.Borders.empty(3, 7)); } @NotNull @Override public JComponent fun(AnAction action) { label.setText(action.getTemplatePresentation().getText()); Icon icon = action.getTemplatePresentation().getIcon(); label.setIcon(icon); return label; } }); JScrollPane pane = ScrollPaneFactory.createScrollPane(list, true); pane.setBackground(getProjectsBackground()); actionsListPanel.add(pane, BorderLayout.CENTER); if (backAction != null) { final JLabel back = new JLabel(AllIcons.Actions.Back); back.setBorder(JBUI.Borders.empty(3, 7, 10, 7)); back.setHorizontalAlignment(SwingConstants.LEFT); new ClickListener() { @Override public boolean onClick(@NotNull MouseEvent event, int clickCount) { backAction.run(); return true; } }.installOn(back); actionsListPanel.add(back, BorderLayout.SOUTH); } final Ref<Component> selected = Ref.create(); final JPanel main = new JPanel(new BorderLayout()); main.add(actionsListPanel, BorderLayout.WEST); ListSelectionListener selectionListener = new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { if (e.getValueIsAdjusting()) { // Update when a change has been finalized. // For instance, selecting an element with mouse fires two consecutive // ListSelectionEvent events. return; } if (!selected.isNull()) { main.remove(selected.get()); } Object value = list.getSelectedValue(); if (value instanceof AbstractActionWithPanel) { JPanel panel = ((AbstractActionWithPanel) value).createPanel(); panel.setBorder(JBUI.Borders.empty(7, 10)); selected.set(panel); main.add(selected.get()); for (JButton button : UIUtil.findComponentsOfType(main, JButton.class)) { if (button.getClientProperty(DialogWrapper.DEFAULT_ACTION) == Boolean.TRUE) { parent.getRootPane().setDefaultButton(button); break; } } main.revalidate(); main.repaint(); } } }; list.addListSelectionListener(selectionListener); if (backAction != null) { new AnAction() { @Override public void actionPerformed(@NotNull AnActionEvent e) { backAction.run(); } }.registerCustomShortcutSet(KeyEvent.VK_ESCAPE, 0, main); } return Pair.create(main, list); }
public JComponent createCenterPanel() { List<FileStructureFilter> fileStructureFilters = new ArrayList<FileStructureFilter>(); List<FileStructureNodeProvider> fileStructureNodeProviders = new ArrayList<FileStructureNodeProvider>(); 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); } } } } final JPanel panel = new JPanel(new BorderLayout()); JPanel comboPanel = new JPanel(new GridLayout(0, 2, 0, 0)); final Shortcut[] F4 = ActionManager.getInstance() .getAction(IdeActions.ACTION_EDIT_SOURCE) .getShortcutSet() .getShortcuts(); final Shortcut[] ENTER = CustomShortcutSet.fromString("ENTER").getShortcuts(); final CustomShortcutSet shortcutSet = new CustomShortcutSet(ArrayUtil.mergeArrays(F4, ENTER)); new AnAction() { public void actionPerformed(AnActionEvent e) { final boolean succeeded = navigateSelectedElement(); if (succeeded) { unregisterCustomShortcutSet(panel); } } }.registerCustomShortcutSet(shortcutSet, panel); new AnAction() { public void actionPerformed(AnActionEvent e) { if (mySpeedSearch != null && mySpeedSearch.isPopupActive()) { mySpeedSearch.hidePopup(); } else { myPopup.cancel(); } } }.registerCustomShortcutSet(CustomShortcutSet.fromString("ESCAPE"), myTree); new ClickListener() { @Override public boolean onClick(MouseEvent e, int clickCount) { navigateSelectedElement(); return true; } }.installOn(myTree); for (FileStructureFilter filter : fileStructureFilters) { addCheckbox(comboPanel, filter); } for (FileStructureNodeProvider provider : fileStructureNodeProviders) { addCheckbox(comboPanel, provider); } myPreferredWidth = Math.max(comboPanel.getPreferredSize().width, 350); panel.add(comboPanel, BorderLayout.NORTH); JScrollPane scrollPane = ScrollPaneFactory.createScrollPane(myAbstractTreeBuilder.getTree()); scrollPane.setBorder(IdeBorderFactory.createBorder(SideBorder.TOP | SideBorder.BOTTOM)); panel.add(scrollPane, BorderLayout.CENTER); panel.add(createSouthPanel(), BorderLayout.SOUTH); DataManager.registerDataProvider( panel, new DataProvider() { @Override public Object getData(@NonNls String dataId) { if (PlatformDataKeys.PROJECT.is(dataId)) { return myProject; } if (LangDataKeys.PSI_ELEMENT.is(dataId)) { final Object node = ContainerUtil.getFirstItem(myAbstractTreeBuilder.getSelectedElements()); if (!(node instanceof FilteringTreeStructure.FilteringNode)) return null; return getPsi((FilteringTreeStructure.FilteringNode) node); } if (LangDataKeys.POSITION_ADJUSTER_POPUP.is(dataId)) { return myPopup; } if (PlatformDataKeys.TREE_EXPANDER.is(dataId)) { return myTreeExpander; } return null; } }); return panel; }
public VcsDependentHistoryComponents getUICustomization( final VcsHistorySession session, JComponent forShortcutRegistration) { final ColumnInfo[] columns; final Consumer<VcsFileRevision> listener; final JComponent addComp; if (((MyHistorySession) session).isSupports15()) { final MergeSourceColumnInfo mergeSourceColumn = new MergeSourceColumnInfo((MyHistorySession) session); columns = new ColumnInfo[] {new CopyFromColumnInfo(), mergeSourceColumn}; final JTextArea field = new JTextArea(); field.setEditable(false); field.setBackground(UIUtil.getComboBoxDisabledBackground()); field.setWrapStyleWord(true); listener = new Consumer<VcsFileRevision>() { public void consume(VcsFileRevision vcsFileRevision) { field.setText(mergeSourceColumn.getText(vcsFileRevision)); } }; final JPanel panel = new JPanel(new GridBagLayout()); final GridBagConstraints gb = new GridBagConstraints( 0, 0, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0); final JLabel mergeLabel = new JLabel("Merge Sources:"); final MergeSourceDetailsAction sourceAction = new MergeSourceDetailsAction(); sourceAction.registerSelf(forShortcutRegistration); final DefaultActionGroup group = new DefaultActionGroup(); group.add(sourceAction); final JComponent toolbar = ActionManager.getInstance() .createActionToolbar(ActionPlaces.UNKNOWN, group, true) .getComponent(); panel.add(mergeLabel, gb); ++gb.gridx; gb.insets.left = 10; gb.anchor = GridBagConstraints.NORTHWEST; panel.add(toolbar, gb); ++gb.gridy; gb.insets.left = 0; gb.gridx = 0; gb.gridwidth = 2; gb.weightx = gb.weighty = 1; gb.fill = GridBagConstraints.BOTH; JScrollPane pane = ScrollPaneFactory.createScrollPane(field); pane.setBorder(IdeBorderFactory.createBorder(SideBorder.LEFT | SideBorder.TOP)); panel.add(pane, gb); addComp = panel; } else { columns = new ColumnInfo[] {new CopyFromColumnInfo()}; addComp = null; listener = null; } return new VcsDependentHistoryComponents(columns, listener, addComp); }
private ElementsChooser(@Nullable List<T> elements, boolean marked, boolean elementsCanBeMarked) { super(new BorderLayout()); myTableModel = new MyTableModel(elementsCanBeMarked); myTable = new Table(myTableModel); myTable.setShowGrid(false); myTable.setIntercellSpacing(new Dimension(0, 0)); myTable.setTableHeader(null); myTable.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN); myTable.setColumnSelectionAllowed(false); JScrollPane pane = ScrollPaneFactory.createScrollPane(myTable); pane.setPreferredSize(new Dimension(100, 155)); int width = new JCheckBox().getPreferredSize().width; TableColumnModel columnModel = myTable.getColumnModel(); if (elementsCanBeMarked) { TableColumn checkMarkColumn = columnModel.getColumn(myTableModel.CHECK_MARK_COLUM_INDEX); checkMarkColumn.setPreferredWidth(width); checkMarkColumn.setMaxWidth(width); checkMarkColumn.setCellRenderer( new CheckMarkColumnCellRenderer(myTable.getDefaultRenderer(Boolean.class))); } columnModel .getColumn(myTableModel.ELEMENT_COLUMN_INDEX) .setCellRenderer(new MyElementColumnCellRenderer()); add(pane, BorderLayout.CENTER); myTable.registerKeyboardAction( new ActionListener() { public void actionPerformed(ActionEvent e) { final int[] selectedRows = myTable.getSelectedRows(); boolean currentlyMarked = true; for (int selectedRow : selectedRows) { currentlyMarked = myTableModel.isElementMarked(selectedRow); if (!currentlyMarked) { break; } } myTableModel.setMarked(selectedRows, !currentlyMarked); } }, KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0), JComponent.WHEN_FOCUSED); final SpeedSearchBase<JBTable> speedSearch = new SpeedSearchBase<JBTable>(myTable) { public int getSelectedIndex() { return myTable.getSelectedRow(); } @Override protected int convertIndexToModel(int viewIndex) { return myTable.convertRowIndexToModel(viewIndex); } public Object[] getAllElements() { final int count = myTableModel.getRowCount(); Object[] elements = new Object[count]; for (int idx = 0; idx < count; idx++) { elements[idx] = myTableModel.getElementAt(idx); } return elements; } public String getElementText(Object element) { return getItemText((T) element); } public void selectElement(Object element, String selectedText) { final int count = myTableModel.getRowCount(); for (int row = 0; row < count; row++) { if (element.equals(myTableModel.getElementAt(row))) { final int viewRow = myTable.convertRowIndexToView(row); myTable.getSelectionModel().setSelectionInterval(viewRow, viewRow); TableUtil.scrollSelectionToVisible(myTable); break; } } } }; speedSearch.setComparator(new SpeedSearchBase.SpeedSearchComparator(false)); setElements(elements, marked); installActions(myTable); }
private void addToPopup( @NotNull final BalloonImpl balloon, @NotNull BalloonLayoutData layoutData) { layoutData.doLayout = new Runnable() { @Override public void run() { WelcomeBalloonLayoutImpl.this.layoutPopup(); } }; layoutData.configuration = layoutData.configuration.replace( JBUI.scale(myPopupBalloon == null ? 7 : 5), JBUI.scale(12)); if (myPopupBalloon == null) { final JScrollPane pane = NotificationsManagerImpl.createBalloonScrollPane(myBalloonPanel, true); pane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); pane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); pane.getVerticalScrollBar() .addComponentListener( new ComponentAdapter() { @Override public void componentShown(ComponentEvent e) { pane.setBorder( IdeBorderFactory.createEmptyBorder(SystemInfo.isMac ? 2 : 1, 0, 1, 1)); } @Override public void componentHidden(ComponentEvent e) { pane.setBorder(IdeBorderFactory.createEmptyBorder()); } }); myPopupBalloon = new BalloonImpl( pane, BORDER_COLOR, new Insets(0, 0, 0, 0), FILL_COLOR, true, false, false, false, true, 0, false, false, null, false, 0, 0, 0, 0, false, null, null, false, false, false, null, false); myPopupBalloon.setAnimationEnabled(false); myPopupBalloon.setShadowBorderProvider( new NotificationBalloonShadowBorderProvider(FILL_COLOR, BORDER_COLOR)); myPopupBalloon.setHideListener( new Runnable() { @Override public void run() { myPopupBalloon.getComponent().setVisible(false); } }); myPopupBalloon.setActionProvider( new BalloonImpl.ActionProvider() { private BalloonImpl.ActionButton myAction; @NotNull @Override public List<BalloonImpl.ActionButton> createActions() { myAction = myPopupBalloon .new ActionButton( AllIcons.Ide.Notification.Close, null, null, Consumer.EMPTY_CONSUMER); return Collections.singletonList(myAction); } @Override public void layout(@NotNull Rectangle bounds) { myAction.setBounds(0, 0, 0, 0); } }); } myBalloonPanel.add(balloon.getContent()); balloon.getContent().putClientProperty(TYPE_KEY, layoutData.type); Disposer.register( balloon, new Disposable() { @Override public void dispose() { myBalloons.remove(balloon); myBalloonPanel.remove(balloon.getContent()); updatePopup(); } }); myBalloons.add(balloon); updatePopup(); }