Search in sources :

Example 36 with Border

use of javax.swing.border.Border in project intellij-community by JetBrains.

the class EditorFragmentComponent method doInit.

private void doInit(Component anchorComponent, EditorEx editor, int startLine, int endLine, boolean showFolding, boolean showGutter) {
    Document doc = editor.getDocument();
    final int endOffset = endLine < doc.getLineCount() ? doc.getLineEndOffset(endLine) : doc.getTextLength();
    boolean newRendering = editor instanceof EditorImpl;
    int widthAdjustment = newRendering ? EditorUtil.getSpaceWidth(Font.PLAIN, editor) : 0;
    final int textImageWidth = Math.min(editor.getMaxWidthInRange(doc.getLineStartOffset(startLine), endOffset) + widthAdjustment, getWidthLimit(editor));
    FoldingModelEx foldingModel = editor.getFoldingModel();
    boolean isFoldingEnabled = foldingModel.isFoldingEnabled();
    if (!showFolding) {
        foldingModel.setFoldingEnabled(false);
    }
    Point p1 = editor.logicalPositionToXY(new LogicalPosition(startLine, 0));
    Point p2 = editor.logicalPositionToXY(new LogicalPosition(Math.max(endLine, startLine + 1), 0));
    int y1 = p1.y;
    int y2 = p2.y;
    final int textImageHeight = y2 - y1 == 0 ? editor.getLineHeight() : y2 - y1;
    LOG.assertTrue(textImageHeight > 0, "Height: " + textImageHeight + "; startLine:" + startLine + "; endLine:" + endLine + "; p1:" + p1 + "; p2:" + p2);
    int savedScrollOffset = newRendering ? 0 : editor.getScrollingModel().getHorizontalScrollOffset();
    if (savedScrollOffset > 0) {
        editor.getScrollingModel().scrollHorizontally(0);
    }
    final BufferedImage textImage = UIUtil.createImage(anchorComponent == null ? editor.getContentComponent() : anchorComponent, textImageWidth, textImageHeight, BufferedImage.TYPE_INT_RGB);
    Graphics textGraphics = textImage.getGraphics();
    EditorUIUtil.setupAntialiasing(textGraphics);
    final JComponent rowHeader;
    final BufferedImage markersImage;
    final int markersImageWidth;
    if (showGutter) {
        rowHeader = editor.getGutterComponentEx();
        markersImageWidth = Math.max(1, rowHeader.getWidth());
        markersImage = UIUtil.createImage(editor.getComponent(), markersImageWidth, textImageHeight, BufferedImage.TYPE_INT_RGB);
        Graphics markerGraphics = markersImage.getGraphics();
        EditorUIUtil.setupAntialiasing(markerGraphics);
        markerGraphics.translate(0, -y1);
        markerGraphics.setClip(0, y1, rowHeader.getWidth(), textImageHeight);
        markerGraphics.setColor(getBackgroundColor(editor));
        markerGraphics.fillRect(0, y1, rowHeader.getWidth(), textImageHeight);
        rowHeader.paint(markerGraphics);
    } else {
        markersImageWidth = 0;
        rowHeader = null;
        markersImage = null;
    }
    textGraphics.translate(0, -y1);
    textGraphics.setClip(0, y1, textImageWidth, textImageHeight);
    final boolean wasVisible = editor.setCaretVisible(false);
    editor.getContentComponent().paint(textGraphics);
    if (wasVisible) {
        editor.setCaretVisible(true);
    }
    if (!showFolding) {
        foldingModel.setFoldingEnabled(isFoldingEnabled);
    }
    if (savedScrollOffset > 0) {
        editor.getScrollingModel().scrollHorizontally(savedScrollOffset);
    }
    JComponent component = new JComponent() {

        @Override
        public Dimension getPreferredSize() {
            return new Dimension(textImageWidth + markersImageWidth, textImageHeight);
        }

        @Override
        protected void paintComponent(Graphics graphics) {
            if (markersImage != null) {
                UIUtil.drawImage(graphics, markersImage, 0, 0, null);
                UIUtil.drawImage(graphics, textImage, rowHeader.getWidth(), 0, null);
            } else {
                UIUtil.drawImage(graphics, textImage, 0, 0, null);
            }
        }
    };
    setLayout(new BorderLayout());
    add(component);
    final Color borderColor = editor.getColorsScheme().getColor(EditorColors.SELECTED_TEARLINE_COLOR);
    Border outsideBorder = JBUI.Borders.customLine(borderColor, LINE_BORDER_THICKNESS);
    Border insideBorder = JBUI.Borders.empty(EMPTY_BORDER_THICKNESS, EMPTY_BORDER_THICKNESS);
    setBorder(BorderFactory.createCompoundBorder(outsideBorder, insideBorder));
}
Also used : LogicalPosition(com.intellij.openapi.editor.LogicalPosition) EditorImpl(com.intellij.openapi.editor.impl.EditorImpl) Document(com.intellij.openapi.editor.Document) FoldingModelEx(com.intellij.openapi.editor.ex.FoldingModelEx) HintHint(com.intellij.ui.HintHint) LightweightHint(com.intellij.ui.LightweightHint) BufferedImage(java.awt.image.BufferedImage) Border(javax.swing.border.Border)

