summaryrefslogtreecommitdiffstats
path: root/src/cppcheckplus/control/MyHeader.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cppcheckplus/control/MyHeader.java')
-rw-r--r--src/cppcheckplus/control/MyHeader.java201
1 files changed, 201 insertions, 0 deletions
diff --git a/src/cppcheckplus/control/MyHeader.java b/src/cppcheckplus/control/MyHeader.java
new file mode 100644
index 0000000..1b71704
--- /dev/null
+++ b/src/cppcheckplus/control/MyHeader.java
@@ -0,0 +1,201 @@
1
2package cppcheckplus.control;
3
4import java.awt.BorderLayout;
5import java.awt.Color;
6import java.awt.Container;
7import java.awt.Cursor;
8import java.awt.Dimension;
9import java.awt.Graphics;
10import java.awt.Graphics2D;
11import java.awt.Image;
12import java.awt.TexturePaint;
13import java.awt.event.MouseAdapter;
14import java.awt.event.MouseEvent;
15import java.awt.event.MouseListener;
16
17import javax.swing.BorderFactory;
18import javax.swing.ImageIcon;
19import javax.swing.JComponent;
20import javax.swing.JLabel;
21import javax.swing.JPanel;
22import javax.swing.border.Border;
23
24
25
26public class MyHeader extends JPanel
27{
28 public static final ImageIcon RIGHT_ARROW_ICON = MyContorlUtil.getImageIcon("control/images/shrink_handler_right.png");
29 public static final ImageIcon LEFT_ARROW_ICON = MyContorlUtil.getImageIcon("control/images/shrink_handler_left.png");
30 private Color titleColor;
31 private boolean shrinked;
32 private ImageIcon backgroundImageIcon;
33 private Image backgroundLeftImage;
34 private Image backgroundRightImage;
35 private TexturePaint paint;
36 private int preferredHeight;
37 private JLabel lbResizeHandler;
38 private JLabel lbShrinkHandler;
39 private JLabel lbTitle;
40 private int normalPreferredWidth;
41 private MyListSplitListener splitListener;
42 private MouseListener shrinkListener;
43
44 public MyHeader()
45 {
46 super();
47 titleColor = new Color(215, 215, 216);
48 shrinked = false;
49 backgroundImageIcon = MyContorlUtil.getImageIcon("control/images/header_background.png");
50 backgroundLeftImage = MyContorlUtil.getImage("control/images/header_background_left.png");
51 backgroundRightImage = MyContorlUtil.getImage("control/images/header_background_right.png");
52 paint = MyContorlUtil.createTexturePaint("control/images/header_background.png");
53 preferredHeight = backgroundImageIcon.getIconHeight();
54 lbResizeHandler = new JLabel(MyContorlUtil.getImageIcon("control/images/resize_handler.png"));
55 lbShrinkHandler = new JLabel(getShrinkIcon(shrinked));
56 lbTitle = new JLabel();
57 normalPreferredWidth = 0;
58 splitListener = createSplitListener();
59 shrinkListener = new MouseAdapter() {
60 public void mouseClicked(MouseEvent e)
61 {
62 changeShrink();
63 }
64 };
65 init();
66 }
67
68 protected MyListSplitListener createSplitListener()
69 {
70 return new MyListSplitListener(this);
71 }
72
73 protected Border createBorder()
74 {
75 return BorderFactory.createEmptyBorder(4, 7, 0, 0);
76 }
77
78 private void init()
79 {
80 setBorder(createBorder());
81 setOpaque(false);
82 setLayout(new BorderLayout());
83 add(lbResizeHandler, getResizeHandlerLayoutConstraint());
84 add(lbShrinkHandler, getShrinkHandlerLayoutConstraint());
85 JComponent centerComponent = getCenterComponent();
86 if (centerComponent != null)
87 add(centerComponent, "Center");
88 lbResizeHandler.addMouseMotionListener(splitListener);
89 lbResizeHandler.addMouseListener(splitListener);
90 lbShrinkHandler.addMouseListener(shrinkListener);
91 lbTitle.setFont(MyContorlUtil.FONT_14_BOLD);
92 lbTitle.setForeground(titleColor);
93 lbTitle.setBorder(BorderFactory.createEmptyBorder(2, 8, 0, 0));
94 updateCursor();
95 lbShrinkHandler.setBorder(BorderFactory.createEmptyBorder(0, 8, 2, 5));
96 }
97
98 protected JComponent getCenterComponent()
99 {
100 return lbTitle;
101 }
102
103 protected Object getResizeHandlerLayoutConstraint()
104 {
105 return "West";
106 }
107
108 protected Object getShrinkHandlerLayoutConstraint()
109 {
110 return "East";
111 }
112
113 protected void paintComponent(Graphics g)
114 {
115 Graphics2D g2d = (Graphics2D)g;
116 g2d.setPaint(paint);
117 g2d.fillRect(0, 0, getWidth(), getHeight());
118 g2d.drawImage(backgroundLeftImage, 0, 0, null);
119 int x = getWidth() - backgroundRightImage.getWidth(null);
120 int y = 0;
121 g2d.drawImage(backgroundRightImage, x, y, null);
122 }
123
124 public Dimension getPreferredSize()
125 {
126 return new Dimension(super.getPreferredSize().width, preferredHeight);
127 }
128
129 public void revalidateParent()
130 {
131 if (getParent() instanceof JComponent)
132 ((JComponent)getParent()).revalidate();
133 }
134
135 public void changeShrink()
136 {
137 setShrink(!isShrinked());
138 }
139
140 public void setShrink(boolean shrinked)
141 {
142 if (shrinked != this.shrinked)
143 {
144 Container parent = getParent();
145 Dimension size = parent.getPreferredSize();
146 if (shrinked)
147 {
148 normalPreferredWidth = size.width;
149 size = new Dimension(getShrinkedWidth(), size.height);
150 } else
151 {
152 int width = normalPreferredWidth;
153 int height = parent.getPreferredSize().height;
154 size = new Dimension(width, height);
155 }
156 parent.setPreferredSize(size);
157 lbShrinkHandler.setIcon(getShrinkIcon(shrinked));
158 revalidateParent();
159 this.shrinked = shrinked;
160 updateCursor();
161 lbTitle.setVisible(!shrinked);
162 lbResizeHandler.setVisible(!shrinked);
163 }
164 }
165
166 protected ImageIcon getShrinkIcon(boolean shrinked)
167 {
168 if (shrinked)
169 return LEFT_ARROW_ICON;
170 else
171 return RIGHT_ARROW_ICON;
172 }
173
174 private void updateCursor()
175 {
176 if (shrinked)
177 lbResizeHandler.setCursor(Cursor.getDefaultCursor());
178 else
179 lbResizeHandler.setCursor(Cursor.getPredefinedCursor(10));
180 }
181
182 public boolean isShrinked()
183 {
184 return shrinked;
185 }
186
187 public void setTitle(String title)
188 {
189 lbTitle.setText(title);
190 }
191
192 public String getTitle()
193 {
194 return lbTitle.getText();
195 }
196
197 protected int getShrinkedWidth()
198 {
199 return 37;
200 }
201}