javax.swing.plaf.basic.BasicComboPopup Java Examples

The following examples show how to use javax.swing.plaf.basic.BasicComboPopup. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: BoundsPopupMenuListener.java    From Juicebox with MIT License 6 votes vote down vote up
/**
 * Alter the bounds of the popup just before it is made visible.
 */
@Override
public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
    @SuppressWarnings("unchecked")
    JComboBox<E> comboBox = (JComboBox<E>) e.getSource();

    if (comboBox.getItemCount() == 0) return;

    final Object child = comboBox.getAccessibleContext().getAccessibleChild(0);

    if (child instanceof BasicComboPopup) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                customizePopup((BasicComboPopup) child);
            }
        });
    }
}
 
Example #2
Source File: MaterialComboBox.java    From swing-material with MIT License 6 votes vote down vote up
public MaterialComboBox() {
    setModel(new DefaultComboBoxModel<T>());
    setRenderer(new FieldRenderer<T>(this));
    setUI(new BasicComboBoxUI() {
        @Override
        protected ComboPopup createPopup() {
            BasicComboPopup popup = new Popup(comboBox);
            popup.getAccessibleContext().setAccessibleParent(comboBox);
            return popup;
        }

        @Override
        protected JButton createArrowButton() {
            JButton button = new javax.swing.plaf.basic.BasicArrowButton(
                    javax.swing.plaf.basic.BasicArrowButton.SOUTH,
                    MaterialColor.TRANSPARENT,
                    MaterialColor.TRANSPARENT,
                    MaterialColor.TRANSPARENT,
                    MaterialColor.TRANSPARENT);
            button.setName("ComboBox.arrowButton");
            return button;
        }
    });
    setOpaque(false);
    setBackground(MaterialColor.TRANSPARENT);
}
 
Example #3
Source File: AbstractSuggestionBoxValueCellEditor.java    From rapidminer-studio with GNU Affero General Public License v3.0 6 votes vote down vote up
/**
 * Creates a grayed out version of the loading gif that can be used in a combobox through an image observer
 *
 * @since 9.2.0
 */
private static ImageIcon makeLoadingIcon(JComboBox comboBox) {
	ImageIcon icon = new ImageIcon(LOADING_ICON);
	icon.setImageObserver((img, infoflags, x, y, w, h) -> {
		boolean isFrameOrAll = (infoflags & (ImageObserver.FRAMEBITS | ImageObserver.ALLBITS)) != 0;
		if (!comboBox.isShowing() || !isFrameOrAll) {
			return !isFrameOrAll;
		}
		if (comboBox.getSelectedIndex() == 0) {
			comboBox.repaint();
		}
		BasicComboPopup p = (BasicComboPopup) comboBox.getAccessibleContext().getAccessibleChild(0);
		JList list = p.getList();
		if (list.isShowing()) {
			list.repaint();
		}
		return true;
	});
	return icon;
}
 
Example #4
Source File: MouseComboBoxTest.java    From openjdk-jdk8u with GNU General Public License v2.0 6 votes vote down vote up
private static Point getItemPointToClick(final int item) throws Exception {
    final Point[] result = new Point[1];

    SwingUtilities.invokeAndWait(new Runnable() {
        @Override
        public void run() {
            BasicComboPopup popup = (BasicComboPopup)comboBoxUI.getComboPopup();
            Point point = popup.getLocationOnScreen();
            Dimension size = popup.getSize();

            int step = size.height / items.length;
            point.x += size.width / 2;
            point.y += step / 2 + step * item;
            result[0] = point;
        }
    });
    return result[0];
}
 
Example #5
Source File: MouseComboBoxTest.java    From jdk8u-jdk with GNU General Public License v2.0 6 votes vote down vote up
private static Point getItemPointToClick(final int item) throws Exception {
    final Point[] result = new Point[1];

    SwingUtilities.invokeAndWait(new Runnable() {
        @Override
        public void run() {
            BasicComboPopup popup = (BasicComboPopup)comboBoxUI.getComboPopup();
            Point point = popup.getLocationOnScreen();
            Dimension size = popup.getSize();

            int step = size.height / items.length;
            point.x += size.width / 2;
            point.y += step / 2 + step * item;
            result[0] = point;
        }
    });
    return result[0];
}
 
