mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
RUBY-20720 run anything popup
* open addExtension method and reuse it * implement different laf editors with icons handler
This commit is contained in:
committed by
Valentin Fondaratov
parent
31aa3fe35a
commit
3f56f4679d
@@ -29,10 +29,12 @@ import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.wm.IdeFocusManager;
|
||||
import com.intellij.ui.components.JBList;
|
||||
import com.intellij.ui.components.JBTextField;
|
||||
import com.intellij.util.Consumer;
|
||||
import com.intellij.util.ReflectionUtil;
|
||||
import com.intellij.util.ui.JBInsets;
|
||||
import com.intellij.util.ui.JBUI;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
@@ -116,23 +118,8 @@ public class SearchTextField extends JPanel {
|
||||
|
||||
@Override
|
||||
public void setUI(TextUI ui) {
|
||||
if (SystemInfo.isMac) {
|
||||
try {
|
||||
Class<?> uiClass = UIUtil.isUnderIntelliJLaF() ? Class.forName("com.intellij.ide.ui.laf.intellij.MacIntelliJTextFieldUI")
|
||||
: Class.forName("com.intellij.ide.ui.laf.darcula.ui.DarculaTextFieldUI");
|
||||
Method method = ReflectionUtil.getMethod(uiClass, "createUI", JComponent.class);
|
||||
if (method != null) {
|
||||
super.setUI((TextUI)method.invoke(uiClass, this));
|
||||
Class<?> borderClass = UIUtil.isUnderIntelliJLaF() ? Class.forName("com.intellij.ide.ui.laf.intellij.MacIntelliJTextBorder")
|
||||
: Class.forName("com.intellij.ide.ui.laf.darcula.ui.DarculaTextBorder");
|
||||
setBorder((Border)ReflectionUtil.newInstance(borderClass));
|
||||
setOpaque(false);
|
||||
}
|
||||
return;
|
||||
}
|
||||
catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
if (customSetupUIAndTextField(this, textUI -> super.setUI(textUI))) return;
|
||||
|
||||
super.setUI(ui);
|
||||
}
|
||||
};
|
||||
@@ -301,6 +288,27 @@ public class SearchTextField extends JPanel {
|
||||
return UIUtil.isUnderGTKLookAndFeel();
|
||||
}
|
||||
|
||||
protected boolean customSetupUIAndTextField(@NotNull TextFieldWithProcessing textField, @NotNull Consumer<TextUI> uiConsumer) {
|
||||
if (SystemInfo.isMac) {
|
||||
try {
|
||||
Class<?> uiClass = UIUtil.isUnderIntelliJLaF() ? Class.forName("com.intellij.ide.ui.laf.intellij.MacIntelliJTextFieldUI")
|
||||
: Class.forName("com.intellij.ide.ui.laf.darcula.ui.DarculaTextFieldUI");
|
||||
Method method = ReflectionUtil.getMethod(uiClass, "createUI", JComponent.class);
|
||||
if (method != null) {
|
||||
uiConsumer.consume((TextUI)method.invoke(uiClass, textField));
|
||||
Class<?> borderClass = UIUtil.isUnderIntelliJLaF() ? Class.forName("com.intellij.ide.ui.laf.intellij.MacIntelliJTextBorder")
|
||||
: Class.forName("com.intellij.ide.ui.laf.darcula.ui.DarculaTextBorder");
|
||||
textField.setBorder((Border)ReflectionUtil.newInstance(borderClass));
|
||||
textField.setOpaque(false);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void addDocumentListener(DocumentListener listener) {
|
||||
getTextEditor().getDocument().addDocumentListener(listener);
|
||||
}
|
||||
|
||||
+1
-1
@@ -495,7 +495,7 @@ public abstract class TextFieldWithPopupHandlerUI extends BasicTextFieldUI imple
|
||||
}
|
||||
}
|
||||
|
||||
private void addExtension(Extension extension) {
|
||||
protected void addExtension(Extension extension) {
|
||||
icons.put(extension.toString(), new IconHolder(extension));
|
||||
if (extension.isIconBeforeText()) {
|
||||
insets.left += extension.getPreferredSpace();
|
||||
|
||||
@@ -1408,4 +1408,11 @@ ext.project.data.serializer.description=select serialization format for external
|
||||
|
||||
editor.keep.completion.hints.longer=false
|
||||
editor.keep.completion.hints.longer.description=Don't remove hints for parameter names added on method call completion until caret moves \
|
||||
to another line
|
||||
to another line
|
||||
|
||||
run.anything.rake.tasks=true
|
||||
run.anything.generators=true
|
||||
run.anything.bundler.actions=true
|
||||
run.anything.permanent.configurations=true
|
||||
run.anything.temporary.configurations=true
|
||||
run.anything.undefined.commands=true
|
||||
Reference in New Issue
Block a user