mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
get rid of KotlinFriendlyColoredListCellRenderer — we can add type to java code since we use Java 8
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 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.
|
||||
@@ -25,8 +25,8 @@ import java.awt.*;
|
||||
/**
|
||||
* @author Vladimir Kondratyev
|
||||
*/
|
||||
public abstract class ColoredListCellRenderer<T> extends SimpleColoredComponent implements ListCellRenderer {
|
||||
private final ListCellRenderer myDefaultGtkRenderer = UIUtil.isUnderGTKLookAndFeel() ? new JComboBox().getRenderer() : null;
|
||||
public abstract class ColoredListCellRenderer<T> extends SimpleColoredComponent implements ListCellRenderer<T> {
|
||||
private final ListCellRenderer myDefaultGtkRenderer = UIUtil.isUnderGTKLookAndFeel() ? new JComboBox<T>().getRenderer() : null;
|
||||
|
||||
protected boolean mySelected;
|
||||
protected Color myForeground;
|
||||
@@ -45,7 +45,8 @@ public abstract class ColoredListCellRenderer<T> extends SimpleColoredComponent
|
||||
getIpad().right = UIUtil.getListCellHPadding();
|
||||
}
|
||||
|
||||
public Component getListCellRendererComponent(JList list, Object value, int index, boolean selected, boolean hasFocus) {
|
||||
@Override
|
||||
public Component getListCellRendererComponent(JList<? extends T> list, T value, int index, boolean selected, boolean hasFocus) {
|
||||
clear();
|
||||
|
||||
if (myComboBox != null) {
|
||||
@@ -72,7 +73,7 @@ public abstract class ColoredListCellRenderer<T> extends SimpleColoredComponent
|
||||
|
||||
setPaintFocusBorder(hasFocus);
|
||||
|
||||
customizeCellRenderer(list, (T)value, index, selected, hasFocus);
|
||||
customizeCellRenderer(list, value, index, selected, hasFocus);
|
||||
|
||||
if (myDefaultGtkRenderer != null && list.getModel() instanceof ComboBoxModel) {
|
||||
final Component component = myDefaultGtkRenderer.getListCellRendererComponent(list, value, index, selected, hasFocus);
|
||||
@@ -87,6 +88,7 @@ public abstract class ColoredListCellRenderer<T> extends SimpleColoredComponent
|
||||
* When the item is selected then we use default tree's selection foreground.
|
||||
* It guaranties readability of selected text in any LAF.
|
||||
*/
|
||||
@Override
|
||||
public final void append(@NotNull String fragment, @NotNull SimpleTextAttributes attributes, boolean isMainText) {
|
||||
if (mySelected) {
|
||||
super.append(fragment, new SimpleTextAttributes(attributes.getStyle(), mySelectionForeground), isMainText);
|
||||
@@ -99,6 +101,7 @@ public abstract class ColoredListCellRenderer<T> extends SimpleColoredComponent
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public Dimension getPreferredSize() {
|
||||
// There is a bug in BasicComboPopup. It does not add renderer into CellRendererPane,
|
||||
@@ -116,15 +119,5 @@ public abstract class ColoredListCellRenderer<T> extends SimpleColoredComponent
|
||||
return result;
|
||||
}
|
||||
|
||||
protected abstract void customizeCellRenderer(JList list, T value, int index, boolean selected, boolean hasFocus);
|
||||
|
||||
public abstract static class KotlinFriendlyColoredListCellRenderer<T> extends ColoredListCellRenderer<T> {
|
||||
@Override
|
||||
protected final void customizeCellRenderer(JList list, T value, int index, boolean selected, boolean hasFocus) {
|
||||
|
||||
}
|
||||
|
||||
// cannot specify type param in JList if JDK 6
|
||||
protected abstract void customizeCellRenderer(T value, int index, boolean selected, boolean hasFocus);
|
||||
}
|
||||
protected abstract void customizeCellRenderer(@NotNull JList<? extends T> list, T value, int index, boolean selected, boolean hasFocus);
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@ import org.jetbrains.rpc.LOG
|
||||
import java.net.ConnectException
|
||||
import java.net.InetSocketAddress
|
||||
import java.util.concurrent.atomic.AtomicReference
|
||||
import javax.swing.JList
|
||||
|
||||
abstract class RemoteVmConnection : VmConnection<Vm>() {
|
||||
var port = -1
|
||||
@@ -106,7 +107,7 @@ abstract class RemoteVmConnection : VmConnection<Vm>() {
|
||||
|
||||
fun RemoteVmConnection.open(address: InetSocketAddress, processHandler: ProcessHandler) = open(address, Condition<java.lang.Void> { processHandler.isProcessTerminating || processHandler.isProcessTerminated })
|
||||
|
||||
fun <T> chooseDebuggee(targets: Collection<T>, selectedIndex: Int, renderer: (T, ColoredListCellRenderer.KotlinFriendlyColoredListCellRenderer<*>) -> Unit): Promise<T> {
|
||||
fun <T> chooseDebuggee(targets: Collection<T>, selectedIndex: Int, renderer: (T, ColoredListCellRenderer<*>) -> Unit): Promise<T> {
|
||||
if (targets.size == 1) {
|
||||
return resolvedPromise(targets.first())
|
||||
}
|
||||
@@ -117,8 +118,8 @@ fun <T> chooseDebuggee(targets: Collection<T>, selectedIndex: Int, renderer: (T,
|
||||
val result = org.jetbrains.concurrency.AsyncPromise<T>()
|
||||
ApplicationManager.getApplication().invokeLater {
|
||||
val list = JBList(targets)
|
||||
list.cellRenderer = object : ColoredListCellRenderer.KotlinFriendlyColoredListCellRenderer<T>() {
|
||||
override fun customizeCellRenderer(value: T, index: Int, selected: Boolean, hasFocus: Boolean) {
|
||||
list.cellRenderer = object : ColoredListCellRenderer<T>() {
|
||||
override fun customizeCellRenderer(list: JList<out T>, value: T, index: Int, selected: Boolean, hasFocus: Boolean) {
|
||||
renderer(value, this)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user