Example #6
Source File: MouseComboBoxTest.java    From openjdk-jdk8u-backup with GNU General Public License v2.0 6 votes vote down vote up
private static Point getItemPointToClick(final int item) throws Exception {
    final Point[] result = new Point[1];

    SwingUtilities.invokeAndWait(new Runnable() {
        @Override
        public void run() {
            BasicComboPopup popup = (BasicComboPopup)comboBoxUI.getComboPopup();
            Point point = popup.getLocationOnScreen();
            Dimension size = popup.getSize();

            int step = size.height / items.length;
            point.x += size.width / 2;
            point.y += step / 2 + step * item;
            result[0] = point;
        }
    });
    return result[0];
}
 
Example #7
Source File: MouseComboBoxTest.java    From jdk8u60 with GNU General Public License v2.0 6 votes vote down vote up
private static Point getItemPointToClick(final int item) throws Exception {
    final Point[] result = new Point[1];

    SwingUtilities.invokeAndWait(new Runnable() {
        @Override
        public void run() {
            BasicComboPopup popup = (BasicComboPopup)comboBoxUI.getComboPopup();
            Point point = popup.getLocationOnScreen();
            Dimension size = popup.getSize();

            int step = size.height / items.length;
            point.x += size.width / 2;
            point.y += step / 2 + step * item;
            result[0] = point;
        }
    });
    return result[0];
}
 
Example #8
Source File: MouseComboBoxTest.java    From jdk8u_jdk with GNU General Public License v2.0 6 votes vote down vote up
private static Point getItemPointToClick(final int item) throws Exception {
    final Point[] result = new Point[1];

    SwingUtilities.invokeAndWait(new Runnable() {
        @Override
        public void run() {
            BasicComboPopup popup = (BasicComboPopup)comboBoxUI.getComboPopup();
            Point point = popup.getLocationOnScreen();
            Dimension size = popup.getSize();

            int step = size.height / items.length;
            point.x += size.width / 2;
            point.y += step / 2 + step * item;
            result[0] = point;
        }
    });
    return result[0];
}
 
