summaryrefslogtreecommitdiffstats
path: root/src/cppcheckplus/control/MyList.java
blob: 2a577ffbd67175491078e51ad90c3d213cb0ebae (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68

package cppcheckplus.control;

import java.awt.event.MouseEvent;

import javax.swing.JList;
import javax.swing.event.MouseInputAdapter;
import javax.swing.event.MouseInputListener;

import cppcheckplus.shortcut.MyShortcutItem;
import cppcheckplus.shortcut.MyShortcutItemClickListenter;


public class MyList extends JList
{
	private  MyShortcutItemClickListenter clickListenter;
	
	public MyList()
	{
		init();
	}
	public void setListenter(MyShortcutItemClickListenter itemClickListenter)
	{
		this.clickListenter = itemClickListenter;
		MouseInputListener listener = new MouseInputAdapter()
		{
			//通过Move设置Item为selected,从而触发渲染器处理,实现高亮
			@Override
			public void mouseMoved(MouseEvent e)
			{
				int moveIndex = locationToIndex(e.getPoint());
				setSelectedIndex(moveIndex);
			}
			//移动出去之后,清除选中,从而触发渲染器
			@Override
			public void mouseExited(MouseEvent e)
			{
				getSelectionModel().clearSelection();
			}

			@Override
			public void mouseClicked(MouseEvent e)
			{
				//因为该JList是单选模式,所以取第一个选择的就可以了
				Object selObj = getSelectedValue();
				if(selObj != null)
				{
					MyShortcutItem item = (MyShortcutItem)selObj;
					if(!item.isGroup())
					{
						clickListenter.ItemClick(item.getActionCommand());
					}
				}
				//itemClick.ItemClick(actionCommand)
			}
		};
		addMouseMotionListener(listener);
		addMouseListener(listener);
	}
	private void init()
	{
		setFont(MyContorlUtil.FONT_12_BOLD);
		setForeground(MyContorlUtil.DEFAULT_TEXT_COLOR);
		setBackground(MyContorlUtil.LIST_BACKGROUND);
		setCellRenderer(new MyListRenderer(this));
		setSelectionMode(0);
	}
}