Example 37 with Border

use of javax.swing.border.Border in project intellij-community by JetBrains.

the class JBViewport method updateBorder.

private static void updateBorder(Component view) {
    // tables are not supported yet
    if (view instanceof JTable)
        return;
    if (view instanceof JComponent) {
        JComponent component = (JComponent) view;
        Border border = component.getBorder();
        // already set
        if (border instanceof ViewBorder)
            return;
        component.setBorder(border == null || border instanceof UIResource ? new ResourceViewBorder(border) : new ViewBorder(border));
    }
}
Also used : Border(javax.swing.border.Border) AbstractBorder(javax.swing.border.AbstractBorder) UIResource(javax.swing.plaf.UIResource)

Example 38 with Border

use of javax.swing.border.Border in project intellij-community by JetBrains.

the class SearchUtil method traverseComponentsTree.

private static boolean traverseComponentsTree(SearchableConfigurable configurable, GlassPanel glassPanel, JComponent rootComponent, String option, boolean force) {
    rootComponent.putClientProperty(HIGHLIGHT_WITH_BORDER, null);
    if (option == null || option.trim().length() == 0)
        return false;
    boolean highlight = false;
    if (rootComponent instanceof JCheckBox) {
        final JCheckBox checkBox = ((JCheckBox) rootComponent);
        if (isComponentHighlighted(checkBox.getText(), option, force, configurable)) {
            highlight = true;
            glassPanel.addSpotlight(checkBox);
        }
    } else if (rootComponent instanceof JRadioButton) {
        final JRadioButton radioButton = ((JRadioButton) rootComponent);
        if (isComponentHighlighted(radioButton.getText(), option, force, configurable)) {
            highlight = true;
            glassPanel.addSpotlight(radioButton);
        }
    } else if (rootComponent instanceof JLabel) {
        final JLabel label = ((JLabel) rootComponent);
        if (isComponentHighlighted(label.getText(), option, force, configurable)) {
            highlight = true;
            glassPanel.addSpotlight(label);
        }
    } else if (rootComponent instanceof JButton) {
        final JButton button = ((JButton) rootComponent);
        if (isComponentHighlighted(button.getText(), option, force, configurable)) {
            highlight = true;
            glassPanel.addSpotlight(button);
        }
    } else if (rootComponent instanceof JTabbedPane) {
        final JTabbedPane tabbedPane = (JTabbedPane) rootComponent;
        final String path = SearchableOptionsRegistrar.getInstance().getInnerPath(configurable, option);
        if (path != null) {
            final int index = getSelection(path, tabbedPane);
            if (index > -1 && index < tabbedPane.getTabCount()) {
                if (tabbedPane.getTabComponentAt(index) instanceof JComponent) {
                    glassPanel.addSpotlight((JComponent) tabbedPane.getTabComponentAt(index));
                }
            }
        }
    } else if (rootComponent instanceof TabbedPaneWrapper.TabbedPaneHolder) {
        final TabbedPaneWrapper tabbedPaneWrapper = ((TabbedPaneWrapper.TabbedPaneHolder) rootComponent).getTabbedPaneWrapper();
        final String path = SearchableOptionsRegistrar.getInstance().getInnerPath(configurable, option);
        if (path != null) {
            final int index = getSelection(path, tabbedPaneWrapper);
            if (index > -1 && index < tabbedPaneWrapper.getTabCount()) {
                glassPanel.addSpotlight((JComponent) tabbedPaneWrapper.getTabComponentAt(index));
            }
        }
    }
    final Component[] components = rootComponent.getComponents();
    for (Component component : components) {
        if (component instanceof JComponent) {
            final boolean innerHighlight = traverseComponentsTree(configurable, glassPanel, (JComponent) component, option, force);
            if (!highlight && !innerHighlight) {
                final Border border = rootComponent.getBorder();
                if (border instanceof TitledBorder) {
                    final String title = ((TitledBorder) border).getTitle();
                    if (isComponentHighlighted(title, option, force, configurable)) {
                        highlight = true;
                        glassPanel.addSpotlight(rootComponent);
                        rootComponent.putClientProperty(HIGHLIGHT_WITH_BORDER, Boolean.TRUE);
                    }
                }
            }
            if (innerHighlight) {
                highlight = true;
            }
        }
    }
    return highlight;
}
Also used : TabbedPaneWrapper(com.intellij.ui.TabbedPaneWrapper) TitledBorder(javax.swing.border.TitledBorder) SimpleColoredComponent(com.intellij.ui.SimpleColoredComponent) SkipSelfSearchComponent(com.intellij.application.options.SkipSelfSearchComponent) Border(javax.swing.border.Border) TitledBorder(javax.swing.border.TitledBorder)

