mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
mouse sensitive editor IDEA-74912
This commit is contained in:
+13
-2
@@ -63,6 +63,7 @@ import javax.swing.table.TableColumn;
|
||||
import java.awt.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
@@ -243,13 +244,19 @@ public class JavaChangeSignatureDialog extends ChangeSignatureDialogBase<Paramet
|
||||
}
|
||||
return len;
|
||||
}
|
||||
|
||||
private int getTypesColumnWidth() {
|
||||
Font font = EditorColorsManager.getInstance().getGlobalScheme().getFont(EditorFontType.PLAIN);
|
||||
font = new Font(font.getFontName(), font.getStyle(), 12);
|
||||
return (getTypesMaxLength() + 1)* Toolkit.getDefaultToolkit().getFontMetrics(font).stringWidth("W");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected JBTableRowEditor getTableEditor(final JTable t, final ParameterTableModelItemBase<ParameterInfoImpl> item) {
|
||||
return new JBTableRowEditor() {
|
||||
private EditorTextField myTypeEditor;
|
||||
private EditorTextField myNameEditor;
|
||||
private EditorTextField myDefaultValueEditor;
|
||||
private EditorTextField myDefaultValueEditor;
|
||||
private JCheckBox myAnyVar;
|
||||
|
||||
@Override
|
||||
@@ -321,7 +328,11 @@ public class JavaChangeSignatureDialog extends ChangeSignatureDialogBase<Paramet
|
||||
|
||||
@Override
|
||||
public JComponent getPreferredFocusedComponent() {
|
||||
return myTypeEditor;
|
||||
final MouseEvent me = getMouseEvent();
|
||||
if (me == null) {
|
||||
return myTypeEditor;
|
||||
}
|
||||
return me.getPoint().getX() <= getTypesColumnWidth() ? myTypeEditor : myNameEditor;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -28,11 +28,10 @@ import javax.swing.table.TableCellEditor;
|
||||
import javax.swing.table.TableCellRenderer;
|
||||
import java.awt.*;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.util.List;
|
||||
|
||||
import static java.awt.event.KeyEvent.KEY_PRESSED;
|
||||
import static java.awt.event.KeyEvent.VK_ENTER;
|
||||
import static java.awt.event.KeyEvent.VK_TAB;
|
||||
import static java.awt.event.KeyEvent.*;
|
||||
|
||||
/**
|
||||
* @author Konstantin Bulenkov
|
||||
@@ -56,8 +55,11 @@ public abstract class JBListTable extends JPanel {
|
||||
}
|
||||
};
|
||||
mainTable = new JBTable(model) {
|
||||
private MouseEvent myMouseEvent;
|
||||
@Override
|
||||
protected void processKeyEvent(KeyEvent e) {
|
||||
myMouseEvent = null;
|
||||
|
||||
if (e.isAltDown()) return;
|
||||
//todo[kb] JBTabsImpl breaks focus traversal policy. Need a workaround here
|
||||
if (e.getKeyCode() == VK_TAB) {
|
||||
@@ -76,6 +78,12 @@ public abstract class JBListTable extends JPanel {
|
||||
super.processKeyEvent(e);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void processMouseEvent(MouseEvent e) {
|
||||
myMouseEvent = e;
|
||||
super.processMouseEvent(e);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TableCellRenderer getCellRenderer(int row, int column) {
|
||||
return new DefaultTableCellRenderer() {
|
||||
@@ -144,6 +152,7 @@ public abstract class JBListTable extends JPanel {
|
||||
public TableCellEditor getCellEditor(final int row, int column) {
|
||||
final JBTableRowEditor editor = getRowEditor(row);
|
||||
if (editor != null) {
|
||||
editor.setMouseEvent(myMouseEvent);
|
||||
editor.prepareEditor(t, row);
|
||||
installPaddingAndBordersForEditors(editor);
|
||||
editor.setFocusCycleRoot(true);
|
||||
|
||||
@@ -16,13 +16,17 @@
|
||||
package com.intellij.util.ui.table;
|
||||
|
||||
import com.intellij.openapi.wm.IdeFocusManager;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.event.MouseEvent;
|
||||
|
||||
/**
|
||||
* @author Konstantin Bulenkov
|
||||
*/
|
||||
public abstract class JBTableRowEditor extends JPanel {
|
||||
private MouseEvent myMouseEvent;
|
||||
|
||||
@Override
|
||||
public void addNotify() {
|
||||
super.addNotify();
|
||||
@@ -32,6 +36,15 @@ public abstract class JBTableRowEditor extends JPanel {
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public final MouseEvent getMouseEvent() {
|
||||
return myMouseEvent;
|
||||
}
|
||||
|
||||
public final void setMouseEvent(@Nullable MouseEvent e) {
|
||||
myMouseEvent = e;
|
||||
}
|
||||
|
||||
public abstract void prepareEditor(JTable table, int row);
|
||||
public abstract JBTableRow getValue();
|
||||
public abstract JComponent getPreferredFocusedComponent();
|
||||
|
||||
Reference in New Issue
Block a user