1 35 36 39 package demo.swingset; 40 import swingwtx.swing.*; 41 import swingwtx.swing.text.*; 42 import swingwtx.swing.border.*; 43 44 import swingwt.awt.*; 45 import swingwt.awt.event.*; 46 import java.util.*; 47 48 53 54 public class LayoutControlPanel extends JPanel implements SwingConstants { 55 56 private boolean absolutePositions; 57 private DirectionPanel textPosition = null; 58 private DirectionPanel labelAlignment = null; 59 private ButtonDemo demo = null; 60 61 63 LayoutControlPanel(ButtonDemo demo) { 64 this.demo = demo; 65 66 68 setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); 69 setAlignmentX(LEFT_ALIGNMENT); 70 setAlignmentY(TOP_ALIGNMENT); 71 72 JLabel l; 73 74 absolutePositions = true; 106 108 textPosition = new DirectionPanel(true, "E", new TextPositionListener()); 109 labelAlignment = new DirectionPanel(true, "C", new LabelAlignmentListener()); 110 111 for(int i = 0; i < demo.getCurrentControls().size(); i++) { 114 Component c = (Component) demo.getCurrentControls().elementAt(i); 115 setPosition(c, RIGHT, CENTER); 116 setAlignment(c,CENTER,CENTER); 117 } 118 119 l = new JLabel("Text Position:"); 120 add(l); 121 add(textPosition); 122 123 add(Box.createRigidArea(demo.VGAP20)); 124 125 l = new JLabel("Content Alignment:"); 126 add(l); 127 add(labelAlignment); 128 129 add(Box.createGlue()); 130 } 131 132 133 class OrientationChangeListener implements ActionListener { 134 public void actionPerformed( ActionEvent e ) { 135 if( !e.getActionCommand().equals("OrientationChanged") ){ 136 return; 137 } 138 if( absolutePositions ){ 139 return; 140 } 141 142 String currentTextPosition = textPosition.getSelection(); 143 if( currentTextPosition.equals("NW") ) 144 textPosition.setSelection("NE"); 145 else if( currentTextPosition.equals("NE") ) 146 textPosition.setSelection("NW"); 147 else if( currentTextPosition.equals("E") ) 148 textPosition.setSelection("W"); 149 else if( currentTextPosition.equals("W") ) 150 textPosition.setSelection("E"); 151 else if( currentTextPosition.equals("SE") ) 152 textPosition.setSelection("SW"); 153 else if( currentTextPosition.equals("SW") ) 154 textPosition.setSelection("SE"); 155 156 String currentLabelAlignment = labelAlignment.getSelection(); 157 if( currentLabelAlignment.equals("NW") ) 158 labelAlignment.setSelection("NE"); 159 else if( currentLabelAlignment.equals("NE") ) 160 labelAlignment.setSelection("NW"); 161 else if( currentLabelAlignment.equals("E") ) 162 labelAlignment.setSelection("W"); 163 else if( currentLabelAlignment.equals("W") ) 164 labelAlignment.setSelection("E"); 165 else if( currentLabelAlignment.equals("SE") ) 166 labelAlignment.setSelection("SW"); 167 else if( currentLabelAlignment.equals("SW") ) 168 labelAlignment.setSelection("SE"); 169 } 170 } 171 172 class PositioningListener implements ItemListener { 173 174 public void itemStateChanged(ItemEvent e) { 175 JRadioButton rb = (JRadioButton) e.getSource(); 176 if(rb.getText().equals("Absolute") && rb.isSelected()) { 177 absolutePositions = true; 178 } else if(rb.getText().equals("Relative") && rb.isSelected()) { 179 absolutePositions = false; 180 } 181 182 for(int i = 0; i < demo.getCurrentControls().size(); i++) { 183 Component c = (Component) demo.getCurrentControls().elementAt(i); 184 int hPos, vPos, hAlign, vAlign; 185 if( c instanceof AbstractButton ) { 186 hPos = ((AbstractButton)c).getHorizontalTextPosition(); 187 vPos = ((AbstractButton)c).getVerticalTextPosition(); 188 hAlign = ((AbstractButton)c).getHorizontalAlignment(); 189 vAlign = ((AbstractButton)c).getVerticalAlignment(); 190 } else if( c instanceof JLabel ) { 191 hPos = ((JLabel)c).getHorizontalTextPosition(); 192 vPos = ((JLabel)c).getVerticalTextPosition(); 193 hAlign = ((JLabel)c).getHorizontalAlignment(); 194 vAlign = ((JLabel)c).getVerticalAlignment(); 195 } else { 196 continue; 197 } 198 setPosition(c, hPos, vPos); 199 setAlignment(c, hAlign, vAlign); 200 } 201 202 demo.invalidate(); 203 demo.validate(); 204 demo.repaint(); 205 } 206 }; 207 208 209 class TextPositionListener implements ActionListener { 211 public void actionPerformed(ActionEvent e) { 212 JRadioButton rb = (JRadioButton) e.getSource(); 213 if(!rb.isSelected()) { 214 return; 215 } 216 String cmd = rb.getActionCommand(); 217 int hPos, vPos; 218 if(cmd.equals("NW")) { 219 hPos = LEFT; vPos = TOP; 220 } else if(cmd.equals("N")) { 221 hPos = CENTER; vPos = TOP; 222 } else if(cmd.equals("NE")) { 223 hPos = RIGHT; vPos = TOP; 224 } else if(cmd.equals("W")) { 225 hPos = LEFT; vPos = CENTER; 226 } else if(cmd.equals("C")) { 227 hPos = CENTER; vPos = CENTER; 228 } else if(cmd.equals("E")) { 229 hPos = RIGHT; vPos = CENTER; 230 } else if(cmd.equals("SW")) { 231 hPos = LEFT; vPos = BOTTOM; 232 } else if(cmd.equals("S")) { 233 hPos = CENTER; vPos = BOTTOM; 234 } else { 235 hPos = RIGHT; vPos = BOTTOM; 236 } 237 for(int i = 0; i < demo.getCurrentControls().size(); i++) { 238 Component c = (Component) demo.getCurrentControls().elementAt(i); 239 setPosition(c, hPos, vPos); 240 } 241 demo.invalidate(); 242 demo.validate(); 243 demo.repaint(); 244 } 245 }; 246 247 248 class LabelAlignmentListener implements ActionListener { 250 public void actionPerformed(ActionEvent e) { 251 JRadioButton rb = (JRadioButton) e.getSource(); 252 if(!rb.isSelected()) { 253 return; 254 } 255 String cmd = rb.getActionCommand(); 256 int hPos, vPos; 257 if(cmd.equals("NW")) { 258 hPos = LEFT; vPos = TOP; 259 } else if(cmd.equals("N")) { 260 hPos = CENTER; vPos = TOP; 261 } else if(cmd.equals("NE")) { 262 hPos = RIGHT; vPos = TOP; 263 } else if(cmd.equals("W")) { 264 hPos = LEFT; vPos = CENTER; 265 } else if(cmd.equals("C")) { 266 hPos = CENTER; vPos = CENTER; 267 } else if(cmd.equals("E")) { 268 hPos = RIGHT; vPos = CENTER; 269 } else if(cmd.equals("SW")) { 270 hPos = LEFT; vPos = BOTTOM; 271 } else if(cmd.equals("S")) { 272 hPos = CENTER; vPos = BOTTOM; 273 } else { 274 hPos = RIGHT; vPos = BOTTOM; 275 } 276 for(int i = 0; i < demo.getCurrentControls().size(); i++) { 277 Component c = (Component) demo.getCurrentControls().elementAt(i); 278 setAlignment(c,hPos,vPos); 279 c.invalidate(); 280 } 281 demo.invalidate(); 282 demo.validate(); 283 demo.repaint(); 284 } 285 }; 286 287 void setPosition(Component c, int hPos, int vPos) { 289 boolean ltr = true; 290 ltr = c.getComponentOrientation().isLeftToRight(); 291 if( absolutePositions ) { 292 if( hPos == LEADING ) { 293 hPos = ltr ? LEFT : RIGHT; 294 } else if( hPos == TRAILING ) { 295 hPos = ltr ? RIGHT : LEFT; 296 } 297 } else { 298 if( hPos == LEFT ) { 299 hPos = ltr ? LEADING : TRAILING; 300 } else if( hPos == RIGHT ) { 301 hPos = ltr ? TRAILING : LEADING; 302 } 303 } 304 if(c instanceof AbstractButton) { 305 AbstractButton x = (AbstractButton) c; 306 x.setHorizontalTextPosition(hPos); 307 x.setVerticalTextPosition(vPos); 308 } else if(c instanceof JLabel) { 309 JLabel x = (JLabel) c; 310 x.setHorizontalTextPosition(hPos); 311 x.setVerticalTextPosition(vPos); 312 } 313 } 314 315 void setAlignment(Component c, int hPos, int vPos) { 316 boolean ltr = true; 317 ltr = c.getComponentOrientation().isLeftToRight(); 318 if( absolutePositions ) { 319 if( hPos == LEADING ) { 320 hPos = ltr ? LEFT : RIGHT; 321 } else if( hPos == TRAILING ) { 322 hPos = ltr ? RIGHT : LEFT; 323 } 324 } else { 325 if( hPos == LEFT ) { 326 hPos = ltr ? LEADING : TRAILING; 327 } else if( hPos == RIGHT ) { 328 hPos = ltr ? TRAILING : LEADING; 329 } 330 } 331 if(c instanceof AbstractButton) { 332 AbstractButton x = (AbstractButton) c; 333 x.setHorizontalAlignment(hPos); 334 x.setVerticalAlignment(vPos); 335 } else if(c instanceof JLabel) { 336 JLabel x = (JLabel) c; 337 x.setHorizontalAlignment(hPos); 338 x.setVerticalAlignment(vPos); 339 } 340 } 341 } 342 | Popular Tags |