root / branches / v2_0_0_prep / libraries / org.gvsig.symbology / org.gvsig.symbology.swing / org.gvsig.symbology.swing.api / src / main / java / org / gvsig / app / gui / styling / LineProperties.java @ 38608
History | View | Annotate | Download (7.4 KB)
1 | 34294 | fdiaz | package org.gvsig.app.gui.styling; |
---|---|---|---|
2 | |||
3 | import java.awt.BasicStroke; |
||
4 | import java.awt.BorderLayout; |
||
5 | import java.awt.Dimension; |
||
6 | import java.awt.FlowLayout; |
||
7 | import java.awt.event.ActionEvent; |
||
8 | import java.awt.event.ActionListener; |
||
9 | |||
10 | import javax.swing.BorderFactory; |
||
11 | import javax.swing.BoxLayout; |
||
12 | import javax.swing.ButtonGroup; |
||
13 | import javax.swing.JButton; |
||
14 | import javax.swing.JLabel; |
||
15 | import javax.swing.JPanel; |
||
16 | import javax.swing.JRadioButton; |
||
17 | |||
18 | 38608 | jjdelcerro | import org.gvsig.andami.IconThemeHelper; |
19 | 34294 | fdiaz | import org.gvsig.gui.beans.DefaultBean; |
20 | import org.gvsig.gui.beans.swing.JBlank; |
||
21 | import org.gvsig.i18n.Messages; |
||
22 | |||
23 | |||
24 | public class LineProperties extends DefaultBean implements ActionListener { |
||
25 | |||
26 | /**
|
||
27 | *
|
||
28 | */
|
||
29 | private static final long serialVersionUID = 6356385079456043011L; |
||
30 | private JRadioButton joinBevel; |
||
31 | private JRadioButton joinMiter; |
||
32 | private JRadioButton joinRound; |
||
33 | private JRadioButton capBut; |
||
34 | private JRadioButton capRound; |
||
35 | private JRadioButton capSquare; |
||
36 | private PatternEditor pe;
|
||
37 | private JButton clearButton; |
||
38 | private float width; |
||
39 | |||
40 | |||
41 | public LineProperties(float lineWidth) { |
||
42 | super();
|
||
43 | this.width=lineWidth;
|
||
44 | initialize(); |
||
45 | } |
||
46 | |||
47 | private void initialize() { |
||
48 | setName(Messages.getText("line_properties"));
|
||
49 | setLayout(new BorderLayout(10, 10)); |
||
50 | |||
51 | JPanel aux2 = new JPanel(); |
||
52 | JPanel pnlJoin = new JPanel(new FlowLayout(FlowLayout.LEFT, 15, 0)); |
||
53 | |||
54 | |||
55 | pnlJoin.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEmptyBorder(), Messages.getText("join_style")+":")); |
||
56 | |||
57 | JPanel d = new JPanel(); |
||
58 | JPanel toCenter;
|
||
59 | d.setLayout(new BoxLayout(d, BoxLayout.Y_AXIS)); |
||
60 | 38608 | jjdelcerro | joinBevel = new JRadioButton(IconThemeHelper.getImageIcon("line-properties-join-bevel")); |
61 | joinBevel.setSelectedIcon(IconThemeHelper.getImageIcon("line-properties-join-bevel-selected"));
|
||
62 | 34294 | fdiaz | FlowLayout flowCenteredLayout = new FlowLayout(FlowLayout.CENTER, 0, 0); |
63 | toCenter = new JPanel(flowCenteredLayout); |
||
64 | toCenter.add(joinBevel); |
||
65 | d.add(toCenter); |
||
66 | |||
67 | toCenter = new JPanel(flowCenteredLayout); |
||
68 | toCenter.add(new JLabel(Messages.getText("join_bevel"))); |
||
69 | d.add(toCenter); |
||
70 | |||
71 | pnlJoin.add(d); |
||
72 | |||
73 | |||
74 | d = new JPanel(); |
||
75 | d.setLayout(new BoxLayout(d, BoxLayout.Y_AXIS)); |
||
76 | 38608 | jjdelcerro | joinMiter = new JRadioButton(IconThemeHelper.getImageIcon("line-properties-join-miter")); |
77 | joinMiter.setSelectedIcon(IconThemeHelper.getImageIcon("line-properties-join-miter-selected"));
|
||
78 | 34294 | fdiaz | toCenter = new JPanel(flowCenteredLayout); |
79 | toCenter.add(joinMiter); |
||
80 | d.add(toCenter); |
||
81 | |||
82 | toCenter = new JPanel(flowCenteredLayout); |
||
83 | toCenter.add(new JLabel(Messages.getText("join_miter"))); |
||
84 | d.add(toCenter); |
||
85 | pnlJoin.add(d); |
||
86 | |||
87 | |||
88 | 38608 | jjdelcerro | |
89 | 34294 | fdiaz | d = new JPanel(); |
90 | d.setLayout(new BoxLayout(d, BoxLayout.Y_AXIS)); |
||
91 | 38608 | jjdelcerro | joinRound = new JRadioButton(IconThemeHelper.getImageIcon("line-properties-join-round")); |
92 | joinRound.setSelectedIcon(IconThemeHelper.getImageIcon("line-properties-join-round-selected"));
|
||
93 | 34294 | fdiaz | toCenter = new JPanel(flowCenteredLayout); |
94 | toCenter.add(joinRound); |
||
95 | d.add(toCenter); |
||
96 | toCenter = new JPanel(flowCenteredLayout); |
||
97 | toCenter.add(new JLabel(Messages.getText("join_round"))); |
||
98 | d.add(toCenter); |
||
99 | pnlJoin.add(d); |
||
100 | |||
101 | |||
102 | ButtonGroup groupJoin = new ButtonGroup(); |
||
103 | groupJoin.add(joinBevel); |
||
104 | groupJoin.add(joinMiter); |
||
105 | groupJoin.add(joinRound); |
||
106 | aux2.add(pnlJoin); |
||
107 | |||
108 | JPanel aux3 = new JPanel(); |
||
109 | |||
110 | JPanel pnlCap = new JPanel(new FlowLayout(FlowLayout.LEFT, 30, 0)); |
||
111 | pnlCap.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEmptyBorder(), Messages.getText("end_style")+":")); |
||
112 | |||
113 | JPanel c = new JPanel(); |
||
114 | c.setLayout(new BoxLayout(c, BoxLayout.Y_AXIS)); |
||
115 | 38608 | jjdelcerro | capBut = new JRadioButton(IconThemeHelper.getImageIcon("line-properties-cap-butt")); |
116 | capBut.setSelectedIcon(IconThemeHelper.getImageIcon("line-properties-cap-butt-selected"));
|
||
117 | 34294 | fdiaz | toCenter = new JPanel(flowCenteredLayout); |
118 | toCenter.add(capBut); |
||
119 | c.add(toCenter); |
||
120 | toCenter = new JPanel(flowCenteredLayout); |
||
121 | toCenter.add(new JLabel(Messages.getText("cap_butt"))); |
||
122 | c.add(toCenter); |
||
123 | pnlCap.add(c); |
||
124 | |||
125 | JPanel a = new JPanel(); |
||
126 | a.setLayout(new BoxLayout(a, BoxLayout.Y_AXIS)); |
||
127 | 38608 | jjdelcerro | capRound = new JRadioButton(IconThemeHelper.getImageIcon("line-properties-cap-round")); |
128 | capRound.setSelectedIcon(IconThemeHelper.getImageIcon("line-properties-cap-round-selected"));
|
||
129 | 34294 | fdiaz | toCenter = new JPanel(flowCenteredLayout); |
130 | toCenter.add(capRound); |
||
131 | a.add(toCenter); |
||
132 | toCenter = new JPanel(flowCenteredLayout); |
||
133 | toCenter.add(new JLabel(Messages.getText("cap_round"))); |
||
134 | a.add(toCenter); |
||
135 | pnlCap.add(a); |
||
136 | |||
137 | |||
138 | JPanel b = new JPanel(); |
||
139 | b.setLayout(new BoxLayout(b, BoxLayout.Y_AXIS)); |
||
140 | 38608 | jjdelcerro | capSquare = new JRadioButton(IconThemeHelper.getImageIcon("line-properties-cap-square")); |
141 | capSquare.setSelectedIcon(IconThemeHelper.getImageIcon("line-properties-cap-square-selected"));
|
||
142 | 34294 | fdiaz | toCenter = new JPanel(flowCenteredLayout); |
143 | toCenter.add(capSquare); |
||
144 | |||
145 | b.add(toCenter); |
||
146 | toCenter = new JPanel(flowCenteredLayout); |
||
147 | toCenter.add(new JLabel(Messages.getText("cap_square"))); |
||
148 | b.add(toCenter); |
||
149 | pnlCap.add(b); |
||
150 | |||
151 | ButtonGroup groupCap = new ButtonGroup(); |
||
152 | groupCap.add(capBut); |
||
153 | groupCap.add(capRound); |
||
154 | groupCap.add(capSquare); |
||
155 | aux3.add(pnlCap); |
||
156 | |||
157 | JPanel aux4 = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0)); |
||
158 | aux4.add(new JBlank(5,40)); |
||
159 | pe = new PatternEditor();
|
||
160 | pe.setPreferredSize(new Dimension(440,40)); |
||
161 | aux4.add(pe); |
||
162 | aux4.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEmptyBorder(), Messages.getText("fill_pattern")+":")); |
||
163 | |||
164 | JPanel aux5 = new JPanel(new FlowLayout(FlowLayout.LEFT,15, 0)); |
||
165 | clearButton = new JButton(Messages.getText("clear")); |
||
166 | aux5.add(clearButton); |
||
167 | |||
168 | joinBevel.addActionListener(this);
|
||
169 | joinMiter.addActionListener(this);
|
||
170 | joinRound.addActionListener(this);
|
||
171 | capBut.addActionListener(this);
|
||
172 | capRound.addActionListener(this);
|
||
173 | capSquare.addActionListener(this);
|
||
174 | clearButton.addActionListener(clear); |
||
175 | pe.addActionListener(patternChange); |
||
176 | |||
177 | JPanel aux = new JPanel(new FlowLayout(FlowLayout.LEFT)); |
||
178 | aux.add(aux2, BorderLayout.CENTER);
|
||
179 | aux.add(aux3, BorderLayout.CENTER);
|
||
180 | aux.add(aux4, BorderLayout.CENTER);
|
||
181 | aux.add(aux5, BorderLayout.WEST);
|
||
182 | add(aux, BorderLayout.CENTER);
|
||
183 | } |
||
184 | |||
185 | public void actionPerformed(ActionEvent e) { |
||
186 | callValueChanged(getLinePropertiesStyle()); |
||
187 | } |
||
188 | |||
189 | private ActionListener patternChange = new ActionListener() { |
||
190 | public void actionPerformed(ActionEvent e) { |
||
191 | callValueChanged(getLinePropertiesStyle()); |
||
192 | } |
||
193 | }; |
||
194 | |||
195 | private ActionListener clear = new ActionListener() { |
||
196 | public void actionPerformed(ActionEvent e) { |
||
197 | pe.clear_Dash(); |
||
198 | callValueChanged(getLinePropertiesStyle()); |
||
199 | } |
||
200 | }; |
||
201 | |||
202 | |||
203 | |||
204 | public void setLinePropertiesStyle(BasicStroke str) { |
||
205 | |||
206 | if (str == null) { |
||
207 | str = new BasicStroke(); |
||
208 | } |
||
209 | |||
210 | switch(str.getLineJoin()) {
|
||
211 | case 0: |
||
212 | joinMiter.setSelected(true);
|
||
213 | break;
|
||
214 | case 1: |
||
215 | joinRound.setSelected(true);
|
||
216 | break;
|
||
217 | case 2: |
||
218 | joinBevel.setSelected(true);
|
||
219 | break;
|
||
220 | } |
||
221 | |||
222 | switch(str.getEndCap()) {
|
||
223 | case 0: |
||
224 | capBut.setSelected(true);
|
||
225 | break;
|
||
226 | case 1: |
||
227 | capRound.setSelected(true);
|
||
228 | break;
|
||
229 | case 2: |
||
230 | capSquare.setSelected(true);
|
||
231 | break;
|
||
232 | } |
||
233 | |||
234 | pe.setDash(str.getDashArray()); |
||
235 | pe.repaint(); |
||
236 | } |
||
237 | |||
238 | public BasicStroke getLinePropertiesStyle() { |
||
239 | int capType=0, joinType=0; |
||
240 | |||
241 | |||
242 | if (capBut.isSelected()) capType = 0; |
||
243 | else if (capRound.isSelected()) capType = 1; |
||
244 | else if (capSquare.isSelected()) capType = 2; |
||
245 | |||
246 | if (joinMiter.isSelected()) joinType = 0; |
||
247 | else if (joinRound.isSelected()) joinType = 1; |
||
248 | else if (joinBevel.isSelected()) joinType = 2; |
||
249 | |||
250 | float [] dash = pe.getDash(); |
||
251 | |||
252 | BasicStroke str = new BasicStroke(width, capType, joinType, 10, pe.getDash(), 0); |
||
253 | pe.setDash(dash); |
||
254 | return str;
|
||
255 | } |
||
256 | } |