Example #9
Source File: XDMComboBoxUI.java    From xdm with GNU General Public License v2.0 6 votes vote down vote up
@Override
protected ComboPopup createPopup() {
	return new BasicComboPopup(comboBox) {
		/**
		 * 
		 */
		private static final long serialVersionUID = -4232501153552563408L;

		@Override
		protected JScrollPane createScroller() {
			JScrollPane scroller = new JScrollPane(list, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
					JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
			scroller.setVerticalScrollBar(new DarkScrollBar(JScrollBar.VERTICAL));
			return scroller;
		}
	};
}
 
Example #10
Source File: MouseComboBoxTest.java    From jdk8u-dev-jdk with GNU General Public License v2.0 6 votes vote down vote up
private static Point getItemPointToClick(final int item) throws Exception {
    final Point[] result = new Point[1];

    SwingUtilities.invokeAndWait(new Runnable() {
        @Override
        public void run() {
            BasicComboPopup popup = (BasicComboPopup)comboBoxUI.getComboPopup();
            Point point = popup.getLocationOnScreen();
            Dimension size = popup.getSize();

            int step = size.height / items.length;
            point.x += size.width / 2;
            point.y += step / 2 + step * item;
            result[0] = point;
        }
    });
    return result[0];
}
 
Example #11
Source File: MouseComboBoxTest.java    From TencentKona-8 with GNU General Public License v2.0 6 votes vote down vote up
private static Point getItemPointToClick(final int item) throws Exception {
    final Point[] result = new Point[1];

    SwingUtilities.invokeAndWait(new Runnable() {
        @Override
        public void run() {
            BasicComboPopup popup = (BasicComboPopup)comboBoxUI.getComboPopup();
            Point point = popup.getLocationOnScreen();
            Dimension size = popup.getSize();

            int step = size.height / items.length;
            point.x += size.width / 2;
            point.y += step / 2 + step * item;
            result[0] = point;
        }
    });
    return result[0];
}
 
Example #12
Source File: BoundsPopupMenuListener.java    From Juicebox with MIT License 6 votes vote down vote up
private void customizePopup(BasicComboPopup popup) {
    scrollPane = getScrollPane(popup);

    if (popupWider)
        popupWider(popup);

    checkHorizontalScrollBar(popup);

    //  For some reason in JDK7 the popup will not display at its preferred
    //  width unless its location has been changed from its default
    //  (ie. for normal "pop down" shift the popup and reset)

    Component comboBox = popup.getInvoker();
    Point location = comboBox.getLocationOnScreen();

    if (popupAbove) {
        int height = popup.getPreferredSize().height;
        popup.setLocation(location.x, location.y - height);
    } else {
        //int height = comboBox.getPreferredSize().height;
        //popup.setLocation(location.x, location.y + height - 1);
        //popup.setLocation(location.x, location.y + height);
        //TODO should not be hardcoded
        popup.setLocation(location.x + 5, location.y + 35);
    }
}
 
Example #13
Source File: BoundsPopupMenuListener.java    From Juicebox with MIT License 6 votes vote down vote up
private void popupWider(BasicComboPopup popup) {
    @SuppressWarnings("unchecked")
    JList<E> list = (JList<E>) popup.getList();

    //  Determine the maximimum width to use:
    //  a) determine the popup preferred width
    //  b) limit width to the maximum if specified
    //  c) ensure width is not less than the scroll pane width

    int popupWidth = list.getPreferredSize().width
            + 5  // make sure horizontal scrollbar doesn't appear
            + getScrollBarWidth(popup, scrollPane);

    if (maximumWidth != -1) {
        popupWidth = Math.min(popupWidth, maximumWidth);
    }

    Dimension scrollPaneSize = scrollPane.getPreferredSize();
    popupWidth = Math.max(popupWidth, scrollPaneSize.width);

    //  Adjust the width

    scrollPaneSize.width = popupWidth;
    scrollPane.setPreferredSize(scrollPaneSize);
    scrollPane.setMaximumSize(scrollPaneSize);
}
 
Example #14
Source File: MouseComboBoxTest.java    From dragonwell8_jdk with GNU General Public License v2.0 6 votes vote down vote up
private static Point getItemPointToClick(final int item) throws Exception {
    final Point[] result = new Point[1];

    SwingUtilities.invokeAndWait(new Runnable() {
        @Override
        public void run() {
            BasicComboPopup popup = (BasicComboPopup)comboBoxUI.getComboPopup();
            Point point = popup.getLocationOnScreen();
            Dimension size = popup.getSize();

            int step = size.height / items.length;
            point.x += size.width / 2;
            point.y += step / 2 + step * item;
            result[0] = point;
        }
    });
    return result[0];
}
 
Example #15
Source File: MouseComboBoxTest.java    From openjdk-jdk9 with GNU General Public License v2.0 6 votes vote down vote up
private static Point getItemPointToClick(final int item) throws Exception {
    final Point[] result = new Point[1];

    SwingUtilities.invokeAndWait(new Runnable() {
        @Override
        public void run() {
            BasicComboPopup popup = (BasicComboPopup)comboBoxUI.getComboPopup();
            Point point = popup.getLocationOnScreen();
            Dimension size = popup.getSize();

            int step = size.height / items.length;
            point.x += size.width / 2;
            point.y += step / 2 + step * item;
            result[0] = point;
        }
    });
    return result[0];
}
 
Example #16
Source File: MouseComboBoxTest.java    From hottub with GNU General Public License v2.0 6 votes vote down vote up
private static Point getItemPointToClick(final int item) throws Exception {
    final Point[] result = new Point[1];

    SwingUtilities.invokeAndWait(new Runnable() {
        @Override
        public void run() {
            BasicComboPopup popup = (BasicComboPopup)comboBoxUI.getComboPopup();
            Point point = popup.getLocationOnScreen();
            Dimension size = popup.getSize();

            int step = size.height / items.length;
            point.x += size.width / 2;
            point.y += step / 2 + step * item;
            result[0] = point;
        }
    });
    return result[0];
}
 
Example #17
Source File: MouseComboBoxTest.java    From jdk8u-jdk with GNU General Public License v2.0 6 votes vote down vote up
private static Point getItemPointToClick(final int item) throws Exception {
    final Point[] result = new Point[1];

    SwingUtilities.invokeAndWait(new Runnable() {
        @Override
        public void run() {
            BasicComboPopup popup = (BasicComboPopup)comboBoxUI.getComboPopup();
            Point point = popup.getLocationOnScreen();
            Dimension size = popup.getSize();

            int step = size.height / items.length;
            point.x += size.width / 2;
            point.y += step / 2 + step * item;
            result[0] = point;
        }
    });
    return result[0];
}
 
Example #18
Source File: BoundsPopupMenuListener.java    From openAGV with Apache License 2.0 6 votes vote down vote up
/**
 * Adjusts the width of the scrollpane used by the popup.
 */
protected void popupWider(BasicComboPopup popup) {
  JList<?> list = popup.getList();

  //  Determine the maximimum width to use:
  //  a) determine the popup preferred width
  //  b) ensure width is not less than the scroll pane width
  int popupWidth = list.getPreferredSize().width
      + 5 // make sure horizontal scrollbar doesn't appear
      + getScrollBarWidth(popup, scrollPane);

  Dimension scrollPaneSize = scrollPane.getPreferredSize();
  popupWidth = Math.max(popupWidth, scrollPaneSize.width);

  //  Adjust the width
  scrollPaneSize.width = popupWidth;
  scrollPane.setPreferredSize(scrollPaneSize);
  scrollPane.setMaximumSize(scrollPaneSize);
}
 
Example #19
Source File: BoundsPopupMenuListener.java    From Juicebox with MIT License 5 votes vote down vote up
private int getScrollBarWidth(BasicComboPopup popup, JScrollPane scrollPane) {
    int scrollBarWidth = 0;
    @SuppressWarnings("unchecked")
    JComboBox<E> comboBox = (JComboBox<E>) popup.getInvoker();

    if (comboBox.getItemCount() > comboBox.getMaximumRowCount()) {
        JScrollBar vertical = scrollPane.getVerticalScrollBar();
        scrollBarWidth = vertical.getPreferredSize().width;
    }

    return scrollBarWidth;
}
 
Example #20
Source File: bug4743225.java    From openjdk-8 with GNU General Public License v2.0 5 votes vote down vote up
public static BasicComboPopup getPopup() {
    AccessibleContext c = cb.getAccessibleContext();
    for(int i = 0; i < c.getAccessibleChildrenCount(); i ++) {
        if (c.getAccessibleChild(i) instanceof BasicComboPopup) {
            return (BasicComboPopup) c.getAccessibleChild(i);
        }
    }
    throw new AssertionError("No BasicComboPopup found");
}
 
Example #21
Source File: BoundsPopupMenuListener.java    From Juicebox with MIT License 5 votes vote down vote up
private boolean horizontalScrollBarWillBeVisible(BasicComboPopup popup, JScrollPane scrollPane) {
    @SuppressWarnings("unchecked")
    JList<E> list = (JList<E>) popup.getList();
    int scrollBarWidth = getScrollBarWidth(popup, scrollPane);
    int popupWidth = list.getPreferredSize().width + scrollBarWidth;

    return popupWidth > scrollPane.getPreferredSize().width;
}
 
Example #22
Source File: BoundsPopupMenuListener.java    From Juicebox with MIT License 5 votes vote down vote up
private JScrollPane getScrollPane(BasicComboPopup popup) {
    @SuppressWarnings("unchecked")
    JList<E> list = (JList<E>) popup.getList();
    Container c = SwingUtilities.getAncestorOfClass(JScrollPane.class, list);

    return (JScrollPane) c;
}
 
Example #23
Source File: BoundsPopupMenuListener.java    From openAGV with Apache License 2.0 5 votes vote down vote up
/**
 * Alter the bounds of the popup just before it is made visible.
 *
 * @param e The event.
 */
@Override
public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
  JComboBox<?> comboBox = (JComboBox) e.getSource();
  if (comboBox.getItemCount() == 0) {
    return;
  }
  final Object child = comboBox.getAccessibleContext().getAccessibleChild(0);

  if (child instanceof BasicComboPopup) {
    SwingUtilities.invokeLater(() -> customizePopup((BasicComboPopup) child));
  }
}
 
