diff options
Diffstat (limited to 'platform/platform-api/src/com/intellij/ui')
13 files changed, 117 insertions, 68 deletions
diff --git a/platform/platform-api/src/com/intellij/ui/BooleanTableCellRenderer.java b/platform/platform-api/src/com/intellij/ui/BooleanTableCellRenderer.java index 5c5426dd244a..4a2dc6e8b06c 100644 --- a/platform/platform-api/src/com/intellij/ui/BooleanTableCellRenderer.java +++ b/platform/platform-api/src/com/intellij/ui/BooleanTableCellRenderer.java @@ -30,8 +30,12 @@ public class BooleanTableCellRenderer extends JCheckBox implements TableCellRend private final JPanel myPanel = new JPanel(); public BooleanTableCellRenderer() { + this(CENTER); + } + + public BooleanTableCellRenderer(final int horizontalAlignment) { super(); - setHorizontalAlignment(CENTER); + setHorizontalAlignment(horizontalAlignment); setVerticalAlignment(CENTER); setBorder(null); setOpaque(true); diff --git a/platform/platform-api/src/com/intellij/ui/ColorChooser.java b/platform/platform-api/src/com/intellij/ui/ColorChooser.java index 9c8123ab1a49..6777ed74190f 100644 --- a/platform/platform-api/src/com/intellij/ui/ColorChooser.java +++ b/platform/platform-api/src/com/intellij/ui/ColorChooser.java @@ -18,6 +18,9 @@ package com.intellij.ui; import org.jetbrains.annotations.Nullable; import java.awt.*; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; /** * Utility wrapper around JColorChooser. Helps to avoid memory leak through JColorChooser.ColorChooserDialog.cancelButton. @@ -27,24 +30,38 @@ import java.awt.*; */ public class ColorChooser { @Nullable + @Deprecated + /** + * @deprecated Use {@link #chooseColor(java.awt.Component, String, java.awt.Color, boolean, java.util.List, boolean)} + */ public static Color chooseColor(Component parent, String caption, @Nullable Color preselectedColor, boolean enableOpacity, ColorPickerListener[] listeners, boolean opacityInPercent) { + return chooseColor(parent, caption, preselectedColor, enableOpacity, Arrays.asList(listeners), opacityInPercent); + } + + @Nullable + public static Color chooseColor(Component parent, + String caption, + @Nullable Color preselectedColor, + boolean enableOpacity, + List<ColorPickerListener> listeners, + boolean opacityInPercent) { return ColorChooserService.getInstance().showDialog(parent, caption, preselectedColor, enableOpacity, listeners, opacityInPercent); } @Nullable public static Color chooseColor(Component parent, String caption, @Nullable Color preselectedColor, boolean enableOpacity) { - return chooseColor(parent, caption, preselectedColor, enableOpacity, ColorPickerListener.EMPTY_ARRAY, false); + return chooseColor(parent, caption, preselectedColor, enableOpacity, Collections.<ColorPickerListener>emptyList(), false); } @Nullable public static Color chooseColor(Component parent, String caption, @Nullable Color preselectedColor, boolean enableOpacity, boolean opacityInPercent) { - return chooseColor(parent, caption, preselectedColor, enableOpacity, ColorPickerListener.EMPTY_ARRAY, opacityInPercent); + return chooseColor(parent, caption, preselectedColor, enableOpacity, Collections.<ColorPickerListener>emptyList(), opacityInPercent); } @Nullable diff --git a/platform/platform-api/src/com/intellij/ui/ColorChooserService.java b/platform/platform-api/src/com/intellij/ui/ColorChooserService.java index 6ecad03496ef..6f34e5e7fc05 100644 --- a/platform/platform-api/src/com/intellij/ui/ColorChooserService.java +++ b/platform/platform-api/src/com/intellij/ui/ColorChooserService.java @@ -19,6 +19,7 @@ import com.intellij.openapi.components.ServiceManager; import org.jetbrains.annotations.Nullable; import java.awt.*; +import java.util.List; /** * @author Konstantin Bulenkov @@ -29,10 +30,22 @@ public abstract class ColorChooserService { } @Nullable + @Deprecated + /** + * @deprecated Use {@link #showDialog(java.awt.Component, String, java.awt.Color, boolean, java.util.List, boolean)} + */ public abstract Color showDialog(Component parent, String caption, Color preselectedColor, boolean enableOpacity, ColorPickerListener[] listeners); @Nullable + @Deprecated + /** + * @deprecated Use {@link #showDialog(java.awt.Component, String, java.awt.Color, boolean, java.util.List, boolean)} + */ public abstract Color showDialog(Component parent, String caption, Color preselectedColor, boolean enableOpacity, ColorPickerListener[] listeners, boolean opacityInPercent); + + @Nullable + public abstract Color showDialog(Component parent, String caption, Color preselectedColor, boolean enableOpacity, + List<ColorPickerListener> listeners, boolean opacityInPercent); } diff --git a/platform/platform-api/src/com/intellij/ui/ColorPickerListener.java b/platform/platform-api/src/com/intellij/ui/ColorPickerListener.java index f028dde4bde9..772265f0c1ef 100644 --- a/platform/platform-api/src/com/intellij/ui/ColorPickerListener.java +++ b/platform/platform-api/src/com/intellij/ui/ColorPickerListener.java @@ -20,6 +20,7 @@ import org.jetbrains.annotations.Nullable; import java.awt.*; public interface ColorPickerListener { + @Deprecated ColorPickerListener[] EMPTY_ARRAY = new ColorPickerListener[0]; /** diff --git a/platform/platform-api/src/com/intellij/ui/ExpandedItemRendererComponentWrapper.java b/platform/platform-api/src/com/intellij/ui/ExpandedItemRendererComponentWrapper.java index 4e6d1c5c3f41..eea201116350 100644 --- a/platform/platform-api/src/com/intellij/ui/ExpandedItemRendererComponentWrapper.java +++ b/platform/platform-api/src/com/intellij/ui/ExpandedItemRendererComponentWrapper.java @@ -19,6 +19,7 @@ import com.intellij.util.ui.AbstractLayoutManager; import org.jetbrains.annotations.NotNull; import javax.swing.*; +import javax.swing.border.Border; import java.awt.*; public class ExpandedItemRendererComponentWrapper extends JComponent { @@ -40,4 +41,16 @@ public class ExpandedItemRendererComponentWrapper extends JComponent { } }); } + + @Override + public void setBorder(Border border) { + if (getComponentCount() == 1) { + Component component = getComponent(0); + if (component instanceof JComponent) { + ((JComponent)component).setBorder(border); + return; + } + } + super.setBorder(border); + } } diff --git a/platform/platform-api/src/com/intellij/ui/GroupedElementsRenderer.java b/platform/platform-api/src/com/intellij/ui/GroupedElementsRenderer.java index 3ddbf47028f4..76bacb9cb452 100644 --- a/platform/platform-api/src/com/intellij/ui/GroupedElementsRenderer.java +++ b/platform/platform-api/src/com/intellij/ui/GroupedElementsRenderer.java @@ -15,9 +15,7 @@ */ package com.intellij.ui; -import com.intellij.openapi.util.registry.Registry; import com.intellij.ui.components.panels.OpaquePanel; -import com.intellij.util.ui.GraphicsUtil; import com.intellij.util.ui.UIUtil; import javax.swing.*; @@ -26,38 +24,14 @@ import javax.swing.border.EmptyBorder; import javax.swing.tree.TreeCellRenderer; import java.awt.*; -import static javax.swing.SwingConstants.CENTER; -import static javax.swing.SwingConstants.LEFT; - public abstract class GroupedElementsRenderer { public static final Color POPUP_SEPARATOR_FOREGROUND = new JBColor(Color.gray.brighter(), Gray._43); public static final Color POPUP_SEPARATOR_TEXT_FOREGROUND = Color.gray; public static final Color SELECTED_FRAME_FOREGROUND = Color.black; - protected SeparatorWithText mySeparatorComponent = new SeparatorWithText() { - @Override - protected void paintComponent(Graphics g) { - if (Registry.is("ide.new.project.settings")) { - g.setColor(POPUP_SEPARATOR_FOREGROUND); - Rectangle viewR = new Rectangle(0, getVgap(), getWidth() - 1, getHeight() - getVgap() - 1); - Rectangle iconR = new Rectangle(); - Rectangle textR = new Rectangle(); - String s = SwingUtilities - .layoutCompoundLabel(g.getFontMetrics(), getCaption(), null, CENTER, - LEFT, - CENTER, - LEFT, - viewR, iconR, textR, 0); - GraphicsUtil.setupAAPainting(g); - g.setColor(Gray._255.withAlpha(80)); - g.drawString(s, textR.x + 10, textR.y + 1 + g.getFontMetrics().getAscent()); - g.setColor(new Color(0x5F6D7B)); - g.drawString(s, textR.x + 10, textR.y + g.getFontMetrics().getAscent()); - } else { - super.paintComponent(g); - } - } - }; + protected SeparatorWithText mySeparatorComponent = createSeparator(); + + protected abstract JComponent createItemComponent(); protected JComponent myComponent; protected MyComponent myRendererComponent; @@ -75,7 +49,9 @@ public abstract class GroupedElementsRenderer { protected abstract void layout(); - protected abstract JComponent createItemComponent(); + protected SeparatorWithText createSeparator() { + return new SeparatorWithText(); + } protected final JComponent configureComponent(String text, String tooltip, Icon icon, Icon disabledIcon, boolean isSelected, boolean hasSeparatorAbove, String separatorTextAbove, int preferredForcedWidth) { mySeparatorComponent.setVisible(hasSeparatorAbove); @@ -127,9 +103,9 @@ public abstract class GroupedElementsRenderer { } - protected final void setDeselected(JComponent aComponent) { + protected final void setDeselected(JComponent aComponent) { aComponent.setBackground(getBackground()); - aComponent.setForeground(Registry.is("ide.new.project.settings") ? Gray._60 : getForeground()); + aComponent.setForeground(getForeground()); } protected abstract Color getSelectionBackground(); @@ -154,7 +130,7 @@ public abstract class GroupedElementsRenderer { public abstract static class List extends GroupedElementsRenderer { @Override - protected final void layout() { + protected void layout() { myRendererComponent.add(mySeparatorComponent, BorderLayout.NORTH); myRendererComponent.add(myComponent, BorderLayout.CENTER); } diff --git a/platform/platform-api/src/com/intellij/ui/JBSplitter.java b/platform/platform-api/src/com/intellij/ui/JBSplitter.java index f25c2aee042c..b4000dbcfae2 100644 --- a/platform/platform-api/src/com/intellij/ui/JBSplitter.java +++ b/platform/platform-api/src/com/intellij/ui/JBSplitter.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -94,6 +94,14 @@ public class JBSplitter extends Splitter { saveProportion(); } + public void setOnePixelMode() { + setDividerWidth(1); + setShowDividerIcon(false); + getDivider().setBackground(new JBColor(Gray._153.withAlpha(128), Gray._100.withAlpha(128))); + setShowDividerControls(false); + setOrientation(getOrientation()); + } + protected void loadProportion() { if (! StringUtil.isEmpty(mySplitterProportionKey)) { setProportion(PropertiesComponent.getInstance().getFloat(mySplitterProportionKey, myProportion)); diff --git a/platform/platform-api/src/com/intellij/ui/TextFieldWithHistoryWithBrowseButton.java b/platform/platform-api/src/com/intellij/ui/TextFieldWithHistoryWithBrowseButton.java index 9534bf047de9..e16e421a46a9 100644 --- a/platform/platform-api/src/com/intellij/ui/TextFieldWithHistoryWithBrowseButton.java +++ b/platform/platform-api/src/com/intellij/ui/TextFieldWithHistoryWithBrowseButton.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -50,4 +50,8 @@ public class TextFieldWithHistoryWithBrowseButton extends ComponentWithBrowseBut super.addBrowseFolderListener(title, description, project, fileChooserDescriptor, accessor, autoRemoveOnHide); FileChooserFactory.getInstance().installFileCompletion(getChildComponent().getTextEditor(), fileChooserDescriptor, false, project); } + + public String getText() { + return getChildComponent().getText(); + } } diff --git a/platform/platform-api/src/com/intellij/ui/dualView/DualView.java b/platform/platform-api/src/com/intellij/ui/dualView/DualView.java index 56fe3200f03b..475220cb6d34 100644 --- a/platform/platform-api/src/com/intellij/ui/dualView/DualView.java +++ b/platform/platform-api/src/com/intellij/ui/dualView/DualView.java @@ -36,6 +36,7 @@ import com.intellij.util.config.Storage; import com.intellij.util.ui.ColumnInfo; import com.intellij.util.ui.ListTableModel; import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; import javax.swing.*; import javax.swing.border.Border; @@ -239,8 +240,9 @@ public class DualView extends JPanel { return createWrappedRenderer(super.getCellRenderer(row, column)); } + @NotNull @Override - public Component prepareRenderer(TableCellRenderer renderer, int row, int column) { + public Component prepareRenderer(@NotNull TableCellRenderer renderer, int row, int column) { final Component c = super.prepareRenderer(renderer, row, column); if (c instanceof JComponent && !myFlatView.getCellSelectionEnabled()) { ((JComponent)c).setBorder(null); diff --git a/platform/platform-api/src/com/intellij/ui/speedSearch/SpeedSearchSupply.java b/platform/platform-api/src/com/intellij/ui/speedSearch/SpeedSearchSupply.java index de3452d8e61f..736c4db0b677 100644 --- a/platform/platform-api/src/com/intellij/ui/speedSearch/SpeedSearchSupply.java +++ b/platform/platform-api/src/com/intellij/ui/speedSearch/SpeedSearchSupply.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2010 JetBrains s.r.o. + * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,6 +30,10 @@ import java.beans.PropertyChangeListener; * @author Konstantin Bulenkov */ public abstract class SpeedSearchSupply { + /** + * Client property key to use in jcomponents for passing the actual search query to renderers + */ + public static final String SEARCH_QUERY_KEY = "SEARCH_QUERY"; private static final Key SPEED_SEARCH_COMPONENT_MARKER = new Key("SPEED_SEARCH_COMPONENT_MARKER"); public static final DataKey<String> SPEED_SEARCH_CURRENT_QUERY = DataKey.create("SPEED_SEARCH_CURRENT_QUERY"); diff --git a/platform/platform-api/src/com/intellij/ui/table/JBTable.java b/platform/platform-api/src/com/intellij/ui/table/JBTable.java index d8736f6fc08e..e7ff935e57f9 100644 --- a/platform/platform-api/src/com/intellij/ui/table/JBTable.java +++ b/platform/platform-api/src/com/intellij/ui/table/JBTable.java @@ -38,6 +38,8 @@ import java.util.Comparator; import java.util.EventObject; public class JBTable extends JTable implements ComponentWithEmptyText, ComponentWithExpandableItems<TableCell> { + public static final int PREFERRED_SCROLLABLE_VIEWPORT_HEIGHT_IN_ROWS = 7; + private final StatusText myEmptyText; private final ExpandableItemsHandler<TableCell> myExpandableItemsHandler; @@ -84,30 +86,29 @@ public class JBTable extends JTable implements ComponentWithEmptyText, Component } @Override - public void columnSelectionChanged(ListSelectionEvent e) { + public void columnSelectionChanged(@NotNull ListSelectionEvent e) { } @Override - public void columnAdded(TableColumnModelEvent e) { + public void columnAdded(@NotNull TableColumnModelEvent e) { } @Override - public void columnMoved(TableColumnModelEvent e) { + public void columnMoved(@NotNull TableColumnModelEvent e) { } @Override - public void columnRemoved(TableColumnModelEvent e) { + public void columnRemoved(@NotNull TableColumnModelEvent e) { } }); final TableModelListener modelListener = new TableModelListener() { @Override - public void tableChanged(final TableModelEvent e) { + public void tableChanged(@NotNull final TableModelEvent e) { if (!myRowHeightIsExplicitlySet) { myRowHeight = -1; } - if ((e.getType() == TableModelEvent.DELETE && isEmpty()) - || (e.getType() == TableModelEvent.INSERT && !isEmpty())) { + if (e.getType() == TableModelEvent.DELETE && isEmpty() || e.getType() == TableModelEvent.INSERT && !isEmpty()) { repaintViewport(); } } @@ -116,7 +117,7 @@ public class JBTable extends JTable implements ComponentWithEmptyText, Component if (getModel() != null) getModel().addTableModelListener(modelListener); addPropertyChangeListener("model", new PropertyChangeListener() { @Override - public void propertyChange(PropertyChangeEvent evt) { + public void propertyChange(@NotNull PropertyChangeEvent evt) { repaintViewport(); if (evt.getOldValue() instanceof TableModel) { @@ -197,6 +198,7 @@ public class JBTable extends JTable implements ComponentWithEmptyText, Component } } + @NotNull @Override protected JTableHeader createDefaultTableHeader() { return new JBTableHeader(); @@ -237,7 +239,7 @@ public class JBTable extends JTable implements ComponentWithEmptyText, Component } @Override - protected void paintComponent(Graphics g) { + protected void paintComponent(@NotNull Graphics g) { if (myEnableAntialiasing) { GraphicsUtil.setupAntialiasing(g); } @@ -320,7 +322,7 @@ public class JBTable extends JTable implements ComponentWithEmptyText, Component } @Override - public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) { + public int getScrollableUnitIncrement(@NotNull Rectangle visibleRect, int orientation, int direction) { if (orientation == SwingConstants.VERTICAL) { return super.getScrollableUnitIncrement(visibleRect, orientation, direction); } @@ -339,7 +341,7 @@ public class JBTable extends JTable implements ComponentWithEmptyText, Component } @Override - public void paint(Graphics g) { + public void paint(@NotNull Graphics g) { if (!isEnabled()) { g = new TableGrayer((Graphics2D)g); } @@ -470,8 +472,9 @@ public class JBTable extends JTable implements ComponentWithEmptyText, Component isTypeAhead = false; } + @NotNull @Override - public Component prepareRenderer(TableCellRenderer renderer, int row, int column) { + public Component prepareRenderer(@NotNull TableCellRenderer renderer, int row, int column) { Component result = super.prepareRenderer(renderer, row, column); // Fix GTK background @@ -506,7 +509,7 @@ public class JBTable extends JTable implements ComponentWithEmptyText, Component } @Override - public void propertyChange(final PropertyChangeEvent e) { + public void propertyChange(@NotNull final PropertyChangeEvent e) { if (!isEditing()) { return; } @@ -541,7 +544,7 @@ public class JBTable extends JTable implements ComponentWithEmptyText, Component private final class MyMouseListener extends MouseAdapter { @Override - public void mousePressed(final MouseEvent e) { + public void mousePressed(@NotNull final MouseEvent e) { if (SwingUtilities.isRightMouseButton(e)) { final int[] selectedRows = getSelectedRows(); if (selectedRows.length < 2) { @@ -629,6 +632,7 @@ public class JBTable extends JTable implements ComponentWithEmptyText, Component return myModel.getValueAt(row, column); } + @NotNull @Override public String getStringValueAt(int row, int column) { TableStringConverter converter = getStringConverter(); @@ -666,7 +670,7 @@ public class JBTable extends JTable implements ComponentWithEmptyText, Component super(JBTable.this.columnModel); JBTable.this.addPropertyChangeListener(new PropertyChangeListener() { @Override - public void propertyChange(PropertyChangeEvent evt) { + public void propertyChange(@NotNull PropertyChangeEvent evt) { JBTableHeader.this.revalidate(); JBTableHeader.this.repaint(); } @@ -674,7 +678,7 @@ public class JBTable extends JTable implements ComponentWithEmptyText, Component } @Override - public void paint(Graphics g) { + public void paint(@NotNull Graphics g) { if (myEnableAntialiasing) { GraphicsUtil.setupAntialiasing(g); } @@ -685,7 +689,7 @@ public class JBTable extends JTable implements ComponentWithEmptyText, Component } @Override - public String getToolTipText(final MouseEvent event) { + public String getToolTipText(@NotNull final MouseEvent event) { final TableModel model = getModel(); if (model instanceof SortableColumnModel) { final int i = columnAtPoint(event.getPoint()); @@ -719,6 +723,7 @@ public class JBTable extends JTable implements ComponentWithEmptyText, Component super.setColor(color); } + @NotNull @Override public Graphics create() { return new TableGrayer((Graphics2D)super.create()); diff --git a/platform/platform-api/src/com/intellij/ui/table/TableView.java b/platform/platform-api/src/com/intellij/ui/table/TableView.java index a563c820f815..44b40e938cdb 100644 --- a/platform/platform-api/src/com/intellij/ui/table/TableView.java +++ b/platform/platform-api/src/com/intellij/ui/table/TableView.java @@ -101,10 +101,12 @@ public class TableView<Item> extends BaseTableView implements ItemsProvider, Sel final RowSorter<? extends TableModel> sorter = getRowSorter(); final RowSorter.SortKey sortKey = sorter == null ? null : ContainerUtil.getFirstItem(sorter.getSortKeys()); - ColumnInfo[] columns = getListTableModel().getColumnInfos(); - int[] sizeMode = new int[columns.length]; - int[] headers = new int[columns.length]; - int[] widths = new int[columns.length]; + ColumnInfo[] columnInfos = getListTableModel().getColumnInfos(); + TableColumnModel columnModel = getColumnModel(); + int visibleColumnCount = columnModel.getColumnCount(); + int[] sizeMode = new int[visibleColumnCount]; + int[] headers = new int[visibleColumnCount]; + int[] widths = new int[visibleColumnCount]; int allColumnWidth = 0; int allColumnCurrent = 0; int varCount = 0; @@ -112,9 +114,9 @@ public class TableView<Item> extends BaseTableView implements ItemsProvider, Sel Icon sortIcon = UIManager.getIcon("Table.ascendingSortIcon"); // calculate - for (int i = 0; i < columns.length; i++) { - final ColumnInfo columnInfo = columns[i]; - final TableColumn column = getColumnModel().getColumn(i); + for (int i = 0; i < visibleColumnCount; i++) { + final TableColumn column = columnModel.getColumn(i); + final ColumnInfo columnInfo = columnInfos[column.getModelIndex()]; TableCellRenderer columnHeaderRenderer = column.getHeaderRenderer(); if (columnHeaderRenderer == null) { @@ -162,8 +164,8 @@ public class TableView<Item> extends BaseTableView implements ItemsProvider, Sel allColumnWidth < (1 - gold) * viewWidth ? (1 - gold) * viewWidth : viewWidth) - allColumnWidth) / varCount; - for (int i=0 ; i<columns.length; i ++) { - TableColumn column = getColumnModel().getColumn(i); + for (int i = 0 ; i < visibleColumnCount; i++) { + TableColumn column = columnModel.getColumn(i); int width = widths[i]; if (sizeMode[i] == 1) { column.setMaxWidth(width); diff --git a/platform/platform-api/src/com/intellij/ui/tabs/impl/JBTabsImpl.java b/platform/platform-api/src/com/intellij/ui/tabs/impl/JBTabsImpl.java index 532c95a52a17..a058badddd41 100644 --- a/platform/platform-api/src/com/intellij/ui/tabs/impl/JBTabsImpl.java +++ b/platform/platform-api/src/com/intellij/ui/tabs/impl/JBTabsImpl.java @@ -930,7 +930,7 @@ public class JBTabsImpl extends JComponent if (isShowing()) { - return myFocusManager.requestFocus(new FocusCommand.ByComponent(toFocus), true); + return myFocusManager.requestFocus(new FocusCommand.ByComponent(toFocus, new Exception()), true); } else { final ActionCallback result = new ActionCallback(); @@ -948,7 +948,7 @@ public class JBTabsImpl extends JComponent @Override public void run() { queued.set(true); - requestor.requestFocus(new FocusCommand.ByComponent(toFocus), true).notify(result); + requestor.requestFocus(new FocusCommand.ByComponent(toFocus, new Exception()), true).notify(result); } }; return result; |