public void mouseEnter(MouseEvent e) { if (entered == 0) { root.addPaintListener(painter); setBackground(root, ColorUtil.get(220, 220, 255)); } entered++; }
private static class SelectableMouseTrackListener implements MouseTrackListener { SelectableMouseTrackListener(Control root) { this.root = root; initialBg = root.getBackground(); root.addDisposeListener( new DisposeListener() { public void widgetDisposed(DisposeEvent e) { SelectableMouseTrackListener.this.root = null; border = null; painter = null; initialBg = null; } }); } private Control root; private Color initialBg; private BorderStyle border = new BorderStyle.SimpleLine(ColorUtil.get(180, 180, 255), 1); private PaintListener painter = new PaintListener() { public void paintControl(PaintEvent e) { border.paint(e, 0); } }; private int entered = 0; public void mouseEnter(MouseEvent e) { if (entered == 0) { root.addPaintListener(painter); setBackground(root, ColorUtil.get(220, 220, 255)); } entered++; } public void mouseExit(MouseEvent e) { if (--entered == 0) { root.removePaintListener(painter); setBackground(root, initialBg); } } public void mouseHover(MouseEvent e) {} }