Example #24
Source File: JPopupMenu.java    From openjdk-8 with GNU General Public License v2.0 5 votes vote down vote up
private void fireActiveDescendant() {
    if (JPopupMenu.this instanceof BasicComboPopup) {
        // get the popup list
        JList<?> popupList = ((BasicComboPopup)JPopupMenu.this).getList();
        if (popupList == null) {
            return;
        }

        // get the first selected item
        AccessibleContext ac = popupList.getAccessibleContext();
        AccessibleSelection selection = ac.getAccessibleSelection();
        if (selection == null) {
            return;
        }
        Accessible a = selection.getAccessibleSelection(0);
        if (a == null) {
            return;
        }
        AccessibleContext selectedItem = a.getAccessibleContext();

        // fire the event with the popup invoker as the source.
        if (selectedItem != null && invoker != null) {
            AccessibleContext invokerContext = invoker.getAccessibleContext();
            if (invokerContext != null) {
                // Check invokerContext because Component.getAccessibleContext
                // returns null. Classes that extend Component are responsible
                // for returning a non-null AccessibleContext.
                invokerContext.firePropertyChange(
                    ACCESSIBLE_ACTIVE_DESCENDANT_PROPERTY,
                    null, selectedItem);
            }
        }
    }
}
 
Example #25
Source File: FlatComboBox.java    From workcraft with MIT License 5 votes vote down vote up
@Override
protected ComboPopup createPopup() {
    BasicComboPopup popup = new BasicComboPopup(comboBox) {
        @Override
        protected Rectangle computePopupBounds(int px, int py, int pw, int ph) {
            return super.computePopupBounds(px, py, Math.max(comboBox.getPreferredSize().width, pw), ph);
        }
    };
    popup.getAccessibleContext().setAccessibleParent(comboBox);
    return popup;
}
 
