1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 package com.sun.star.wizards.form; 24 25 import com.sun.star.awt.ItemEvent; 26 27 import com.sun.star.awt.Size; 28 import com.sun.star.awt.XControl; 29 import com.sun.star.awt.XItemListener; 30 import com.sun.star.awt.XRadioButton; 31 import com.sun.star.lang.EventObject; 32 import com.sun.star.wizards.common.Helper; 33 import com.sun.star.wizards.common.PropertyNames; 34 import com.sun.star.wizards.common.NoValidPathException; 35 import com.sun.star.wizards.document.Control; 36 // import com.sun.star.wizards.ui.ImageList; 37 import com.sun.star.wizards.ui.ButtonList; 38 import com.sun.star.wizards.ui.UIConsts; 39 import com.sun.star.wizards.ui.UnoDialog; 40 41 import javax.swing.DefaultListModel; 42 import javax.swing.ListModel; 43 import javax.swing.event.ListDataEvent; 44 import javax.swing.event.ListDataListener; 45 46 public class UIControlArranger 47 { 48 49 private FormWizard CurUnoDialog; 50 private FormDocument curFormDocument; 51 private short curtabindex; 52 private XRadioButton optAlignLeft; 53 private XRadioButton optAlignRight; 54 private XControl flnLabelPlacement; 55 private String[] HelpTexts = new String[4]; 56 // private String[] sArrangementHeader = new String[2]; 57 // private ArrangeImageList[] m_aArrangeList = new ArrangeImageList[2]; 58 private ArrangeButtonList[] m_aArrangeList = new ArrangeButtonList[2]; 59 private Integer IControlStep; 60 private final int SOBASEIMAGEYPOSITION = 66; 61 private final int SOIMAGELISTHEIGHT = 60; 62 private final String SOALIGNMETHOD = "alignLabelControls"; 63 UIControlArranger(FormWizard _CurUnoDialog, FormDocument _curFormDocument)64 public UIControlArranger(FormWizard _CurUnoDialog, FormDocument _curFormDocument) throws NoValidPathException 65 { 66 this.CurUnoDialog = _CurUnoDialog; 67 this.curFormDocument = _curFormDocument; 68 curtabindex = (short) (FormWizard.SOCONTROL_PAGE * 100); 69 IControlStep = new Integer(FormWizard.SOCONTROL_PAGE); 70 String sLabelPlacment = CurUnoDialog.m_oResource.getResText(UIConsts.RID_FORM + 32); 71 String sAlignLeft = CurUnoDialog.m_oResource.getResText(UIConsts.RID_FORM + 33); 72 String sAlignRight = CurUnoDialog.m_oResource.getResText(UIConsts.RID_FORM + 34); 73 74 // Label "Label Placement" ----------------- 75 flnLabelPlacement = CurUnoDialog.insertFixedLine("lnLabelPlacement", 76 new String[] 77 { 78 PropertyNames.PROPERTY_HEIGHT, PropertyNames.PROPERTY_LABEL, PropertyNames.PROPERTY_POSITION_X, PropertyNames.PROPERTY_POSITION_Y, PropertyNames.PROPERTY_STEP, PropertyNames.PROPERTY_TABINDEX, PropertyNames.PROPERTY_WIDTH 79 }, 80 new Object[] 81 { 82 UIConsts.INTEGERS[8], sLabelPlacment, 97, 25, IControlStep, new Short(curtabindex++), 207 83 }); 84 // Radio Button "Align Left" 85 optAlignLeft = CurUnoDialog.insertRadioButton("optAlignLeft", SOALIGNMETHOD, this, 86 new String[] 87 { 88 PropertyNames.PROPERTY_HEIGHT, PropertyNames.PROPERTY_HELPURL, PropertyNames.PROPERTY_LABEL, PropertyNames.PROPERTY_POSITION_X, PropertyNames.PROPERTY_POSITION_Y, PropertyNames.PROPERTY_STATE, PropertyNames.PROPERTY_STEP, PropertyNames.PROPERTY_TABINDEX, PropertyNames.PROPERTY_WIDTH 89 }, 90 new Object[] 91 { 92 UIConsts.INTEGERS[10], "HID:WIZARDS_HID_DLGFORM_CMDALIGNLEFT", sAlignLeft, 107, 38, new Short((short) 1), IControlStep, new Short(curtabindex++), 171 93 }); 94 // Radio Button "Align Right" 95 optAlignRight = CurUnoDialog.insertRadioButton("optAlignRight", SOALIGNMETHOD, this, 96 new String[] 97 { 98 PropertyNames.PROPERTY_HEIGHT, PropertyNames.PROPERTY_HELPURL, PropertyNames.PROPERTY_LABEL, PropertyNames.PROPERTY_MULTILINE, PropertyNames.PROPERTY_POSITION_X, PropertyNames.PROPERTY_POSITION_Y, PropertyNames.PROPERTY_STEP, PropertyNames.PROPERTY_TABINDEX, PropertyNames.PROPERTY_WIDTH 99 }, 100 new Object[] 101 { 102 UIConsts.INTEGERS[10], "HID:WIZARDS_HID_DLGFORM_CMDALIGNRIGHT", sAlignRight, Boolean.TRUE, 107, 50, IControlStep, new Short(curtabindex++), 171 103 }); 104 105 106 HelpTexts[0] = CurUnoDialog.m_oResource.getResText(UIConsts.RID_FORM + 36); // "Columnar - Labels Left" 107 HelpTexts[1] = CurUnoDialog.m_oResource.getResText(UIConsts.RID_FORM + 37); // "Columnar - Labels of Top" 108 HelpTexts[2] = CurUnoDialog.m_oResource.getResText(UIConsts.RID_FORM + 40); // "As Data Sheet" 109 HelpTexts[3] = CurUnoDialog.m_oResource.getResText(UIConsts.RID_FORM + 39); // In Blocks - Labels Above" 110 111 // flnLabelPlacement = CurUnoDialog.insertFixedLine("lnArrangementHeader1", 112 // new String[] 113 // { 114 // PropertyNames.PROPERTY_HEIGHT, PropertyNames.PROPERTY_LABEL, PropertyNames.PROPERTY_POSITION_X, PropertyNames.PROPERTY_POSITION_Y, PropertyNames.PROPERTY_STEP, PropertyNames.PROPERTY_TABINDEX, PropertyNames.PROPERTY_WIDTH 115 // }, 116 // new Object[] 117 // { 118 // UIConsts.INTEGERS[8], sArrangementHeader[0], 97, 60, IControlStep, new Short(curtabindex++), 207 119 // }); 120 // 121 // boolean bEnabled = true; 122 // int nBtnWidth = 16; 123 // int nXPos = 97; 124 // int nYPos = 70; 125 // CurUnoDialog.insertButton("btnLayout1", "btnLayout1", 126 // new String[] 127 // { 128 // PropertyNames.PROPERTY_ENABLED, 129 // PropertyNames.PROPERTY_HEIGHT, 130 // PropertyNames.PROPERTY_HELPURL, 131 // PropertyNames.PROPERTY_LABEL, 132 // PropertyNames.PROPERTY_POSITION_X, 133 // PropertyNames.PROPERTY_POSITION_Y, 134 // PropertyNames.PROPERTY_STEP, 135 // PropertyNames.PROPERTY_TABINDEX, 136 // PropertyNames.PROPERTY_WIDTH 137 // }, 138 // new Object[] 139 // { 140 // Boolean.valueOf(bEnabled), 141 // 14, 142 ///* TODO: WRONG!*/ "HID:WIZARDS_HID_DLGFORM_CMDALIGNRIGHT", 143 // "1", 144 // new Integer(nXPos + nBtnWidth), 145 // new Integer(nYPos), 146 // IControlStep, 147 // new Short(curtabindex++), 148 // 16 149 // }); 150 151 DefaultListModel imageModel = new DefaultListModel(); 152 for (int i = 0; i < HelpTexts.length; i++) 153 { 154 imageModel.addElement(new Integer(i)); 155 } 156 String sMainArrangementHeader = CurUnoDialog.m_oResource.getResText(UIConsts.RID_FORM + 41); // "Arrangement of the main form" 157 m_aArrangeList[0] = new ArrangeButtonList(0, imageModel, sMainArrangementHeader); 158 159 String sSubArrangementHeader = CurUnoDialog.m_oResource.getResText(UIConsts.RID_FORM + 42); // "Arrangement of the sub form" 160 m_aArrangeList[1] = new ArrangeButtonList(1, imageModel, sSubArrangementHeader); 161 enableAlignControlGroup(false); 162 } 163 getSelectedArrangement(int _formindex)164 public int getSelectedArrangement(int _formindex) 165 { 166 return m_aArrangeList[_formindex].m_aButtonList.getSelected() + 1; 167 } 168 169 private class LayoutRenderer implements ButtonList.IImageRenderer 170 { 171 int Index = 1; 172 getImageUrls(Object listitem)173 public Object[] getImageUrls(Object listitem) 174 { 175 176 int ResId = UIConsts.RID_IMG_FORM + (2 * ((Integer) listitem).intValue()); 177 Index++; 178 return new Integer[] 179 { 180 new Integer(ResId), new Integer(ResId + 1) 181 }; 182 // String s = CurUnoDialog.getWizardImageUrl(ResId, ResId + 1); //((Integer)listitem).intValue(), )sBitmapPath + "/Arrange_" + (((Integer)listitem).intValue() + 1) + ".gif"; 183 // return s; 184 } 185 render(Object listItem)186 public String render(Object listItem) 187 { 188 if (listItem == null) 189 { 190 return PropertyNames.EMPTY_STRING; 191 } 192 return HelpTexts[((Integer) listItem).intValue()]; 193 194 } 195 } 196 enableSubFormImageList(boolean _bdoEnable)197 public void enableSubFormImageList(boolean _bdoEnable) 198 { 199 m_aArrangeList[1].m_aButtonList.setenabled(_bdoEnable); 200 CurUnoDialog.setControlProperty("lnLabelPlacment_2", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(_bdoEnable)); 201 } 202 getAlignValue()203 public short getAlignValue() 204 { 205 return optAlignLeft.getState() ? (short)0 : (short)2; 206 } 207 alignLabelControls()208 public void alignLabelControls() 209 { 210 try 211 { 212 short iAlignValue = getAlignValue(); 213 for (int m = 0; m < curFormDocument.oControlForms.size(); m++) 214 { 215 FormDocument.ControlForm curControlForm = (FormDocument.ControlForm) curFormDocument.oControlForms.get(m); 216 if (curControlForm.getArrangemode() == FormWizard.COLUMNAR_LEFT) 217 { 218 Control[] LabelControls = curControlForm.getLabelControls(); 219 for (int n = 0; n < LabelControls.length; n++) 220 { 221 LabelControls[n].xPropertySet.setPropertyValue(PropertyNames.PROPERTY_ALIGN, new Short(iAlignValue)); 222 } 223 } 224 } 225 } 226 catch (Exception e) 227 { 228 e.printStackTrace(System.out); 229 } 230 } 231 enableAlignControlGroup(boolean _bEnableAlignControlGroup)232 private void enableAlignControlGroup(boolean _bEnableAlignControlGroup) 233 { 234 Helper.setUnoPropertyValue(UnoDialog.getModel(flnLabelPlacement), PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(_bEnableAlignControlGroup)); 235 Helper.setUnoPropertyValue(UnoDialog.getModel(optAlignLeft), PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(_bEnableAlignControlGroup)); 236 Helper.setUnoPropertyValue(UnoDialog.getModel(optAlignRight), PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(_bEnableAlignControlGroup)); 237 } 238 239 // private class ArrangeImageList implements XItemListener 240 // { 241 // 242 // private int formindex; 243 // private ImageList m_aButtonList = null; // new ImageList(); 244 // 245 // public ArrangeImageList(int _formindex, ListModel model, String _sArrangementHeader) 246 // { 247 // formindex = _formindex; 248 // Integer YPos = new Integer(SOBASEIMAGEYPOSITION + _formindex * SOIMAGELISTHEIGHT); 249 // // Label ArrangementHeader ---------------------- 250 // CurUnoDialog.insertFixedLine("lnLabelPlacment_" + (_formindex + 1), 251 // new String[] 252 // { 253 // PropertyNames.PROPERTY_HEIGHT, PropertyNames.PROPERTY_LABEL, PropertyNames.PROPERTY_POSITION_X, PropertyNames.PROPERTY_POSITION_Y, PropertyNames.PROPERTY_STEP, PropertyNames.PROPERTY_TABINDEX, PropertyNames.PROPERTY_WIDTH 254 // }, 255 // new Object[] 256 // { 257 // UIConsts.INTEGERS[8], _sArrangementHeader, 97, YPos, IControlStep, new Short(curtabindex++), 207 258 // }); 259 // 260 // int nypos = SOBASEIMAGEYPOSITION + 12 + _formindex * SOIMAGELISTHEIGHT; 261 // m_aButtonList = new ImageList(); 262 // m_aButtonList.setPos(new Size(107, nypos)); 263 // m_aButtonList.setImageSize(new Size(26, 26)); 264 // m_aButtonList.setCols(4); 265 // m_aButtonList.setRows(1); 266 // m_aButtonList.m_aControlName = "ImageList_" + formindex; 267 // m_aButtonList.setStep(new Short((short) FormWizard.SOCONTROL_PAGE)); 268 // m_aButtonList.setShowButtons(false); 269 // m_aButtonList.setRenderer(new LayoutRenderer()); 270 // m_aButtonList.setSelectionGap(new Size(2, 2)); 271 // m_aButtonList.setGap(new Size(3, 3)); 272 // m_aButtonList.scaleImages = Boolean.FALSE; 273 // m_aButtonList.tabIndex = (int) curtabindex++; 274 // m_aButtonList.helpURL = 34453 + (formindex * 4); 275 // 276 // m_aButtonList.setListModel(model); 277 // m_aButtonList.create(CurUnoDialog); 278 // m_aButtonList.setSelected(FormWizard.SOGRID - 1); 279 // m_aButtonList.addItemListener(this); 280 // } 281 // 282 // public void setToLeftAlign() 283 // { 284 // Helper.setUnoPropertyValue(UnoDialog.getModel(optAlignLeft), PropertyNames.PROPERTY_STATE, new Short((short) 1)); 285 // } 286 // 287 // /* (non-Javadoc) 288 // * @see javax.swing.ListModel#addListDataListener(javax.swing.event.ListDataListener) 289 // */ 290 // public void addListDataListener(ListDataListener arg0) 291 // { 292 // // TODO Auto-generated method stub 293 // } 294 // 295 // public void itemStateChanged(ItemEvent arg0) 296 // { 297 // try 298 // { 299 // if (m_aArrangeList[formindex].m_aButtonList.isenabled()) 300 // { 301 // boolean bEnableAlignControlGroup; 302 // if (curFormDocument.oControlForms.size() == 2) 303 // { 304 // final int nSelected0 = (m_aArrangeList[0].m_aButtonList.getSelected() + 1); 305 // final int nSelected1 = (m_aArrangeList[1].m_aButtonList.getSelected() + 1); 306 // 307 // bEnableAlignControlGroup = ((nSelected0 == FormWizard.SOCOLUMNARLEFT) || 308 // (nSelected1 == FormWizard.SOCOLUMNARLEFT)); 309 // } 310 // else 311 // { 312 // final int nSelected0 = (m_aArrangeList[0].m_aButtonList.getSelected() + 1); 313 // bEnableAlignControlGroup = (nSelected0 == FormWizard.SOCOLUMNARLEFT); 314 // } 315 // enableAlignControlGroup(bEnableAlignControlGroup); 316 // final Short nBorderType = CurUnoDialog.getBorderType(); 317 // final int nSelected = m_aButtonList.getSelected() + 1; 318 // ((FormDocument.ControlForm) curFormDocument.oControlForms.get(formindex)).initialize(nSelected, nBorderType); 319 // } 320 // } 321 // catch (RuntimeException e) 322 // { 323 // e.printStackTrace(); 324 // } 325 // } 326 // 327 // /* (non-Javadoc) 328 // * @see javax.swing.event.ListDataListener#contentsChanged(javax.swing.event.ListDataEvent) 329 // */ 330 // public void contentsChanged(ListDataEvent arg0) 331 // { 332 // // TODO Auto-generated method stub 333 // } 334 // 335 // /* (non-Javadoc) 336 // * @see javax.swing.event.ListDataListener#intervalAdded(javax.swing.event.ListDataEvent) 337 // */ 338 // public void intervalAdded(ListDataEvent arg0) 339 // { 340 // // TODO Auto-generated method stub 341 // } 342 // 343 // /* (non-Javadoc) 344 // * @see javax.swing.event.ListDataListener#intervalRemoved(javax.swing.event.ListDataEvent) 345 // */ 346 // public void intervalRemoved(ListDataEvent arg0) 347 // { 348 // // TODO Auto-generated method stub 349 // } 350 // 351 // /* (non-Javadoc) 352 // * @see com.sun.star.lang.XEventListener#disposing(com.sun.star.lang.EventObject) 353 // */ 354 // public void disposing(EventObject arg0) 355 // { 356 // // TODO Auto-generated method stub 357 // } 358 // } 359 360 private class ArrangeButtonList implements XItemListener 361 { 362 363 private int formindex; 364 private ButtonList m_aButtonList = null; // new ImageList(); 365 ArrangeButtonList(int _formindex, ListModel model, String _sArrangementHeader)366 public ArrangeButtonList(int _formindex, ListModel model, String _sArrangementHeader) 367 { 368 formindex = _formindex; 369 Integer YPos = new Integer(SOBASEIMAGEYPOSITION + _formindex * SOIMAGELISTHEIGHT); 370 // Label ArrangementHeader ---------------------- 371 CurUnoDialog.insertFixedLine("lnLabelPlacment_" + (_formindex + 1), 372 new String[] 373 { 374 PropertyNames.PROPERTY_HEIGHT, 375 PropertyNames.PROPERTY_LABEL, 376 PropertyNames.PROPERTY_POSITION_X, 377 PropertyNames.PROPERTY_POSITION_Y, 378 PropertyNames.PROPERTY_STEP, 379 PropertyNames.PROPERTY_TABINDEX, 380 PropertyNames.PROPERTY_WIDTH 381 }, 382 new Object[] 383 { 384 UIConsts.INTEGERS[8], 385 _sArrangementHeader, 386 97, 387 YPos, 388 IControlStep, 389 new Short(curtabindex++), 390 207 391 }); 392 393 int nypos = SOBASEIMAGEYPOSITION + 12 - 5 + _formindex * SOIMAGELISTHEIGHT; 394 m_aButtonList = new ButtonList(); 395 m_aButtonList.setPos(new Size(107, nypos)); 396 m_aButtonList.setButtonSize(new Size(26 + 6, 26 + 5)); 397 m_aButtonList.setCols(4); 398 m_aButtonList.setRows(1); 399 m_aButtonList.setName( "ButtonList_" + formindex ); 400 m_aButtonList.setStep(Short.valueOf((short) FormWizard.SOCONTROL_PAGE)); 401 m_aButtonList.setShowButtons(false); // shows a button line at ''wrong'' position like |<| 1..4/4 |>| 402 m_aButtonList.setRenderer(new LayoutRenderer()); 403 m_aButtonList.setSelectionGap(new Size(2, 2)); 404 m_aButtonList.setGap(new Size(3, 3)); 405 // m_aButtonList.scaleImages = Boolean.FALSE; 406 m_aButtonList.tabIndex = (int) curtabindex++; 407 m_aButtonList.helpURL = 34453 + (formindex * 4); 408 409 m_aButtonList.setListModel(model); 410 m_aButtonList.create(CurUnoDialog); 411 m_aButtonList.setSelected(FormWizard.AS_GRID - 1); 412 m_aButtonList.addItemListener(this); 413 } 414 setToLeftAlign()415 public void setToLeftAlign() 416 { 417 Helper.setUnoPropertyValue(UnoDialog.getModel(optAlignLeft), PropertyNames.PROPERTY_STATE, new Short((short) 1)); 418 } 419 420 /* (non-Javadoc) 421 * @see javax.swing.ListModel#addListDataListener(javax.swing.event.ListDataListener) 422 */ addListDataListener(ListDataListener arg0)423 public void addListDataListener(ListDataListener arg0) 424 { 425 // TODO Auto-generated method stub 426 } 427 itemStateChanged(ItemEvent arg0)428 public void itemStateChanged(ItemEvent arg0) 429 { 430 try 431 { 432 if (m_aArrangeList[formindex].m_aButtonList.isenabled()) 433 { 434 boolean bEnableAlignControlGroup; 435 if (curFormDocument.oControlForms.size() == 2) 436 { 437 final int nSelected0 = (m_aArrangeList[0].m_aButtonList.getSelected() + 1); 438 final int nSelected1 = (m_aArrangeList[1].m_aButtonList.getSelected() + 1); 439 440 bEnableAlignControlGroup = ((nSelected0 == FormWizard.COLUMNAR_LEFT) || 441 (nSelected1 == FormWizard.COLUMNAR_LEFT)); 442 } 443 else 444 { 445 final int nSelected0 = (m_aArrangeList[0].m_aButtonList.getSelected() + 1); 446 bEnableAlignControlGroup = (nSelected0 == FormWizard.COLUMNAR_LEFT); 447 } 448 enableAlignControlGroup(bEnableAlignControlGroup); 449 final Short nBorderType = CurUnoDialog.getBorderType(); 450 final int nSelected = m_aButtonList.getSelected() + 1; 451 ((FormDocument.ControlForm) curFormDocument.oControlForms.get(formindex)).initialize(nSelected, nBorderType); 452 } 453 } 454 catch (RuntimeException e) 455 { 456 e.printStackTrace(); 457 } 458 } 459 460 /* (non-Javadoc) 461 * @see javax.swing.event.ListDataListener#contentsChanged(javax.swing.event.ListDataEvent) 462 */ contentsChanged(ListDataEvent arg0)463 public void contentsChanged(ListDataEvent arg0) 464 { 465 // TODO Auto-generated method stub 466 } 467 468 /* (non-Javadoc) 469 * @see javax.swing.event.ListDataListener#intervalAdded(javax.swing.event.ListDataEvent) 470 */ intervalAdded(ListDataEvent arg0)471 public void intervalAdded(ListDataEvent arg0) 472 { 473 // TODO Auto-generated method stub 474 } 475 476 /* (non-Javadoc) 477 * @see javax.swing.event.ListDataListener#intervalRemoved(javax.swing.event.ListDataEvent) 478 */ intervalRemoved(ListDataEvent arg0)479 public void intervalRemoved(ListDataEvent arg0) 480 { 481 // TODO Auto-generated method stub 482 } 483 484 /* (non-Javadoc) 485 * @see com.sun.star.lang.XEventListener#disposing(com.sun.star.lang.EventObject) 486 */ disposing(EventObject arg0)487 public void disposing(EventObject arg0) 488 { 489 // TODO Auto-generated method stub 490 } 491 } 492 } 493