IDEA-19061 Integrate the Rearranger-plugin into core-IDE

Use 'inactive' atom condition close icon when mouse leaves the list component
This commit is contained in:
Denis.Zhdanov
2012-11-02 12:54:53 +04:00
parent 274f4876c4
commit 98acdcc53d
7 changed files with 53 additions and 15 deletions
@@ -119,7 +119,7 @@ public class ArrangementListRowDecorator extends JPanel implements ArrangementMa
@Override
public void setSelected(boolean selected) {
// TODO den implement
myDelegate.setSelected(selected);
}
@Nullable
@@ -133,9 +133,10 @@ public class ArrangementListRowDecorator extends JPanel implements ArrangementMa
myDelegate.onMouseClick(event);
}
@Nullable
@Override
public void onMouseExited() {
myDelegate.onMouseExited();
public Rectangle onMouseExited() {
return myDelegate.onMouseExited();
}
@Override
@@ -28,6 +28,8 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
@@ -61,10 +63,13 @@ public class ArrangementMatchingRulesList extends JBList {
@Override public void mouseMoved(MouseEvent e) { onMouseMoved(e); }
});
addMouseListener(new MouseAdapter() {
@Override public void mouseExited(MouseEvent e) { onMouseExited(); }
@Override public void mouseExited(MouseEvent e) { onMouseExited(e); }
@Override public void mouseEntered(MouseEvent e) { onMouseEntered(e); }
@Override public void mouseClicked(MouseEvent e) { onMouseClicked(e); }
});
addListSelectionListener(new ListSelectionListener() {
@Override public void valueChanged(ListSelectionEvent e) { onSelectionChange(e); }
});
}
public void setRules(@Nullable List<StdArrangementMatchRule> rules) {
@@ -90,13 +95,17 @@ public class ArrangementMatchingRulesList extends JBList {
private void onMouseMoved(@NotNull MouseEvent e) {
int i = locationToIndex(e.getPoint());
if (i != myRowUnderMouse) {
onMouseExited();
onMouseExited(e);
}
if (i < 0) {
return;
}
if (i != myRowUnderMouse) {
onMouseEntered(e);
}
ArrangementListRowDecorator decorator = myComponents.get(i);
if (decorator == null) {
return;
@@ -128,19 +137,34 @@ public class ArrangementMatchingRulesList extends JBList {
}
}
private void onMouseExited() {
private void onMouseExited(@NotNull MouseEvent e) {
if (myRowUnderMouse < 0) {
return;
}
ArrangementListRowDecorator decorator = myComponents.get(myRowUnderMouse);
if (decorator != null) {
decorator.onMouseExited();
if (decorator == null) {
return;
}
Rectangle rectangle = decorator.onMouseExited();
if (rectangle != null) {
repaintScreenBounds(rectangle);
}
}
private void onMouseEntered(@NotNull MouseEvent e) {
// TODO den implement
myRowUnderMouse = locationToIndex(e.getPoint());
}
private void onSelectionChange(@NotNull ListSelectionEvent e) {
ListSelectionModel model = getSelectionModel();
for (int i = e.getFirstIndex(); i <= e.getLastIndex(); i++) {
ArrangementListRowDecorator decorator = myComponents.get(i);
if (decorator != null) {
decorator.setSelected(model.isSelectedIndex(i));
}
}
}
@NotNull
@@ -184,11 +184,16 @@ public class ArrangementAndMatchConditionComponent extends JPanel implements Arr
}
}
@Nullable
@Override
public void onMouseExited() {
public Rectangle onMouseExited() {
for (ArrangementMatchConditionComponent component : myComponents) {
component.onMouseExited();
Rectangle bounds = component.onMouseExited();
if (bounds != null) {
return bounds;
}
}
return null;
}
@Override
@@ -224,9 +224,12 @@ public class ArrangementAtomMatchConditionComponent implements ArrangementMatchC
}
}
@Nullable
@Override
public void onMouseExited() {
public Rectangle onMouseExited() {
Rectangle result = myCloseButtonHovered ? getCloseButtonScreenLocation() : null;
myCloseButtonHovered = false;
return result;
}
@Nullable
@@ -184,7 +184,9 @@ public class ArrangementEditIconMatchConditionComponent extends JPanel implement
return "'edit' decorator for " + myDelegate.toString();
}
@Nullable
@Override
public void onMouseExited() {
public Rectangle onMouseExited() {
return null;
}
}
@@ -121,7 +121,9 @@ public class ArrangementGroupingMatchConditionComponent extends JPanel implement
}
}
@Nullable
@Override
public void onMouseExited() {
public Rectangle onMouseExited() {
return null;
}
}
@@ -81,5 +81,6 @@ public interface ArrangementMatchConditionComponent {
void onMouseClick(@NotNull MouseEvent event);
void onMouseExited();
@Nullable
Rectangle onMouseExited();
}