Example #26
Source File: DarculaPopupMenuBorder.java    From consulo with Apache License 2.0 5 votes vote down vote up
private static Shape getBorderShape(Component c, Rectangle rect) {
  Path2D border = new Path2D.Float(Path2D.WIND_EVEN_ODD);
  if (isComboPopup(c) && ((BasicComboPopup)c).getClientProperty("JComboBox.isCellEditor") == Boolean.TRUE) {
    JBInsets.removeFrom(rect, JBInsets.create(0, 1));
  }

  border.append(rect, false);

  Rectangle innerRect = new Rectangle(rect);
  JBInsets.removeFrom(innerRect, JBUI.insets(JBUI.getInt("PopupMenu.borderWidth", 1)));
  border.append(innerRect, false);

  return border;
}
 
Example #27
Source File: JPopupMenu.java    From openjdk-8-source with GNU General Public License v2.0 5 votes vote down vote up
private void fireActiveDescendant() {
    if (JPopupMenu.this instanceof BasicComboPopup) {
        // get the popup list
        JList<?> popupList = ((BasicComboPopup)JPopupMenu.this).getList();
        if (popupList == null) {
            return;
        }

        // get the first selected item
        AccessibleContext ac = popupList.getAccessibleContext();
        AccessibleSelection selection = ac.getAccessibleSelection();
        if (selection == null) {
            return;
        }
        Accessible a = selection.getAccessibleSelection(0);
        if (a == null) {
            return;
        }
        AccessibleContext selectedItem = a.getAccessibleContext();

        // fire the event with the popup invoker as the source.
        if (selectedItem != null && invoker != null) {
            AccessibleContext invokerContext = invoker.getAccessibleContext();
            if (invokerContext != null) {
                // Check invokerContext because Component.getAccessibleContext
                // returns null. Classes that extend Component are responsible
                // for returning a non-null AccessibleContext.
                invokerContext.firePropertyChange(
                    ACCESSIBLE_ACTIVE_DESCENDANT_PROPERTY,
                    null, selectedItem);
            }
        }
    }
}
 
