1*a1b4a26bSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*a1b4a26bSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*a1b4a26bSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*a1b4a26bSAndrew Rist * distributed with this work for additional information 6*a1b4a26bSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*a1b4a26bSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*a1b4a26bSAndrew Rist * "License"); you may not use this file except in compliance 9*a1b4a26bSAndrew Rist * with the License. You may obtain a copy of the License at 10*a1b4a26bSAndrew Rist * 11*a1b4a26bSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*a1b4a26bSAndrew Rist * 13*a1b4a26bSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*a1b4a26bSAndrew Rist * software distributed under the License is distributed on an 15*a1b4a26bSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*a1b4a26bSAndrew Rist * KIND, either express or implied. See the License for the 17*a1b4a26bSAndrew Rist * specific language governing permissions and limitations 18*a1b4a26bSAndrew Rist * under the License. 19*a1b4a26bSAndrew Rist * 20*a1b4a26bSAndrew Rist *************************************************************/ 21*a1b4a26bSAndrew Rist 22*a1b4a26bSAndrew Rist 23cdf0e10cSrcweir package com.sun.star.wizards.form; 24cdf0e10cSrcweir 25cdf0e10cSrcweir import java.util.Vector; 26cdf0e10cSrcweir 27cdf0e10cSrcweir import com.sun.star.wizards.text.TextDocument; 28cdf0e10cSrcweir import com.sun.star.awt.Point; 29cdf0e10cSrcweir import com.sun.star.awt.Size; 30cdf0e10cSrcweir import com.sun.star.beans.PropertyValue; 31cdf0e10cSrcweir import com.sun.star.beans.XPropertySet; 32cdf0e10cSrcweir import com.sun.star.container.XNameContainer; 33cdf0e10cSrcweir import com.sun.star.lang.XMultiServiceFactory; 34cdf0e10cSrcweir import com.sun.star.uno.Exception; 35cdf0e10cSrcweir import com.sun.star.uno.UnoRuntime; 36cdf0e10cSrcweir import com.sun.star.wizards.db.*; 37cdf0e10cSrcweir import com.sun.star.wizards.common.*; 38cdf0e10cSrcweir import com.sun.star.wizards.ui.*; 39cdf0e10cSrcweir import com.sun.star.wizards.text.TextStyleHandler; 40cdf0e10cSrcweir import com.sun.star.wizards.text.ViewHandler; 41cdf0e10cSrcweir import com.sun.star.wizards.document.Control; 42cdf0e10cSrcweir import com.sun.star.wizards.document.DatabaseControl; 43cdf0e10cSrcweir import com.sun.star.wizards.document.FormHandler; 44cdf0e10cSrcweir import com.sun.star.wizards.document.GridControl; 45cdf0e10cSrcweir 46cdf0e10cSrcweir public class FormDocument extends TextDocument 47cdf0e10cSrcweir { 48cdf0e10cSrcweir protected Vector oControlForms = new Vector(); 49cdf0e10cSrcweir protected CommandMetaData oMainFormDBMetaData; 50cdf0e10cSrcweir protected CommandMetaData oSubFormDBMetaData; 51cdf0e10cSrcweir protected String[][] LinkFieldNames; 52cdf0e10cSrcweir 53cdf0e10cSrcweir private FormHandler oFormHandler; 54cdf0e10cSrcweir private ViewHandler oViewHandler; 55cdf0e10cSrcweir private TextStyleHandler oTextStyleHandler; 56cdf0e10cSrcweir private XPropertySet xPropPageStyle; 57cdf0e10cSrcweir private final int SOFORMGAP = 2000; 58cdf0e10cSrcweir private boolean bhasSubForm; 59cdf0e10cSrcweir private UIControlArranger curUIControlArranger; 60cdf0e10cSrcweir private StyleApplier curStyleApplier; 61cdf0e10cSrcweir private int nPageWidth; 62cdf0e10cSrcweir private int nPageHeight; 63cdf0e10cSrcweir private int nFormWidth; 64cdf0e10cSrcweir private int nFormHeight; 65cdf0e10cSrcweir private Point aMainFormPoint; 66cdf0e10cSrcweir private final static String SOMAINFORM = "MainForm"; 67cdf0e10cSrcweir private final static String SOSUBFORM = "SubForm"; 68cdf0e10cSrcweir FormDocument(XMultiServiceFactory xMSF)69cdf0e10cSrcweir public FormDocument(XMultiServiceFactory xMSF) 70cdf0e10cSrcweir { 71cdf0e10cSrcweir super(xMSF, new TextDocument.ModuleIdentifier("com.sun.star.sdb.FormDesign"), true); 72cdf0e10cSrcweir try 73cdf0e10cSrcweir { 74cdf0e10cSrcweir oFormHandler = new FormHandler(xMSF, xTextDocument); 75cdf0e10cSrcweir oFormHandler.setDrawObjectsCaptureMode(false); 76cdf0e10cSrcweir oTextStyleHandler = new TextStyleHandler(xMSFDoc, xTextDocument); 77cdf0e10cSrcweir oViewHandler = new ViewHandler(xMSFDoc, xTextDocument); 78cdf0e10cSrcweir oMainFormDBMetaData = new CommandMetaData(xMSF);// , CharLocale); 79cdf0e10cSrcweir oSubFormDBMetaData = new CommandMetaData(xMSF);// , CharLocale); 80cdf0e10cSrcweir ViewHandler oViewHandler = new ViewHandler(xMSF, xTextDocument); 81cdf0e10cSrcweir TextStyleHandler oTextStyleSupplier = new TextStyleHandler(xMSFDoc, xTextDocument); 82cdf0e10cSrcweir Helper.setUnoPropertyValue(xTextDocument, "ApplyFormDesignMode", Boolean.FALSE); 83cdf0e10cSrcweir oViewHandler.setViewSetting("ShowTableBoundaries", Boolean.FALSE); 84cdf0e10cSrcweir oViewHandler.setViewSetting("ShowOnlineLayout", Boolean.TRUE); 85cdf0e10cSrcweir xPropPageStyle = oTextStyleSupplier.getStyleByName("PageStyles", "Standard"); 86cdf0e10cSrcweir Size aSize = oTextStyleHandler.changePageAlignment(xPropPageStyle, true); 87cdf0e10cSrcweir nPageWidth = aSize.Width; 88cdf0e10cSrcweir nPageHeight = aSize.Height; 89cdf0e10cSrcweir } 90cdf0e10cSrcweir catch (Exception e) 91cdf0e10cSrcweir { 92cdf0e10cSrcweir e.printStackTrace(System.out); 93cdf0e10cSrcweir } 94cdf0e10cSrcweir } 95cdf0e10cSrcweir addUIFormController(UIControlArranger _curUIControlArranger)96cdf0e10cSrcweir public void addUIFormController(UIControlArranger _curUIControlArranger) 97cdf0e10cSrcweir { 98cdf0e10cSrcweir this.curUIControlArranger = _curUIControlArranger; 99cdf0e10cSrcweir } 100cdf0e10cSrcweir addStyleApplier(StyleApplier _curStyleApplier)101cdf0e10cSrcweir public void addStyleApplier(StyleApplier _curStyleApplier) 102cdf0e10cSrcweir { 103cdf0e10cSrcweir this.curStyleApplier = _curStyleApplier; 104cdf0e10cSrcweir } 105cdf0e10cSrcweir getDataSourceName()106cdf0e10cSrcweir private String getDataSourceName() 107cdf0e10cSrcweir { 108cdf0e10cSrcweir return this.oMainFormDBMetaData.DataSourceName; 109cdf0e10cSrcweir } 110cdf0e10cSrcweir adjustPageStyle()111cdf0e10cSrcweir private void adjustPageStyle() 112cdf0e10cSrcweir { 113cdf0e10cSrcweir try 114cdf0e10cSrcweir { 115cdf0e10cSrcweir int nMargin; 116cdf0e10cSrcweir int totfieldcount = getMainFieldCount() + getSubFieldCount(); 117cdf0e10cSrcweir if (totfieldcount > 30) 118cdf0e10cSrcweir { 119cdf0e10cSrcweir nMargin = 500; 120cdf0e10cSrcweir } 121cdf0e10cSrcweir else if (totfieldcount > 20) 122cdf0e10cSrcweir { 123cdf0e10cSrcweir nMargin = 750; 124cdf0e10cSrcweir } 125cdf0e10cSrcweir else 126cdf0e10cSrcweir { 127cdf0e10cSrcweir nMargin = 1000; 128cdf0e10cSrcweir } 129cdf0e10cSrcweir xPropPageStyle.setPropertyValue("RightMargin", new Integer(nMargin)); 130cdf0e10cSrcweir xPropPageStyle.setPropertyValue("LeftMargin", new Integer(nMargin)); 131cdf0e10cSrcweir xPropPageStyle.setPropertyValue("TopMargin", new Integer(nMargin)); 132cdf0e10cSrcweir xPropPageStyle.setPropertyValue("BottomMargin", new Integer(nMargin)); 133cdf0e10cSrcweir aMainFormPoint = new Point(nMargin, nMargin); 134cdf0e10cSrcweir nFormWidth = (int) (0.8 * (double) nPageWidth) - 2 * nMargin; 135cdf0e10cSrcweir nFormHeight = (int) (0.65 * (double) nPageHeight) - 2 * nMargin; 136cdf0e10cSrcweir } 137cdf0e10cSrcweir catch (Exception e) 138cdf0e10cSrcweir { 139cdf0e10cSrcweir e.printStackTrace(System.out); 140cdf0e10cSrcweir } 141cdf0e10cSrcweir } 142cdf0e10cSrcweir initialize(boolean _baddParentForm, boolean _bShouldHaveSubForm, boolean _bModifySubForm, Short _NBorderType)143cdf0e10cSrcweir public void initialize(boolean _baddParentForm, boolean _bShouldHaveSubForm, boolean _bModifySubForm, Short _NBorderType) 144cdf0e10cSrcweir { 145cdf0e10cSrcweir bhasSubForm = _bShouldHaveSubForm; 146cdf0e10cSrcweir adjustPageStyle(); 147cdf0e10cSrcweir if (_baddParentForm) 148cdf0e10cSrcweir { 149cdf0e10cSrcweir if (oControlForms.size() == 0) 150cdf0e10cSrcweir { 151cdf0e10cSrcweir final ControlForm aMainControlForm = new ControlForm(this, SOMAINFORM, aMainFormPoint, getMainFormSize(FormWizard.AS_GRID)); 152cdf0e10cSrcweir oControlForms.addElement(aMainControlForm); 153cdf0e10cSrcweir } 154cdf0e10cSrcweir else 155cdf0e10cSrcweir { 156cdf0e10cSrcweir oFormHandler.removeControlsofForm(SOMAINFORM); 157cdf0e10cSrcweir ((ControlForm) oControlForms.get(0)).oFormController = null; 158cdf0e10cSrcweir } 159cdf0e10cSrcweir ((ControlForm) oControlForms.get(0)).initialize(curUIControlArranger.getSelectedArrangement(0), _NBorderType); 160cdf0e10cSrcweir } 161cdf0e10cSrcweir if (_bShouldHaveSubForm) 162cdf0e10cSrcweir { 163cdf0e10cSrcweir if (oControlForms.size() == 1) 164cdf0e10cSrcweir { 165cdf0e10cSrcweir adjustMainFormSize(_NBorderType); 166cdf0e10cSrcweir final ControlForm aSubControlForm = new ControlForm(this, SOSUBFORM, getSubFormPoint(), getSubFormSize()); 167cdf0e10cSrcweir oControlForms.addElement(aSubControlForm); 168cdf0e10cSrcweir /* ((ControlForm) oControlForms.get(1))*/ 169cdf0e10cSrcweir aSubControlForm.initialize(curUIControlArranger.getSelectedArrangement(1), _NBorderType); 170cdf0e10cSrcweir } 171cdf0e10cSrcweir else if (_bModifySubForm) 172cdf0e10cSrcweir { 173cdf0e10cSrcweir if (oControlForms.size() > 1) 174cdf0e10cSrcweir { 175cdf0e10cSrcweir oFormHandler.removeControlsofForm(SOSUBFORM); 176cdf0e10cSrcweir ((ControlForm) oControlForms.get(1)).oFormController = null; 177cdf0e10cSrcweir ((ControlForm) oControlForms.get(1)).initialize(curUIControlArranger.getSelectedArrangement(1), _NBorderType); 178cdf0e10cSrcweir } 179cdf0e10cSrcweir } 180cdf0e10cSrcweir } 181cdf0e10cSrcweir else 182cdf0e10cSrcweir { 183cdf0e10cSrcweir ControlForm aMainForm = (ControlForm) oControlForms.get(0); 184cdf0e10cSrcweir // boolean bHasSubForm = aMainForm.xFormContainer.hasByName(SOSUBFORM); 185cdf0e10cSrcweir // WRONG if (oFormHandler.hasFormByName(SOSUBFORM)) 186cdf0e10cSrcweir if (aMainForm.xFormContainer != null && aMainForm.xFormContainer.hasByName(SOSUBFORM)) 187cdf0e10cSrcweir { 188cdf0e10cSrcweir oFormHandler.removeControlsofForm(SOSUBFORM); 189cdf0e10cSrcweir oFormHandler.removeElement( aMainForm.xFormContainer, SOSUBFORM ); 190cdf0e10cSrcweir ((ControlForm) oControlForms.get(1)).oFormController = null; 191cdf0e10cSrcweir // aMainForm.xFormContainer = null; // .removeFormByName(SOSUBFORM); 192cdf0e10cSrcweir oControlForms.remove(1); 193cdf0e10cSrcweir adjustMainFormSize(_NBorderType); 194cdf0e10cSrcweir } 195cdf0e10cSrcweir } 196cdf0e10cSrcweir } 197cdf0e10cSrcweir getMainFieldCount()198cdf0e10cSrcweir private int getMainFieldCount() 199cdf0e10cSrcweir { 200cdf0e10cSrcweir return oMainFormDBMetaData.getFieldNames().length; 201cdf0e10cSrcweir } getSubFieldCount()202cdf0e10cSrcweir private int getSubFieldCount() 203cdf0e10cSrcweir { 204cdf0e10cSrcweir return oSubFormDBMetaData.getFieldNames().length; 205cdf0e10cSrcweir } 206cdf0e10cSrcweir getMainFormSize(int _curArrangement)207cdf0e10cSrcweir private Size getMainFormSize(int _curArrangement) 208cdf0e10cSrcweir { 209cdf0e10cSrcweir int nMainFormHeight = nFormHeight; 210cdf0e10cSrcweir if (bhasSubForm) 211cdf0e10cSrcweir { 212cdf0e10cSrcweir if (_curArrangement == FormWizard.AS_GRID) 213cdf0e10cSrcweir { 214cdf0e10cSrcweir nMainFormHeight = (int) ((double) (nFormHeight - SOFORMGAP) / 2); 215cdf0e10cSrcweir } 216cdf0e10cSrcweir else 217cdf0e10cSrcweir { 218cdf0e10cSrcweir int nTotalFieldCount = getMainFieldCount() + getSubFieldCount(); 219cdf0e10cSrcweir nMainFormHeight = (int) (((double) getMainFieldCount() / (double) nTotalFieldCount) * ((double) (nFormHeight - SOFORMGAP) / 2)); 220cdf0e10cSrcweir } 221cdf0e10cSrcweir } 222cdf0e10cSrcweir return new Size(nFormWidth, nMainFormHeight); 223cdf0e10cSrcweir } 224cdf0e10cSrcweir getSubFormSize()225cdf0e10cSrcweir private Size getSubFormSize() 226cdf0e10cSrcweir { 227cdf0e10cSrcweir // int nSubFormHeight = (int) ((double)nFormHeight/2) - SOFORMGAP; 228cdf0e10cSrcweir // int nSubFormFieldCount = this.oSubFormDBMetaData.FieldNames.length; 229cdf0e10cSrcweir // int totfieldcount = oMainFormDBMetaData.FieldNames.length + nSubFormFieldCount; 230cdf0e10cSrcweir int nMainFormHeight = ((ControlForm) oControlForms.get(0)).getActualFormHeight(); 231cdf0e10cSrcweir return new Size(nFormWidth, nFormHeight - nMainFormHeight - SOFORMGAP); 232cdf0e10cSrcweir } 233cdf0e10cSrcweir getSubFormPoint()234cdf0e10cSrcweir private Point getSubFormPoint() 235cdf0e10cSrcweir { 236cdf0e10cSrcweir ControlForm curMainControlForm = ((ControlForm) oControlForms.get(0)); 237cdf0e10cSrcweir return new Point(curMainControlForm.aStartPoint.X, 238cdf0e10cSrcweir (curMainControlForm.aStartPoint.Y + curMainControlForm.getFormSize().Height + SOFORMGAP)); 239cdf0e10cSrcweir } 240cdf0e10cSrcweir adjustMainFormSize(Short _NBorderType)241cdf0e10cSrcweir private void adjustMainFormSize(Short _NBorderType) 242cdf0e10cSrcweir { 243cdf0e10cSrcweir ControlForm oMainControlForm = (ControlForm) oControlForms.get(0); 244cdf0e10cSrcweir oMainControlForm.setFormSize(getMainFormSize(oMainControlForm.curArrangement)); 245cdf0e10cSrcweir if (oMainControlForm.curArrangement == FormWizard.AS_GRID) 246cdf0e10cSrcweir { 247cdf0e10cSrcweir oMainControlForm.oGridControl.setSize(oMainControlForm.getFormSize()); 248cdf0e10cSrcweir } 249cdf0e10cSrcweir else 250cdf0e10cSrcweir { 251cdf0e10cSrcweir oMainControlForm.oFormController.positionControls(oMainControlForm.curArrangement, 252cdf0e10cSrcweir oMainControlForm.aStartPoint, 253cdf0e10cSrcweir oMainControlForm.getFormSize(), 254cdf0e10cSrcweir curUIControlArranger.getAlignValue(), _NBorderType); 255cdf0e10cSrcweir } 256cdf0e10cSrcweir } 257cdf0e10cSrcweir adjustSubFormPosSize(Short _NBorderType)258cdf0e10cSrcweir private void adjustSubFormPosSize(Short _NBorderType) 259cdf0e10cSrcweir { 260cdf0e10cSrcweir ControlForm oMainControlForm = (ControlForm) oControlForms.get(0); 261cdf0e10cSrcweir ControlForm oSubControlForm = (ControlForm) oControlForms.get(1); 262cdf0e10cSrcweir oSubControlForm.setFormSize(new Size(nFormWidth, nFormHeight - oMainControlForm.getFormSize().Height)); 263cdf0e10cSrcweir if (oSubControlForm.curArrangement == FormWizard.AS_GRID) 264cdf0e10cSrcweir { 265cdf0e10cSrcweir Point aPoint = oSubControlForm.oGridControl.getPosition(); 266cdf0e10cSrcweir int idiffheight = oSubControlForm.getEntryPointY() - oMainControlForm.getActualFormHeight() - oMainControlForm.aStartPoint.Y - SOFORMGAP; 267cdf0e10cSrcweir oSubControlForm.setStartPoint(new Point(aPoint.X, (aPoint.Y - idiffheight))); 268cdf0e10cSrcweir oSubControlForm.oGridControl.setPosition(oSubControlForm.aStartPoint); 269cdf0e10cSrcweir oSubControlForm.oGridControl.setSize(getSubFormSize()); 270cdf0e10cSrcweir } 271cdf0e10cSrcweir else 272cdf0e10cSrcweir { 273cdf0e10cSrcweir // oSubControlForm.oFormController.adjustYPositions(_idiffheight); 274cdf0e10cSrcweir oSubControlForm.setStartPoint(new Point(oSubControlForm.aStartPoint.X, oMainControlForm.getActualFormHeight() + oMainControlForm.aStartPoint.Y + SOFORMGAP)); 275cdf0e10cSrcweir oSubControlForm.oFormController.positionControls(oSubControlForm.curArrangement, oSubControlForm.aStartPoint, oSubControlForm.getAvailableFormSize(), curUIControlArranger.getAlignValue(), _NBorderType); 276cdf0e10cSrcweir } 277cdf0e10cSrcweir } 278cdf0e10cSrcweir getControlFormByName(String _sname)279cdf0e10cSrcweir public ControlForm getControlFormByName(String _sname) 280cdf0e10cSrcweir { 281cdf0e10cSrcweir for (int i = 0; i < oControlForms.size(); i++) 282cdf0e10cSrcweir { 283cdf0e10cSrcweir ControlForm curControlForm = ((ControlForm) oControlForms.get(i)); 284cdf0e10cSrcweir if (curControlForm.Name.equals(_sname)) 285cdf0e10cSrcweir { 286cdf0e10cSrcweir return curControlForm; 287cdf0e10cSrcweir } 288cdf0e10cSrcweir } 289cdf0e10cSrcweir return null; 290cdf0e10cSrcweir } 291cdf0e10cSrcweir getControlForms()292cdf0e10cSrcweir public ControlForm[] getControlForms() 293cdf0e10cSrcweir { 294cdf0e10cSrcweir ControlForm[] aResult = new ControlForm[oControlForms.size()]; 295cdf0e10cSrcweir oControlForms.toArray( aResult ); 296cdf0e10cSrcweir return aResult; 297cdf0e10cSrcweir } 298cdf0e10cSrcweir finalizeForms(DataEntrySetter _curDataEntrySetter, FieldLinker _curFieldLinker, FormConfiguration _curFormConfiguration)299cdf0e10cSrcweir public boolean finalizeForms(DataEntrySetter _curDataEntrySetter, FieldLinker _curFieldLinker, FormConfiguration _curFormConfiguration) 300cdf0e10cSrcweir { 301cdf0e10cSrcweir try 302cdf0e10cSrcweir { 303cdf0e10cSrcweir this.xTextDocument.lockControllers(); 304cdf0e10cSrcweir PropertyValue[] aFormProperties = _curDataEntrySetter.getFormProperties(); 305cdf0e10cSrcweir ControlForm oMasterControlForm = getControlFormByName(SOMAINFORM); 306cdf0e10cSrcweir oMasterControlForm.setFormProperties(aFormProperties, oMainFormDBMetaData); 307cdf0e10cSrcweir oMasterControlForm.finalizeControls(); 308cdf0e10cSrcweir if (oMasterControlForm.xFormContainer.hasByName(SOSUBFORM)) 309cdf0e10cSrcweir { 310cdf0e10cSrcweir ControlForm oSubControlForm = getControlFormByName(SOSUBFORM); 311cdf0e10cSrcweir oSubControlForm.setFormProperties(aFormProperties, oSubFormDBMetaData); 312cdf0e10cSrcweir String sRefTableName = _curFormConfiguration.getreferencedTableName(); 313cdf0e10cSrcweir if (sRefTableName.equals(PropertyNames.EMPTY_STRING)) 314cdf0e10cSrcweir { 315cdf0e10cSrcweir LinkFieldNames = _curFieldLinker.getLinkFieldNames(); 316cdf0e10cSrcweir } 317cdf0e10cSrcweir else 318cdf0e10cSrcweir { 319cdf0e10cSrcweir LinkFieldNames = _curFieldLinker.getLinkFieldNames(_curFormConfiguration.getRelationController(), sRefTableName); 320cdf0e10cSrcweir } 321cdf0e10cSrcweir if (LinkFieldNames != null) 322cdf0e10cSrcweir { 323cdf0e10cSrcweir if (LinkFieldNames.length > 0) 324cdf0e10cSrcweir { 325cdf0e10cSrcweir oSubControlForm.xPropertySet.setPropertyValue("DetailFields", LinkFieldNames[0]); 326cdf0e10cSrcweir oSubControlForm.xPropertySet.setPropertyValue("MasterFields", LinkFieldNames[1]); 327cdf0e10cSrcweir oSubControlForm.finalizeControls(); 328cdf0e10cSrcweir return true; 329cdf0e10cSrcweir } 330cdf0e10cSrcweir } 331cdf0e10cSrcweir return false; 332cdf0e10cSrcweir } 333cdf0e10cSrcweir return true; 334cdf0e10cSrcweir } 335cdf0e10cSrcweir catch (Exception e) 336cdf0e10cSrcweir { 337cdf0e10cSrcweir e.printStackTrace(System.out); 338cdf0e10cSrcweir return false; 339cdf0e10cSrcweir } 340cdf0e10cSrcweir finally 341cdf0e10cSrcweir { 342cdf0e10cSrcweir unlockallControllers(); 343cdf0e10cSrcweir } 344cdf0e10cSrcweir } 345cdf0e10cSrcweir 346cdf0e10cSrcweir public class ControlForm 347cdf0e10cSrcweir { 348cdf0e10cSrcweir 349cdf0e10cSrcweir XNameContainer xFormContainer; 350cdf0e10cSrcweir GridControl oGridControl; 351cdf0e10cSrcweir FormControlArranger oFormController; 352cdf0e10cSrcweir int curArrangement; 353cdf0e10cSrcweir FormDocument oFormDocument; 354cdf0e10cSrcweir String Name; 355cdf0e10cSrcweir Point aStartPoint; 356cdf0e10cSrcweir private Size aFormSize; 357cdf0e10cSrcweir CommandMetaData oDBMetaData; 358cdf0e10cSrcweir XPropertySet xPropertySet; 359cdf0e10cSrcweir ControlForm(FormDocument _oFormDocument, String _sname, Point _astartPoint, Size _aFormSize)360cdf0e10cSrcweir public ControlForm(FormDocument _oFormDocument, String _sname, Point _astartPoint, Size _aFormSize) 361cdf0e10cSrcweir { 362cdf0e10cSrcweir aStartPoint = _astartPoint; 363cdf0e10cSrcweir aFormSize = _aFormSize; 364cdf0e10cSrcweir oFormDocument = _oFormDocument; 365cdf0e10cSrcweir Name = _sname; 366cdf0e10cSrcweir if (_sname.equals(SOSUBFORM)) 367cdf0e10cSrcweir { 368cdf0e10cSrcweir ControlForm oMainControlForm = ((ControlForm) oControlForms.get(0)); 369cdf0e10cSrcweir xFormContainer = oFormHandler.insertFormbyName(_sname, oMainControlForm.xFormContainer); 370cdf0e10cSrcweir } 371cdf0e10cSrcweir else 372cdf0e10cSrcweir { 373cdf0e10cSrcweir xFormContainer = oFormHandler.insertFormbyName(_sname); 374cdf0e10cSrcweir } 375cdf0e10cSrcweir xPropertySet = UnoRuntime.queryInterface(XPropertySet.class, xFormContainer); 376cdf0e10cSrcweir if (_sname.equals(SOMAINFORM)) 377cdf0e10cSrcweir { 378cdf0e10cSrcweir oDBMetaData = oFormDocument.oMainFormDBMetaData; 379cdf0e10cSrcweir } 380cdf0e10cSrcweir else 381cdf0e10cSrcweir { 382cdf0e10cSrcweir oDBMetaData = oFormDocument.oSubFormDBMetaData; 383cdf0e10cSrcweir } 384cdf0e10cSrcweir } 385cdf0e10cSrcweir initialize(int _curArrangement, Short _NBorderType)386cdf0e10cSrcweir public void initialize(int _curArrangement, Short _NBorderType) 387cdf0e10cSrcweir { 388cdf0e10cSrcweir boolean adaptControlStyles = false; 389cdf0e10cSrcweir xTextDocument.lockControllers(); 390cdf0e10cSrcweir curArrangement = _curArrangement; 391cdf0e10cSrcweir if (oGridControl != null) 392cdf0e10cSrcweir { 393cdf0e10cSrcweir oFormHandler.xDrawPage.remove(oGridControl.xShape); 394cdf0e10cSrcweir oGridControl.xComponent.dispose(); 395cdf0e10cSrcweir oGridControl = null; 396cdf0e10cSrcweir } 397cdf0e10cSrcweir if (oFormController == null) 398cdf0e10cSrcweir { 399cdf0e10cSrcweir oFormController = new FormControlArranger(oFormHandler, xFormContainer, oDBMetaData, xProgressBar, aStartPoint, aFormSize); 400cdf0e10cSrcweir } 401cdf0e10cSrcweir else 402cdf0e10cSrcweir { 403cdf0e10cSrcweir if (curArrangement == FormWizard.AS_GRID) 404cdf0e10cSrcweir { 405cdf0e10cSrcweir oFormHandler.moveShapesToNirwana(getLabelControls()); 406cdf0e10cSrcweir oFormHandler.moveShapesToNirwana(getDatabaseControls()); 407cdf0e10cSrcweir } 408cdf0e10cSrcweir } 409cdf0e10cSrcweir if (curArrangement == FormWizard.AS_GRID) 410cdf0e10cSrcweir { 411cdf0e10cSrcweir insertGridControl(_NBorderType); 412cdf0e10cSrcweir adaptControlStyles = true; 413cdf0e10cSrcweir } 414cdf0e10cSrcweir else 415cdf0e10cSrcweir { 416cdf0e10cSrcweir adaptControlStyles = !oFormController.areControlsexisting(); 417cdf0e10cSrcweir oFormController.positionControls(_curArrangement, aStartPoint, getAvailableFormSize(), curUIControlArranger.getAlignValue(), _NBorderType); 418cdf0e10cSrcweir } 419cdf0e10cSrcweir if (adaptControlStyles) 420cdf0e10cSrcweir { 421cdf0e10cSrcweir curStyleApplier.applyStyle(false, true); 422cdf0e10cSrcweir } 423cdf0e10cSrcweir if ((Name.equals(SOMAINFORM)) && (oControlForms.size() > 1)) 424cdf0e10cSrcweir { 425cdf0e10cSrcweir ControlForm curSubControlForm = ((ControlForm) oControlForms.get(1)); 426cdf0e10cSrcweir if (curSubControlForm != null) 427cdf0e10cSrcweir { 428cdf0e10cSrcweir adjustSubFormPosSize(_NBorderType); 429cdf0e10cSrcweir } 430cdf0e10cSrcweir } 431cdf0e10cSrcweir setFormSize(new Size(aFormSize.Width, getActualFormHeight())); 432cdf0e10cSrcweir unlockallControllers(); 433cdf0e10cSrcweir } 434cdf0e10cSrcweir getLabelControls()435cdf0e10cSrcweir public Control[] getLabelControls() 436cdf0e10cSrcweir { 437cdf0e10cSrcweir if (oFormController != null) 438cdf0e10cSrcweir { 439cdf0e10cSrcweir return oFormController.getLabelControlList(); 440cdf0e10cSrcweir } 441cdf0e10cSrcweir else 442cdf0e10cSrcweir { 443cdf0e10cSrcweir return null; 444cdf0e10cSrcweir } 445cdf0e10cSrcweir } 446cdf0e10cSrcweir getFormSize()447cdf0e10cSrcweir public Size getFormSize() 448cdf0e10cSrcweir { 449cdf0e10cSrcweir return aFormSize; 450cdf0e10cSrcweir } 451cdf0e10cSrcweir getAvailableFormSize()452cdf0e10cSrcweir private Size getAvailableFormSize() 453cdf0e10cSrcweir { 454cdf0e10cSrcweir if (this.Name.equals(SOMAINFORM)) 455cdf0e10cSrcweir { 456cdf0e10cSrcweir setFormSize(getMainFormSize(curArrangement)); 457cdf0e10cSrcweir } 458cdf0e10cSrcweir else 459cdf0e10cSrcweir { 460cdf0e10cSrcweir setFormSize(getSubFormSize()); 461cdf0e10cSrcweir } 462cdf0e10cSrcweir return aFormSize; 463cdf0e10cSrcweir } 464cdf0e10cSrcweir setFormSize(Size _aSize)465cdf0e10cSrcweir public void setFormSize(Size _aSize) 466cdf0e10cSrcweir { 467cdf0e10cSrcweir aFormSize = _aSize; 468cdf0e10cSrcweir oFormController.setFormSize(aFormSize); 469cdf0e10cSrcweir } 470cdf0e10cSrcweir setStartPoint(Point _aPoint)471cdf0e10cSrcweir private void setStartPoint(Point _aPoint) 472cdf0e10cSrcweir { 473cdf0e10cSrcweir aStartPoint = _aPoint; 474cdf0e10cSrcweir if (oFormController != null) 475cdf0e10cSrcweir { 476cdf0e10cSrcweir oFormController.setStartPoint(_aPoint); 477cdf0e10cSrcweir } 478cdf0e10cSrcweir } 479cdf0e10cSrcweir getActualFormHeight()480cdf0e10cSrcweir private int getActualFormHeight() 481cdf0e10cSrcweir { 482cdf0e10cSrcweir if (curArrangement == FormWizard.AS_GRID) 483cdf0e10cSrcweir { 484cdf0e10cSrcweir return oGridControl.xShape.getSize().Height; 485cdf0e10cSrcweir } 486cdf0e10cSrcweir else 487cdf0e10cSrcweir { 488cdf0e10cSrcweir return oFormController.getFormHeight(); 489cdf0e10cSrcweir } 490cdf0e10cSrcweir } 491cdf0e10cSrcweir getEntryPointY()492cdf0e10cSrcweir private int getEntryPointY() 493cdf0e10cSrcweir { 494cdf0e10cSrcweir if (curArrangement == FormWizard.AS_GRID) 495cdf0e10cSrcweir { 496cdf0e10cSrcweir return oGridControl.xShape.getPosition().Y; 497cdf0e10cSrcweir } 498cdf0e10cSrcweir else 499cdf0e10cSrcweir { 500cdf0e10cSrcweir return oFormController.getEntryPointY(); 501cdf0e10cSrcweir } 502cdf0e10cSrcweir } 503cdf0e10cSrcweir setFormProperties(PropertyValue[] _aPropertySetList, CommandMetaData _oDBMetaData)504cdf0e10cSrcweir private void setFormProperties(PropertyValue[] _aPropertySetList, CommandMetaData _oDBMetaData) 505cdf0e10cSrcweir { 506cdf0e10cSrcweir try 507cdf0e10cSrcweir { 508cdf0e10cSrcweir xPropertySet.setPropertyValue("DataSourceName", getDataSourceName()); 509cdf0e10cSrcweir xPropertySet.setPropertyValue(PropertyNames.COMMAND, _oDBMetaData.getCommandName()); 510cdf0e10cSrcweir xPropertySet.setPropertyValue(PropertyNames.COMMAND_TYPE, new Integer(_oDBMetaData.getCommandType())); 511cdf0e10cSrcweir for (int i = 0; i < _aPropertySetList.length; i++) 512cdf0e10cSrcweir { 513cdf0e10cSrcweir xPropertySet.setPropertyValue(_aPropertySetList[i].Name, _aPropertySetList[i].Value); 514cdf0e10cSrcweir } 515cdf0e10cSrcweir } 516cdf0e10cSrcweir catch (Exception e) 517cdf0e10cSrcweir { 518cdf0e10cSrcweir e.printStackTrace(System.out); 519cdf0e10cSrcweir } 520cdf0e10cSrcweir } 521cdf0e10cSrcweir getDatabaseControls()522cdf0e10cSrcweir public DatabaseControl[] getDatabaseControls() 523cdf0e10cSrcweir { 524cdf0e10cSrcweir if (oFormController != null) 525cdf0e10cSrcweir { 526cdf0e10cSrcweir return oFormController.DBControlList; 527cdf0e10cSrcweir } 528cdf0e10cSrcweir else 529cdf0e10cSrcweir { 530cdf0e10cSrcweir return null; 531cdf0e10cSrcweir } 532cdf0e10cSrcweir } 533cdf0e10cSrcweir getGridControl()534cdf0e10cSrcweir public GridControl getGridControl() 535cdf0e10cSrcweir { 536cdf0e10cSrcweir return oGridControl; 537cdf0e10cSrcweir } 538cdf0e10cSrcweir getArrangemode()539cdf0e10cSrcweir public int getArrangemode() 540cdf0e10cSrcweir { 541cdf0e10cSrcweir return curArrangement; 542cdf0e10cSrcweir } 543cdf0e10cSrcweir insertGridControl(Short _NBorderType)544cdf0e10cSrcweir private void insertGridControl(Short _NBorderType) 545cdf0e10cSrcweir { 546cdf0e10cSrcweir try 547cdf0e10cSrcweir { 548cdf0e10cSrcweir curArrangement = FormWizard.AS_GRID; 549cdf0e10cSrcweir if (Name.equals(SOMAINFORM)) 550cdf0e10cSrcweir { 551cdf0e10cSrcweir oGridControl = new GridControl(xMSF, Name + "_Grid", oFormHandler, xFormContainer, oDBMetaData.FieldColumns, aStartPoint, getMainFormSize(FormWizard.AS_GRID)); 552cdf0e10cSrcweir } 553cdf0e10cSrcweir else 554cdf0e10cSrcweir { 555cdf0e10cSrcweir oGridControl = new GridControl(xMSF, Name + "_Grid", oFormHandler, xFormContainer, oDBMetaData.FieldColumns, aStartPoint, getSubFormSize()); 556cdf0e10cSrcweir } 557cdf0e10cSrcweir oGridControl.xPropertySet.setPropertyValue(PropertyNames.PROPERTY_BORDER, _NBorderType); 558cdf0e10cSrcweir } 559cdf0e10cSrcweir catch (Exception e) 560cdf0e10cSrcweir { 561cdf0e10cSrcweir e.printStackTrace(System.out); 562cdf0e10cSrcweir } 563cdf0e10cSrcweir } 564cdf0e10cSrcweir finalizeControls()565cdf0e10cSrcweir public void finalizeControls() 566cdf0e10cSrcweir { 567cdf0e10cSrcweir Control[] oLabelControls = getLabelControls(); 568cdf0e10cSrcweir Control[] oDBControls = getDatabaseControls(); 569cdf0e10cSrcweir if (oLabelControls != null) 570cdf0e10cSrcweir { 571cdf0e10cSrcweir for (int i = 0; i < getLabelControls().length; i++) 572cdf0e10cSrcweir { 573cdf0e10cSrcweir if (curArrangement == FormWizard.AS_GRID) 574cdf0e10cSrcweir { 575cdf0e10cSrcweir if ((oLabelControls[i] != null) && (oDBControls[i] != null)) 576cdf0e10cSrcweir { 577cdf0e10cSrcweir oFormHandler.removeShape(oLabelControls[i].xShape); 578cdf0e10cSrcweir oFormHandler.removeShape(oDBControls[i].xShape); 579cdf0e10cSrcweir } 580cdf0e10cSrcweir } 581cdf0e10cSrcweir else 582cdf0e10cSrcweir { 583cdf0e10cSrcweir oFormHandler.groupShapesTogether(xMSF, oLabelControls[i].xShape, oDBControls[i].xShape); 584cdf0e10cSrcweir } 585cdf0e10cSrcweir 586cdf0e10cSrcweir } 587cdf0e10cSrcweir } 588cdf0e10cSrcweir } 589cdf0e10cSrcweir } 590cdf0e10cSrcweir } 591