Example 39 with Border

use of javax.swing.border.Border in project intellij-community by JetBrains.

the class StripeButton method init.

private void init() {
    setFocusable(false);
    setBackground(ourBackgroundColor);
    final Border border = JBUI.Borders.empty(5, 5, 0, 5);
    setBorder(border);
    updatePresentation();
    apply(myDecorator.getWindowInfo());
    addActionListener(this);
    addMouseListener(new MyPopupHandler());
    setRolloverEnabled(true);
    setOpaque(false);
    enableEvents(AWTEvent.MOUSE_EVENT_MASK);
    addMouseMotionListener(new MouseMotionAdapter() {

        @Override
        public void mouseDragged(final MouseEvent e) {
            processDrag(e);
        }
    });
    KeymapManager.getInstance().addKeymapManagerListener(myKeymapListener, this);
}
Also used : Border(javax.swing.border.Border)

Example 40 with Border

use of javax.swing.border.Border in project intellij-community by JetBrains.

the class ShowUIDefaultsAction method actionPerformed.

@Override
public void actionPerformed(AnActionEvent e) {
    final UIDefaults defaults = UIManager.getDefaults();
    Enumeration keys = defaults.keys();
    final Object[][] data = new Object[defaults.size()][2];
    int i = 0;
    while (keys.hasMoreElements()) {
        Object key = keys.nextElement();
        data[i][0] = key;
        data[i][1] = defaults.get(key);
        i++;
    }
    Arrays.sort(data, (o1, o2) -> StringUtil.naturalCompare(o1[0].toString(), o2[0].toString()));
    final Project project = getEventProject(e);
    new DialogWrapper(project) {

        {
            setTitle("Edit LaF Defaults");
            setModal(false);
            init();
        }

        public JBTable myTable;

        @Nullable
        @Override
        public JComponent getPreferredFocusedComponent() {
            return myTable;
        }

        @Nullable
        @Override
        protected String getDimensionServiceKey() {
            return project == null ? null : "UI.Defaults.Dialog";
        }

        @Override
        protected JComponent createCenterPanel() {
            final JBTable table = new JBTable(new DefaultTableModel(data, new Object[] { "Name", "Value" }) {

                @Override
                public boolean isCellEditable(int row, int column) {
                    return column == 1 && getValueAt(row, column) instanceof Color;
                }
            }) {

                @Override
                public boolean editCellAt(int row, int column, EventObject e) {
                    if (isCellEditable(row, column) && e instanceof MouseEvent) {
                        final Object color = getValueAt(row, column);
                        final Color newColor = ColorPicker.showDialog(this, "Choose Color", (Color) color, true, null, true);
                        if (newColor != null) {
                            final ColorUIResource colorUIResource = new ColorUIResource(newColor);
                            final Object key = getValueAt(row, 0);
                            UIManager.put(key, colorUIResource);
                            setValueAt(colorUIResource, row, column);
                        }
                    }
                    return false;
                }
            };
            table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {

                @Override
                public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
                    final JPanel panel = new JPanel(new BorderLayout());
                    final JLabel label = new JLabel(value == null ? "" : value.toString());
                    panel.add(label, BorderLayout.CENTER);
                    if (value instanceof Color) {
                        final Color c = (Color) value;
                        label.setText(String.format("[r=%d,g=%d,b=%d] hex=0x%s", c.getRed(), c.getGreen(), c.getBlue(), ColorUtil.toHex(c)));
                        label.setForeground(ColorUtil.isDark(c) ? Color.white : Color.black);
                        panel.setBackground(c);
                        return panel;
                    } else if (value instanceof Icon) {
                        try {
                            final Icon icon = new IconWrap((Icon) value);
                            if (icon.getIconHeight() <= 20) {
                                label.setIcon(icon);
                            }
                            label.setText(String.format("(%dx%d) %s)", icon.getIconWidth(), icon.getIconHeight(), label.getText()));
                        } catch (Throwable e1) {
                        //
                        }
                        return panel;
                    } else if (value instanceof Border) {
                        try {
                            final Insets i = ((Border) value).getBorderInsets(null);
                            label.setText(String.format("[%d, %d, %d, %d] %s", i.top, i.left, i.bottom, i.right, label.getText()));
                            return panel;
                        } catch (Exception ignore) {
                        }
                    }
                    return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
                }
            });
            final JBScrollPane pane = new JBScrollPane(table);
            new TableSpeedSearch(table, (o, cell) -> cell.column == 1 ? null : String.valueOf(o));
            table.setShowGrid(false);
            final JPanel panel = new JPanel(new BorderLayout());
            panel.add(pane, BorderLayout.CENTER);
            myTable = table;
            TableUtil.ensureSelectionExists(myTable);
            return panel;
        }
    }.show();
}
Also used : EmptyIcon(com.intellij.util.ui.EmptyIcon) Arrays(java.util.Arrays) DefaultTableModel(javax.swing.table.DefaultTableModel) Enumeration(java.util.Enumeration) StringUtil(com.intellij.openapi.util.text.StringUtil) AnAction(com.intellij.openapi.actionSystem.AnAction) ColorUIResource(javax.swing.plaf.ColorUIResource) MouseEvent(java.awt.event.MouseEvent) JBScrollPane(com.intellij.ui.components.JBScrollPane) Border(javax.swing.border.Border) EventObject(java.util.EventObject) java.awt(java.awt) JBTable(com.intellij.ui.table.JBTable) Nullable(org.jetbrains.annotations.Nullable) DefaultTableCellRenderer(javax.swing.table.DefaultTableCellRenderer) PairFunction(com.intellij.util.PairFunction) DialogWrapper(com.intellij.openapi.ui.DialogWrapper) AnActionEvent(com.intellij.openapi.actionSystem.AnActionEvent) Project(com.intellij.openapi.project.Project) DumbAware(com.intellij.openapi.project.DumbAware) Comparator(java.util.Comparator) javax.swing(javax.swing) DefaultTableModel(javax.swing.table.DefaultTableModel) JBTable(com.intellij.ui.table.JBTable) DefaultTableCellRenderer(javax.swing.table.DefaultTableCellRenderer) Enumeration(java.util.Enumeration) MouseEvent(java.awt.event.MouseEvent) ColorUIResource(javax.swing.plaf.ColorUIResource) DialogWrapper(com.intellij.openapi.ui.DialogWrapper) EventObject(java.util.EventObject) Project(com.intellij.openapi.project.Project) EventObject(java.util.EventObject) EmptyIcon(com.intellij.util.ui.EmptyIcon) Border(javax.swing.border.Border) Nullable(org.jetbrains.annotations.Nullable) JBScrollPane(com.intellij.ui.components.JBScrollPane)

Aggregations

Border (javax.swing.border.Border)169 JPanel (javax.swing.JPanel)40 EmptyBorder (javax.swing.border.EmptyBorder)35 BoxLayout (javax.swing.BoxLayout)28 JLabel (javax.swing.JLabel)28 FlowLayout (java.awt.FlowLayout)24 Dimension (java.awt.Dimension)23 JScrollPane (javax.swing.JScrollPane)22 JButton (javax.swing.JButton)19 Container (java.awt.Container)18 CompoundBorder (javax.swing.border.CompoundBorder)17 BorderLayout (java.awt.BorderLayout)16 Insets (java.awt.Insets)16 ActionEvent (java.awt.event.ActionEvent)16 TitledBorder (javax.swing.border.TitledBorder)16 UIResource (javax.swing.plaf.UIResource)16 JTable (javax.swing.JTable)14 ActionListener (java.awt.event.ActionListener)13 LineBorder (javax.swing.border.LineBorder)13 TableColumnModel (javax.swing.table.TableColumnModel)13