Example #28
Source File: bug4743225.java    From hottub with GNU General Public License v2.0 5 votes vote down vote up
public static BasicComboPopup getPopup() {
    AccessibleContext c = cb.getAccessibleContext();
    for(int i = 0; i < c.getAccessibleChildrenCount(); i ++) {
        if (c.getAccessibleChild(i) instanceof BasicComboPopup) {
            return (BasicComboPopup) c.getAccessibleChild(i);
        }
    }
    throw new AssertionError("No BasicComboPopup found");
}
 
Example #29
Source File: JPopupMenu.java    From hottub with GNU General Public License v2.0 5 votes vote down vote up
private void fireActiveDescendant() {
    if (JPopupMenu.this instanceof BasicComboPopup) {
        // get the popup list
        JList<?> popupList = ((BasicComboPopup)JPopupMenu.this).getList();
        if (popupList == null) {
            return;
        }

        // get the first selected item
        AccessibleContext ac = popupList.getAccessibleContext();
        AccessibleSelection selection = ac.getAccessibleSelection();
        if (selection == null) {
            return;
        }
        Accessible a = selection.getAccessibleSelection(0);
        if (a == null) {
            return;
        }
        AccessibleContext selectedItem = a.getAccessibleContext();

        // fire the event with the popup invoker as the source.
        if (selectedItem != null && invoker != null) {
            AccessibleContext invokerContext = invoker.getAccessibleContext();
            if (invokerContext != null) {
                // Check invokerContext because Component.getAccessibleContext
                // returns null. Classes that extend Component are responsible
                // for returning a non-null AccessibleContext.
                invokerContext.firePropertyChange(
                    ACCESSIBLE_ACTIVE_DESCENDANT_PROPERTY,
                    null, selectedItem);
            }
        }
    }
}
 
Example #30
Source File: JPopupMenu.java    From Java8CN with Apache License 2.0 5 votes vote down vote up
private void fireActiveDescendant() {
    if (JPopupMenu.this instanceof BasicComboPopup) {
        // get the popup list
        JList<?> popupList = ((BasicComboPopup)JPopupMenu.this).getList();
        if (popupList == null) {
            return;
        }

        // get the first selected item
        AccessibleContext ac = popupList.getAccessibleContext();
        AccessibleSelection selection = ac.getAccessibleSelection();
        if (selection == null) {
            return;
        }
        Accessible a = selection.getAccessibleSelection(0);
        if (a == null) {
            return;
        }
        AccessibleContext selectedItem = a.getAccessibleContext();

        // fire the event with the popup invoker as the source.
        if (selectedItem != null && invoker != null) {
            AccessibleContext invokerContext = invoker.getAccessibleContext();
            if (invokerContext != null) {
                // Check invokerContext because Component.getAccessibleContext
                // returns null. Classes that extend Component are responsible
                // for returning a non-null AccessibleContext.
                invokerContext.firePropertyChange(
                    ACCESSIBLE_ACTIVE_DESCENDANT_PROPERTY,
                    null, selectedItem);
            }
        }
    }
}