Package com.sun.star.wizards.report

Source Code of com.sun.star.wizards.report.ReportWizard

/*************************************************************************
*
*  $RCSfile: ReportWizard.java,v $
*
*  $Revision: 1.54.28.1 $
*
*  last change: $Author: vg $ $Date: 2004/01/28 11:32:21 $
*
*  The Contents of this file are made available subject to the terms of
*  either of the following licenses
*
*         - GNU Lesser General Public License Version 2.1
*         - Sun Industry Standards Source License Version 1.1
*
*  Sun Microsystems Inc., October, 2000
*
*  GNU Lesser General Public License Version 2.1
*  =============================================
*  Copyright 2000 by Sun Microsystems, Inc.
*  901 San Antonio Road, Palo Alto, CA 94303, USA
*
*  This library is free software; you can redistribute it and/or
*  modify it under the terms of the GNU Lesser General Public
*  License version 2.1, as published by the Free Software Foundation.
*
*  This library is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
*  Lesser General Public License for more details.
*
*  You should have received a copy of the GNU Lesser General Public
*  License along with this library; if not, write to the Free Software
*  Foundation, Inc., 59 Temple Place, Suite 330, Boston,
*  MA  02111-1307  USA
*
*
*  Sun Industry Standards Source License Version 1.1
*  =================================================
*  The contents of this file are subject to the Sun Industry Standards
*  Source License Version 1.1 (the "License"); You may not use this file
*  except in compliance with the License. You may obtain a copy of the
*  License at http://www.openoffice.org/license.html.
*
*  Software provided under this License is provided on an "AS IS" basis,
*  WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
*  WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
*  MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
*  See the License for the specific provisions governing your rights and
*  obligations concerning the Software.
*
*  The Initial Developer of the Original Code is: Sun Microsystems, Inc.
*
*  Copyright: 2000 by Sun Microsystems, Inc.
*
*  All Rights Reserved.
*
*  Contributor(s): _______________________________________
*
*/

package com.sun.star.wizards.report;
import com.sun.star.wizards.common.TextDocument;
import com.sun.star.wizards.common.UNODialogs;
import com.sun.star.wizards.common.Tools;

import com.sun.star.registry.XRegistryKey;

import com.sun.star.container.XIndexAccess;
import com.sun.star.container.XElementAccess;
import com.sun.star.container.XNameAccess;
import com.sun.star.container.XEnumerationAccess;
import com.sun.star.container.XEnumeration;
import com.sun.star.container.XNameContainer;

import com.sun.star.beans.PropertyValue;
import com.sun.star.beans.XPropertySet;
import com.sun.star.beans.XMultiPropertySet;
import com.sun.star.beans.PropertyAttribute;

import com.sun.star.comp.servicemanager.ServiceManager;
import com.sun.star.comp.loader.FactoryHelper;
import com.sun.star.connection.XConnector;
import com.sun.star.connection.XConnection;
import com.sun.star.sdb.XCompletedConnection;
import com.sun.star.sdbcx.XColumnsSupplier;
import com.sun.star.sdbc.*;
import com.sun.star.sdb.*;
import com.sun.star.sdbcx.XTablesSupplier;
import com.sun.star.sdbcx.XColumnsSupplier;
import com.sun.star.bridge.XUnoUrlResolver;
import com.sun.star.uno.XInterface;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.uno.XComponentContext;
import com.sun.star.uno.XNamingService;
import com.sun.star.uno.AnyConverter;
import com.sun.star.uno.Any;
import com.sun.star.uno.Type;
import com.sun.star.ucb.XSimpleFileAccess;

import com.sun.star.sheet.*;
import com.sun.star.document.*;
import com.sun.star.table.*;
import com.sun.star.text.*;
import com.sun.star.text.XTextRange;
import com.sun.star.text.XTextDocument;
import com.sun.star.task.XInteractionHandler;
import com.sun.star.util.XNumberFormats;
import com.sun.star.util.XNumberFormatsSupplier;
import com.sun.star.util.NumberFormat;

import com.sun.star.lang.Locale;
import com.sun.star.lang.*;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.lang.XMultiComponentFactory;
import com.sun.star.lang.XComponent;
import com.sun.star.lang.EventObject;
import com.sun.star.lang.XServiceInfo;
import com.sun.star.lang.XSingleServiceFactory;
import com.sun.star.lang.XTypeProvider;

import com.sun.star.script.XInvocation;
import com.sun.star.awt.XListBox;
import com.sun.star.awt.XRadioButton;
import com.sun.star.awt.XControl;
import com.sun.star.awt.XControlModel;
import com.sun.star.awt.XControlContainer;
import com.sun.star.awt.XWindow;
import com.sun.star.awt.XToolkit;
import com.sun.star.awt.XDialog;
import com.sun.star.awt.XButton;
import com.sun.star.awt.XFixedText;
import com.sun.star.awt.XScrollBar;
import com.sun.star.awt.ItemEvent;
import com.sun.star.awt.ActionEvent;
import com.sun.star.awt.AdjustmentEvent;
import com.sun.star.awt.XActionListener;
import com.sun.star.awt.XItemListener;
import com.sun.star.awt.XMouseListener;
import com.sun.star.awt.XFocusListener;
import com.sun.star.awt.XTextComponent;
import com.sun.star.awt.XAdjustmentListener;

import com.sun.star.awt.MouseEvent;
import com.sun.star.frame.XDesktop;
import com.sun.star.frame.XComponentLoader;
import com.sun.star.frame.XFramesSupplier;
import com.sun.star.frame.XFrame;
import com.sun.star.frame.XModel;
import com.sun.star.frame.XDispatch;
import com.sun.star.frame.XDispatchProvider;
import com.sun.star.util.XURLTransformer;

import java.io.*;
import java.util.*;

public class ReportWizard {
    XMultiServiceFactory xMSF;
    UNODialogs CurUNODialog;
    UNODialogs CurUNOProgressDialog;
    final String SOREPORTFORMNAME = "ReportSource";
    final int MAXSORTCRITERIA = 3;
   
    final int SOCMDCANCEL = 1;
    final int SOCMDHELP = 2;
    final int SOCMDBACK = 3;
    final int SOCMDGOON = 4;
    final int SOCMDMOVESEL = 5;
    final int SOCMDMOVEALL = 6;
    final int SOCMDREMOVESEL = 7;
    final int SOCMDREMOVEALL = 8;
    final int SOFLDSLST =  9;
    final int SODBLST =  10;
    final int SOTBLLST =  11;
    final int SOSELFLDSLST =  12;
    final int SOGROUPLST = 13;
   
    final int SOFIRSTSORTLST = 14;
    final int SOSECSORTLST = 15;
    final int SOTHIRDSORTLST = 16;
    final int SOFOURTHSORTLST = 17;
    final int[] SOSORTLST = new int[]{SOFIRSTSORTLST, SOSECSORTLST, SOTHIRDSORTLST, SOFOURTHSORTLST};
   
    final int SOFIRSTSORTASCOPT = 18;
    final int SOSECSORTASCOPT = 19;
    final int SOTHIRDSORTASCOPT = 20;
    final int SOFOURTHSORTASCOPT = 21;
   
    final int SOFIRSTSORTDESCOPT = 22;
    final int SOSECSORTDESCOPT = 23;
    final int SOTHIRDSORTDESCOPT = 24;
    final int SOFOURTHSORTDESCOPT = 25;
   
    final int[] SOSORTASCENDOPT = new int[] {SOFIRSTSORTASCOPT, SOSECSORTASCOPT, SOTHIRDSORTASCOPT, SOFOURTHSORTASCOPT};
    final int[] SOSORTDESCENDOPT = new int[] {SOFIRSTSORTDESCOPT, SOSECSORTDESCOPT, SOTHIRDSORTDESCOPT, SOFOURTHSORTDESCOPT};
   
    final int SOCMDGROUPIN = 26;
    final int SOCMDGROUPOUT = 27;
    final int SOTXTTITLE = 28;
    final int SOCONTENTLST = 29;
   
    final int SOOPTLANDSCAPE = 30;
    final int SOOPTPORTRAIT = 31;
    final int SOLAYOUTLST = 32;
    final int SOSELGROUPLST = 33;
    //     final int SOOPTSAVEASTEMPLATE = 34;
    //     final int SOOPTSAVEASDOCUMENT = 35;
   
    final int SOOPTSAVEASTEMPLATE = 40;
    final int SOOPTEDITTEMPLATE = 41;
    final int SOOPTUSEDOCUMENT = 42;
    final int SOOPTSAVEASDOCUMENT = 43;
   
    final int SOCMDFIRSTPATHSELECT = 44;
    final int SOCMDSECPATHSELECT = 45;
    final int SOTXTFIRSTSAVEPATH = 46;
    final int SOTXTSECSAVEPATH = 47;
    final int SOTXTCOLTITLE = 48;
    final int SOTITLESCROLLBAR = 49;
   
    final int[] SOCMDSELECTPATH = new int[] {SOCMDFIRSTPATHSELECT, SOCMDSECPATHSELECT};
    final int[] SOTXTSAVEPATH = new int[] {SOTXTFIRSTSAVEPATH, SOTXTSECSAVEPATH};

    final int SONULLPAGE = 0;
    final int SOMAINPAGE = 1;
    final int SOTITLEPAGE = 2;
    final int SOGROUPPAGE = 3;
    final int SOSORTPAGE = 4;
    final int SOTEMPLATEPAGE = 5;
    final int SOSTOREPAGE = 6;   
   
    short CurTabIndex;
    int MaxSortIndex = -1;
    int TextFieldCount;
    int PageAddCount;
    String[] sDatabaseList;
    static String[] TableNames;
    static String[] QueryNames;
    static String[] sSortHeader = new String[4];
    static String[] sSortAscend = new String[4];
    static String[] sSortDescend = new String[4];
    static short[] bOldSortValues = new short[4];
    XTextComponent xTitleTextBox;
    XTextComponent[] xSaveTextBox = new XTextComponent[2];
   
    XListBox xDBListBox;
    XListBox xTableListBox;
    XListBox xFieldsListBox;
    XListBox xSelFieldsListBox;
    XListBox xContentListBox;
    XListBox xSelGroupListBox;
    Object chkTemplate;
    XListBox[] xSortListBox = new XListBox[4];
    XListBox xGroupListBox;
    XListBox xLayoutListBox;
    Object lblHeaderText;
    XNameAccess xTableNames;
    XNameAccess xQueryNames;
   
    XTablesSupplier xDBTables;
    Object oDBTable;
    int[][] WidthList;
    int UITextFieldCount = 7;
    boolean bEnableBinaryOptionGroup;
    boolean bcreateTemplate;
    boolean buseTemplate;
    boolean bcreateLink;
    boolean[] baskbeforeOverwrite = new boolean[2];
    boolean[] bmodifiedbySaveAsDialog = new boolean[2];
    boolean bfinalaskbeforeOverwrite;
//    boolean[] bCommandIsSelected = new boolean[1];
//    boolean[] bDataSourceIsSelected = new boolean[1];
    int iOldContentPos;
    int iOldLayoutPos;
    int ScrollBarValue;
    int CurSortItemIndex;
    String[] OriginalList = new String[]{""};
    static XDesktop xDesktop;
    ReportDocument CurReportDocument;
    ReportPaths CurReportPaths;
    String DefaultName;
    String OldDefaultName;
    java.util.Vector GroupFieldVector;
    String TemplatePath;
    String[] SavePath = new String[2];
   
    static String sMsgWizardName;
    static String scmdReady;
    static String scmdCancel;
    static String scmdBack;
    static String scmdHelp;
    static String scmdGoOn;
    static String slblDatabases;
    static String slblTables;
    static String slblFields;
    static String slblSelFields;
    static String sShowBinaryFields;
    static String slblDataStructure;
    static String slblPageLayout;
    static String sOrganizeFields;
    static String sNoSorting;
    static String sSortCriteriaisduplicate;
    static String sOrientationHeader;
    static String sOrientVertical;
    static String sOrientHorizontal;
    static String sSaveAsTemplate;
    static String sReportTitle;
    static String sSaveAsDocument;
    static String sSaveAs;
    static String sUseTemplate;
    static String sEditTemplate;
    static String sCreateLink;
    static String sCreateLinkAutomatically;
    static String sGroupings;
    static String[] WizardHeaderText = new String[6];
    static String[] WizardTitle = new String[6];
    static String sWriterFilterName;
    static String StorePath = "";
    static String slstDatabasesDefaultText;
    static String slstTablesDefaultText;
    static String AccessTextMoveSelected;
    static String AccessTextRemoveSelected;
    static String AccessTextMoveAll;
    static String AccessTextRemoveAll;
    static String sMsgErrorOccured;
    static String sMsgNoDatabaseAvailable;
    static String sMsgCommandCouldNotbeOpened;
    static String sMsgSavingImpossible;
    static String sMsgLinkCreationImpossible;
    static String sMsgNoTableInDatabase;
    static String sMsgNoConnection;
    // Progress display relevant Strings
    static String sProgressTitle;
    static String sStop;
    static String sProgressDBConnection;
    static String sProgressDataImport;
    static String sProgressBaseCurRecord;
    static String sProgressCurRecord;
    static String sReportFormNotExisting;
    static String slblColumnTitles;
    static String slblColumnNames;
    static String sMsgEndAutopilot;
    static String sMsgTableNotExisting;
    static String sMsgNoDBConnection;
    static String sMsgConnectionImpossible;
    static String sMsgNoConnectionforDataimport;
    static String sMsgQueryCreationImpossible;
    static String sMsgHiddenControlMissing;
    static String sMsgFilePathInvalid;
    static String sMsgCommonReportError;
    static String sMsgInvalidTextField;
    static String[] ReportMessages = new String[4];
    static String sBlindTextNote;
    boolean bCloseDocument;
   
    public ReportWizard() {
    }
   
    private void getSelectedDBMetaData(XMultiServiceFactory xMSF){
  try{
      boolean bGetConnection = false;
      short DBIndex = xDBListBox.getSelectedItemPos();
      if (DBIndex > -1){
    CurReportDocument.CurDBMetaData.DataSourceName = CurReportDocument.CurDBMetaData.DataSourceNames[DBIndex];
    if (CurReportDocument.CurDBMetaData.bConnectionOvergiven != true)
        bGetConnection = CurReportDocument.CurDBMetaData.getConnection(sMsgNoConnection, sMsgConnectionImpossible);
    else
        bGetConnection = true;
//    bCommandIsSelected[0] = false;
    fillupCommandListBox(CurReportDocument.CurDBMetaData, false);
      }
      if (bGetConnection == false)
    CurUNODialog.assignPropertyToDialogControl("lstDatabases", "SelectedItems", new short[]{});
      CurUNODialog.assignPropertyToDialogControl("cmdGoOn", "Enabled", new Boolean(false));
  }
  catch(Tools.TerminateWizardException exception){}
  catch(Exception exception) {
      exception.printStackTrace(System.out);
  }}
   
   
    // returns the selected entry index in the commandListbox
    private short fillupCommandListBox(DBMetaData CurDBMetaData, boolean bpreselectCommand) throws Tools.TerminateWizardException{
  short iSelPos = 0;
  short[] iSelArray = new short[0];
  boolean bgetFields = false;
  String[] ContentList = new String[0];
  boolean bgetConnection = CurDBMetaData.DBConnection != null;
  if (bpreselectCommand){
      ContentList = CurReportDocument.CurDBMetaData.getDBMetaData();
      iSelPos = (short) CurDBMetaData.getCommandTypeIndex();
      if (iSelPos > -1){
    bgetFields = true;
    iSelArray = new short[] {iSelPos};
      }
  }
  else{
      CurUNODialog.emptyFieldsListBoxes(xFieldsListBox, xSelFieldsListBox);
      ContentList = UNODialogs.combineListboxList(slstTablesDefaultText, CurReportDocument.CurDBMetaData.getDBMetaData());
      iSelArray = new short[]{(short) iSelPos};
  }
  CurUNODialog.assignPropertyToDialogControl("lstTables", "StringItemList", ContentList);
  CurUNODialog.assignPropertyToDialogControl("lstTables", "Enabled", new Boolean(bgetConnection));
  CurUNODialog.assignPropertyToDialogControl("lblTables", "Enabled", new Boolean(bgetConnection));
  CurUNODialog.assignPropertyToDialogControl("lstTables", "SelectedItems", iSelArray);
  if (bgetFields)
      fillUpFieldsListbox(CurDBMetaData, true);
  return iSelPos;
    }
   
   
    public int addFieldNamestoListBox(UNODialogs CurUNODialog){
  int FieldCount = 0;
  try{
      String[] LocList = (String[]) CurUNODialog.getPropertyOfDialogControl("lstTables", "StringItemList");
      if (LocList.length > 0){
    CurReportDocument.CurDBMetaData.getSpecificFieldNames(WidthList);
    FieldCount = CurReportDocument.CurDBMetaData.AllFieldNames.length;
    if (FieldCount > 0){
        bEnableBinaryOptionGroup = false;
        xFieldsListBox.removeItems((short) 0, xFieldsListBox.getItemCount());
        xFieldsListBox.addItems(CurReportDocument.CurDBMetaData.AllFieldNames, (short) 0);
        CurUNODialog.initializeListboxProcedures(xFieldsListBox, xSelFieldsListBox, OriginalList);
    }
      }
  }
  catch(Exception exception){
      exception.printStackTrace(System.out);
      FieldCount = 0;
  }
  return FieldCount;
    }
   
   
    private void fillUpFieldsListbox(DBMetaData CurDBMetaData, boolean bgetCommandType){
  try{
      //As the peer of the control might not yet exist we have to query the model for the SelectedItems
      short[] SelItems = (short[]) CurUNODialog.getPropertyOfDialogControl("lstTables", "SelectedItems");
      String[] sLocList = (String[]) CurUNODialog.getPropertyOfDialogControl("lstTables", "StringItemList");
      if (SelItems.length > 0) {
    int CurCommandType;
    int SelIndex = SelItems[0];
    if (SelIndex > -1){
        SelIndex = SelIndex ;
        if (xTableListBox.getItem((short) SelIndex).equals(slstTablesDefaultText)== false){
      if ((xTableListBox.getItem((short) 0).equals(slstTablesDefaultText) == true) && (SelIndex > 0))
          SelIndex = SelIndex -1;
      if (bgetCommandType == true){
          CurCommandType = CurDBMetaData.CommandTypes[SelIndex];
          if (CurCommandType == com.sun.star.sdb.CommandType.QUERY){
        int QueryIndex = SelIndex - TableNames.length;
        CurDBMetaData.MainCommandName = QueryNames[QueryIndex];
        oDBTable = CurDBMetaData.xQueryNames.getByName(CurDBMetaData.MainCommandName);
        CurDBMetaData.Command = AnyConverter.toString(Tools.getUNOPropertyValue(oDBTable, "Command"));
          }
          else{
        CurDBMetaData.MainCommandName = TableNames[SelIndex];
        oDBTable = CurDBMetaData.xTableNames.getByName(CurDBMetaData.MainCommandName);
          }
          CurDBMetaData.CommandType = CurCommandType;
          CurDBMetaData.OldMainCommandName = CurDBMetaData.MainCommandName;
          Tools.setUNOPropertyValue(CurReportDocument.xDocInfo, "Title", CurDBMetaData.MainCommandName);
          CurUNODialog.assignPropertyToDialogControl("txtTitle", "Text", CurReportDocument.CurDBMetaData.MainCommandName);
      }
      XColumnsSupplier xTableCols = (XColumnsSupplier) UnoRuntime.queryInterface(XColumnsSupplier.class, oDBTable);
      CurDBMetaData.xColumns = (XNameAccess) UnoRuntime.queryInterface(XNameAccess.class, xTableCols.getColumns());
      if (addFieldNamestoListBox(CurUNODialog) > 0){
          CurUNODialog.toggleListboxControls(xFieldsListBox, xSelFieldsListBox, new Boolean(true));
          return;
      }
        }
    }
      }
      CurUNODialog.emptyFieldsListBoxes(xFieldsListBox, xSelFieldsListBox);
  }
  catch(Exception exception){
      exception.printStackTrace(System.out);
  }}
   
   
    class TextListenerImpl implements com.sun.star.awt.XTextListener{
  public void textChanged(com.sun.star.awt.TextEvent EventObject){
      int iPos;
      try{
    int iKey  =  CurUNODialog.getControlKey(EventObject.Source, CurUNODialog.ControlList);
    switch (iKey) {
        case SOTXTFIRSTSAVEPATH:
      SavePath[0] = xSaveTextBox[0].getText();
      CurUNODialog.assignPropertyToDialogControl("cmdGoOn", "Enabled", new Boolean(SavePath[0].length() > 0));
      baskbeforeOverwrite[0] = (bmodifiedbySaveAsDialog[0] == false);
      bmodifiedbySaveAsDialog[0] = false;
      break;
     
        case SOTXTSECSAVEPATH:
      SavePath[1] = xSaveTextBox[1].getText();
      CurUNODialog.assignPropertyToDialogControl("cmdGoOn", "Enabled", new Boolean(SavePath[1].length() > 0));
      baskbeforeOverwrite[1] = (bmodifiedbySaveAsDialog[1] == false);
      bmodifiedbySaveAsDialog[1] = false;
      break;
        case SOTXTTITLE:
      String TitleName = xTitleTextBox.getText();
      CurReportDocument.updateReportTitle(xTitleTextBox);
      break;
        default:
      break;
    }
      }
      catch(Exception exception){
    exception.printStackTrace(System.out);
      }}
 
  public void disposing(com.sun.star.lang.EventObject EventObject) {
  }
    }
   
   
    class MouseListenerImpl implements com.sun.star.awt.XMouseListener{
 
  public void disposing(com.sun.star.lang.EventObject eventObject) {
  }
 
  public void mouseEntered(com.sun.star.awt.MouseEvent mouseEvent) {
  }
 
  public void mouseExited(com.sun.star.awt.MouseEvent mouseEvent) {
  }
 
 
  public void mousePressed(com.sun.star.awt.MouseEvent mouseEvent) {
      int iKey  =  CurUNODialog.getControlKey(mouseEvent.Source, CurUNODialog.ControlList);
      switch (iKey) {
    case SODBLST:
      CurUNODialog.deletefirstListboxEntry("lstDatabases", slstDatabasesDefaultText); //, bDataSourceIsSelected);
        break;
    case SOTBLLST:
        CurUNODialog.deletefirstListboxEntry("lstTables", slstTablesDefaultText);//, bCommandIsSelected);
        break;
    default:
        break;
      }
  }
 
  public void mouseReleased(com.sun.star.awt.MouseEvent mouseEvent) {
  }
    }
   
   
    class ItemListenerImpl implements com.sun.star.awt.XItemListener{
 
  public void itemStateChanged(ItemEvent EventObject){
      int iPos;
      Tools.setUNOPropertyValue(CurUNODialog.xDialogModel, "Enabled", new Boolean(false));
      CurReportDocument.xTextDocument.lockControllers();
     
      int iKey  =  CurUNODialog.getControlKey(EventObject.Source, CurUNODialog.ControlList);
      switch (iKey) {
    case SODBLST:
//        if (bDataSourceIsSelected[0] == true){
      CurUNODialog.deletefirstListboxEntry("lstDatabases", slstDatabasesDefaultText); //, bDataSourceIsSelected);
      getSelectedDBMetaData(xMSF);
//        }
        break;
       
    case SOTBLLST:
//               if (bCommandIsSelected[0] == true)
      CurUNODialog.deletefirstListboxEntry("lstTables", slstTablesDefaultText); //, bCommandIsSelected);
        fillUpFieldsListbox(CurReportDocument.CurDBMetaData, true);
//        bCommandIsSelected[0] = true;
        break;
   
    case SOFLDSLST:
        CurUNODialog.FormSetMoveRights(xFieldsListBox, xSelFieldsListBox, (short)-1, (short)-1);
        break;
       
    case SOSELFLDSLST:
        CurUNODialog.FormSetMoveRights(xFieldsListBox, xSelFieldsListBox, (short)-1, (short)-1);
        break;
               
    case SOGROUPLST:
        boolean bDoEnable = ((xGroupListBox.getSelectedItems().length > 0) && (GroupFieldVector.size() < 4));
        CurUNODialog.assignPropertyToDialogControl("cmdGroupOut", "Enabled", new Boolean(bDoEnable));
        break;
       
    case SOSELGROUPLST:
        toggleRemoveGroupButton();
        break;
       
    case SOFIRSTSORTLST:
        enableNextSortListBox(0);
        break;
       
    case SOSECSORTLST:
        enableNextSortListBox(1);
        break;
       
    case SOTHIRDSORTLST:
        enableNextSortListBox(2);
        break;
       
    case SOFOURTHSORTLST:
        enableNextSortListBox(3);
        break;
       
    case SOCONTENTLST:
        iPos = xContentListBox.getSelectedItemPos();
        if (iPos != iOldContentPos){
      iOldContentPos = iPos;
      CurReportDocument.swapContentTemplate(CurReportPaths.ContentFiles[1][iPos]);
        }
        break;
       
    case SOLAYOUTLST:
        iPos = xLayoutListBox.getSelectedItemPos();
        if (iPos != iOldLayoutPos){
      iOldLayoutPos = iPos;
      CurReportDocument.swapLayoutTemplate(CurReportPaths.LayoutFiles[1][iPos], CurReportPaths.BitmapPath, CurUNODialog);
        }
        break;
       
    default:
        break;
      }
      CurReportDocument.unlockallControllers();
      Tools.setUNOPropertyValue(CurUNODialog.xDialogModel, "Enabled", new Boolean(true));
  }
 
  public void disposing(EventObject eventObject) {
  }
    }
   
   
    class AdjustmentListenerImpl implements com.sun.star.awt.XAdjustmentListener{
 
  public void disposing(EventObject eventObject) {
  }
 
  public void adjustmentValueChanged(AdjustmentEvent AdjustEvent){
      try{
    scrollControls();
      }
      catch( Exception exception ){
    exception.printStackTrace(System.out);
      }
  }
    }
   
    class ActionListenerImpl implements com.sun.star.awt.XActionListener{
 
  public void disposing(EventObject eventObject){
  }
  public void actionPerformed(ActionEvent actionEvent){
      boolean bGoOn = true;
      try{
    int iKey  =  CurUNODialog.getControlKey(actionEvent.Source, CurUNODialog.ControlList);
    Tools.setUNOPropertyValue(CurUNODialog.xDialogModel, "Enabled", new Boolean(false));
    CurReportDocument.xTextDocument.lockControllers();
    switch (iKey){
        case SOFLDSLST:
      CurUNODialog.MoveSelectedListBox(xFieldsListBox, xSelFieldsListBox);
      break;
     
        case SOSELFLDSLST:
      CurUNODialog.MoveOrderedSelectedListBox(xFieldsListBox, xSelFieldsListBox, CurReportDocument.CurDBMetaData.AllFieldNames, false);
      break;
     
        case SOCMDMOVESEL:
      CurUNODialog.MoveSelectedListBox(xFieldsListBox, xSelFieldsListBox);
      break;
     
        case SOCMDMOVEALL:
      CurUNODialog.FormMoveAll(xFieldsListBox, xSelFieldsListBox, CurReportDocument.CurDBMetaData.AllFieldNames);
      break;
     
        case SOCMDREMOVESEL:
      CurUNODialog.MoveOrderedSelectedListBox(xFieldsListBox, xSelFieldsListBox, CurReportDocument.CurDBMetaData.AllFieldNames, false);
      break;
     
        case SOCMDREMOVEALL:
      CurUNODialog.MoveOrderedSelectedListBox(xFieldsListBox, xSelFieldsListBox, CurReportDocument.CurDBMetaData.AllFieldNames, true);
      break;
     
        case SOCMDGOON:
      gotoNextStep();
      break;
     
        case SOCMDBACK:
      gotoPrevStep();
      break;
     
        case SOGROUPLST:
      CurReportDocument.addGroupNametoDocument(xGroupListBox, xSelGroupListBox, GroupFieldVector, CurReportPaths.ReportPath);
      break;
     
        case SOSELGROUPLST:
      CurReportDocument.removeGroupName(xGroupListBox, xSelGroupListBox, GroupFieldVector);
      break;
     
        case SOCMDGROUPOUT:
      bGoOn = CurReportDocument.addGroupNametoDocument(xGroupListBox, xSelGroupListBox, GroupFieldVector, CurReportPaths.ReportPath);
      break;
     
        case SOCMDGROUPIN:
      CurReportDocument.removeGroupName(xGroupListBox, xSelGroupListBox, GroupFieldVector);
      break;
     
        case SOOPTLANDSCAPE:
      CurReportDocument.changePageOrientation(CurReportPaths.BitmapPath, CurUNODialog, true);
      break;
     
        case SOOPTPORTRAIT:
      CurReportDocument.changePageOrientation(CurReportPaths.BitmapPath, CurUNODialog, false);
      break;
     
        case SOOPTSAVEASTEMPLATE:
      toggleSaveControls();
      break;
     
        case SOOPTSAVEASDOCUMENT:
      toggleSaveControls();
      break;
     
        case SOCMDFIRSTPATHSELECT:
      insertStorePathToTextBox();
      break;
     
        case SOCMDSECPATHSELECT:
      insertStorePathToTextBox();
      break;
     
        case SOTITLESCROLLBAR:
      scrollControls();
      break;
     
        default:
      //               System.err.println( exception);
      break;
    }
    if (bGoOn == false){
        CurUNODialog.xDialog.endExecute();
    }
      }
      catch( Exception exception ){
    exception.printStackTrace(System.out);
      }
      CurReportDocument.unlockallControllers();
      Tools.setUNOPropertyValue(CurUNODialog.xDialogModel, "Enabled", new Boolean(true));
  }
    }
   
   
    public void gotoNextStep(){
  try{
      boolean bgoon = true;
      PageAddCount = 1;
      int PageCount = 6;
      int iPage = AnyConverter.toInt(Tools.getUNOPropertyValue(CurUNODialog.xDialogModel, "Step"));
      switch (iPage){
    case SOMAINPAGE:
        updateSecondStep(CurReportDocument.CurDBMetaData, iPage+1);
        break;
    case SOTITLEPAGE:
        scrollTextFieldInfo(ScrollBarValue);
        updateThirdStep(CurReportDocument.CurDBMetaData);
        break;
    case SOGROUPPAGE:
        if (updateFourthStep(CurReportDocument.CurDBMetaData))
      break;
    case SOSORTPAGE:
        bgoon = setupSortcriteria();
        if (bgoon){
      CurReportDocument.CurDBMetaData.RecordFieldNames = CurReportDocument.CurDBMetaData.setRecordFieldNames();
      CurReportDocument.CurDBMetaData.combineSelectStatement(CurReportDocument.CurDBMetaData.MainCommandName);
      //TODO: A message box should pop up when a single sorting criteria has been selected more than once
      CurReportDocument.xTextDocument.lockControllers();
      CurReportDocument.setupRecordSection(CurReportPaths.ReportPath + "/cnt-default.stw");
      updateFifthStep();
        }
        break;
       
    case SOTEMPLATEPAGE:
        CurUNODialog.assignPropertyToDialogControl("cmdGoOn", "Label", scmdReady);
        CurUNODialog.setFocus("optCreateReportTemplate");
        assignDocumentPathstoTextControl(xMSF);
        break;
    case SOSTOREPAGE:
        bcreateTemplate = ((ShortCurUNODialog.getPropertyOfDialogControl("optCreateReportTemplate", "State")).shortValue() == (short) 1;
        boolean bDocisStored;
        StorePath = getStorePath();
        if (Tools.PathisValid(xMSF, StorePath, sMsgFilePathInvalid, bfinalaskbeforeOverwrite)){
      if (bcreateTemplate == true){
          CurReportDocument.createReportForm(SOREPORTFORMNAME);
          Tools.attachEventCall(CurReportDocument.xTextDocument, "OnNew", "Script", "service:com.sun.star.wizards.report.CallReportWizard?fill");
          buseTemplate = ((Short) CurUNODialog.getPropertyOfDialogControl("optUseTemplate", "State")).shortValue() == (short) 1;
          CurReportDocument.breakLinkofTextSections();
          bDocisStored = Tools.storeDocument(xMSF, CurReportDocument.xComponent , StorePath, "writer_StarOffice_XML_Writer_Template",
          buseTemplate, sMsgSavingImpossible + (char)13 + sMsgLinkCreationImpossible);
          if (bDocisStored == true)
        CurReportDocument.CurDBMetaData.createDBLink(CurReportDocument.CurDBMetaData.DataSource, StorePath);
      }
      else{
          bcreateLink = ((Short) CurUNODialog.getPropertyOfDialogControl("chkcreateLink", "State")).shortValue() == (short) 1;
      }
      bgoon = false;
      bCloseDocument = false;
      CurUNODialog.xDialog.endExecute();
        }
        else{
      if (bcreateTemplate)
          CurUNODialog.setFocus("txtSavePath_1");
      else
          CurUNODialog.setFocus("txtSavePath_2");
        }
        break;
    default:
        break;
      }
      CurReportDocument.unlockallControllers();
      if (bgoon == true){
    if (iPage < PageCount){
        Tools.setUNOPropertyValues(CurUNODialog.xDialogModel, new String[]{"Step", "Title"}, new Object[]{ new Integer(iPage + PageAddCount), WizardTitle[iPage]});
        CurUNODialog.assignPropertyToDialogControl("lblDialogHeader", "Label", WizardHeaderText[iPage]);
    }
      }
  }
  catch( Exception exception ){
      exception.printStackTrace(System.out);
  }}
   
   
    public void gotoPrevStep(){
  try{
      int iPage = AnyConverter.toInt(Tools.getUNOPropertyValue(CurUNODialog.xDialogModel, "Step"));
      switch (iPage){
    case SOTITLEPAGE:
            scrollTextFieldInfo(ScrollBarValue);
        CurReportDocument.CurDBMetaData.OldFieldTitles = Tools.copyStringArray(CurReportDocument.CurDBMetaData.FieldTitles);
        break;
       
    case SOGROUPPAGE:
        getGroupFieldNames(CurReportDocument.CurDBMetaData);
        break;
       
    case SOSORTPAGE:
//        CurReportDocument.CurDBMetaData.OldSortFieldNames = Tools.copyStringArray(CurReportDocument.CurDBMetaData.SortFieldNames);
        break;
       
    case SOTEMPLATEPAGE:
        CurReportDocument.removeTextSectionbyName("RecordSection");
        CurReportDocument.removeTextTablebyName("Tbl_RecordSection");
        break;
       
    case SOSTOREPAGE:
        CurUNODialog.assignPropertyToDialogControl("cmdGoOn", "Label", scmdGoOn);
        CurUNODialog.assignPropertyToDialogControl("cmdGoOn", "Enabled", new Boolean(true));
        break;
       
    default:
        break;
      }
      CurUNODialog.assignPropertyToDialogControl("cmdBack", "Enabled", new Boolean(iPage > 2));
      if (iPage > 1)
    Tools.setUNOPropertyValues(CurUNODialog.xDialogModel, new String[]{"Step", "Title"}, new Object[]{ new Integer(iPage - 1), WizardTitle[iPage-2]});
    CurUNODialog.assignPropertyToDialogControl("lblDialogHeader", "Label", WizardHeaderText[iPage-2]);
  }
  catch( Exception exception ){
      exception.printStackTrace(System.out);
  }}
   
   
    public void toggleRemoveGroupButton(){
  try{
      boolean bDoEnable = xSelGroupListBox.getSelectedItems().length > 0;
      CurUNODialog.assignPropertyToDialogControl("cmdGroupIn", "Enabled", new Boolean(true));
  }
  catch( Exception exception ){
      exception.printStackTrace(System.out);
  }}
   
   
/*    public void setupSortList(){
  String CurFieldName;
  String CurFieldTitle;
  short iCurState;     
  int a = 0;
  CurReportDocument.CurDBMetaData.SortFieldNames = new String[MaxSortIndex+1][2];
  for (int i = 0; i <= MaxSortIndex; i++){
      if (xSortListBox[i].getSelectedItemPos() > 0){
    CurFieldTitle = xSortListBox[i].getSelectedItem();
    CurFieldName = CurReportDocument.CurDBMetaData.getFieldName(CurFieldTitle);
    iCurState = ((Short) CurUNODialog.getPropertyOfDialogControl("optAscend" + new Integer(i+1).toString(), "State")).shortValue();
    CurReportDocument.CurDBMetaData.SortFieldNames[a][0] = CurFieldName;         
    if (iCurState == 1)
        CurReportDocument.CurDBMetaData.SortFieldNames[a][1] = "ASC";
    else
        CurReportDocument.CurDBMetaData.SortFieldNames[a][1] = "DESC";
    a +=1;
      }
  }
    }*/
   
   
    public int getMaxSortIndex(){
        int LocMaxSortIndex = -1;
        for (int i = 0; i < 4; i++){
      if (xSortListBox[i].getSelectedItemPos() > 0)
          LocMaxSortIndex += 1;
      else
          break;
  }
  return LocMaxSortIndex;
    }
   
   
    public void enableNextSortListBox(int CurIndex){
    try{
  MaxSortIndex = getMaxSortIndex();
  boolean bDoEnable = (xSortListBox[CurIndex].getSelectedItemPos() != 0);
  if (!bDoEnable)
      disableListBoxesfromIndex(CurIndex);
  else
      toggleSortListBox(CurIndex + 1, true);
    }
    catch(Exception exception){
  exception.printStackTrace(System.out);
    }}   
       
   
    public boolean setupSortcriteria(){
    try{
  short iCurState;
  String CurFieldName;
  String CurFieldTitle;
  MaxSortIndex = getMaxSortIndex();
  CurReportDocument.CurDBMetaData.SortFieldNames = new String[MaxSortIndex+1][2];
  for (int i = 0; i <= MaxSortIndex; i++){
      CurFieldTitle = xSortListBox[i].getSelectedItem();
      CurFieldName = CurReportDocument.CurDBMetaData.getFieldName(CurFieldTitle);
      if (Tools.FieldInTable(CurReportDocument.CurDBMetaData.SortFieldNames, CurFieldName) == -1){
    CurReportDocument.CurDBMetaData.SortFieldNames[i][0] = CurFieldName;   
    iCurState = ((Short) CurUNODialog.getPropertyOfDialogControl("optAscend" + new Integer(i+1).toString(), "State")).shortValue();
    CurReportDocument.CurDBMetaData.SortFieldNames[i][0] = CurFieldName;         
    if (iCurState == 1)
        CurReportDocument.CurDBMetaData.SortFieldNames[i][1] = "ASC";
    else
        CurReportDocument.CurDBMetaData.SortFieldNames[i][1] = "DESC";     
      }
      else{
    String sLocSortCriteriaisduplicate = Tools.replaceSubString(sSortCriteriaisduplicate, CurFieldTitle, "<FIELDNAME>");         
    UNODialogs.showMessageBox(xMSF, "WarningBox", com.sun.star.awt.VclWindowPeerAttribute.OK, sLocSortCriteriaisduplicate);
    xSortListBox[i].selectItemPos((short) 0, true);
//    disableListBoxesfromIndex(i);
    return false;       
      }
  }
  return true;
    }
    catch(Exception exception){
  exception.printStackTrace(System.out);
  return false;
    }}
   
   
    public void disableListBoxesfromIndex(int CurIndex){
  if (CurIndex < MAXSORTCRITERIA){
      for (int i = CurIndex + 1; i <= MAXSORTCRITERIA; i++){
    toggleSortListBox(i, (false));
    if (i < MaxSortIndex)
        xSortListBox[i+1].selectItemPos((short)0, true);
      }
      CurReportDocument.CurUNODialog.setFocus("lblSort" + new Integer(CurIndex+1));
      MaxSortIndex = CurIndex-1;
  }   
    }
   

//  The following code can be reactivated in a future version when task #100799 will be fixed
    public void moveupSortItems(int CurIndex, boolean bDoEnable){
  short iNextItemPos;
  if ((bDoEnable == false) && (MaxSortIndex > CurIndex)){
      for (int i= CurIndex; i < MaxSortIndex; i++){
    iNextItemPos = xSortListBox[i+1].getSelectedItemPos();
    if (iNextItemPos != 0){
        xSortListBox[i].selectItemPos(iNextItemPos,true);
        xSortListBox[i+1].selectItemPos(iNextItemPos,false);
        toggleSortListBox(i,true);
        xSortListBox[i+1].selectItemPos((short)0,true);
    }
      }
            MaxSortIndex = MaxSortIndex - 1;
            if (MaxSortIndex < xSortListBox.length -2)
                toggleSortListBox(MaxSortIndex + 2, false);
  }
  else
      toggleSortListBox(CurIndex+1, bDoEnable);
    }
   
   
   
    public void toggleSortListBox(int CurIndex, boolean bDoEnable){
  try{
      if (CurIndex < xSortListBox.length){
    CurUNODialog.assignPropertyToDialogControl("lblSort" + new Integer(CurIndex+1).toString(), "Enabled", new Boolean(bDoEnable));
    CurUNODialog.assignPropertyToDialogControl("lstSort" + new Integer(CurIndex+1).toString(), "Enabled", new Boolean(bDoEnable));
    CurUNODialog.assignPropertyToDialogControl("optAscend" + new Integer(CurIndex+1).toString(), "Enabled", new Boolean(bDoEnable));
    CurUNODialog.assignPropertyToDialogControl("optDescend" + new Integer(CurIndex+1).toString(), "Enabled", new Boolean(bDoEnable));
    if (bDoEnable == false)
        xSortListBox[CurIndex].selectItemPos((short)0,true);
      }
  }
  catch( Exception exception ){
      exception.printStackTrace(System.out);
  }}
   
   
    public String getStorePath(){
  String StorePath = "";
  try{
      boolean bStoreAsTemplate = ((Short) CurUNODialog.getPropertyOfDialogControl("optCreateReportTemplate", "State")).shortValue() == (short) 1;
      if (bStoreAsTemplate == true){
    StorePath = (String) CurUNODialog.getPropertyOfDialogControl("txtSavePath_1", "Text");
    bfinalaskbeforeOverwrite = baskbeforeOverwrite[0];
      }
      else{
    StorePath = (String) CurUNODialog.getPropertyOfDialogControl("txtSavePath_2", "Text");
    bfinalaskbeforeOverwrite = baskbeforeOverwrite[1];
      }
      StorePath = Tools.converttoURLNotation(StorePath);
  }
  catch( Exception exception ){
      exception.printStackTrace(System.out);
  }
  return StorePath;
    }
   
   
    public void insertStorePathToTextBox(){
  try{
      String sStorePath = "";
      boolean bStoreAsTemplate = ((Short) CurUNODialog.getPropertyOfDialogControl("optCreateReportTemplate", "State")).shortValue() == (short) 1;
      if (bStoreAsTemplate == true){
    sStorePath = Tools.callStoreDialog(xMSF, CurReportPaths.UserTemplatePath, DefaultName + ".stw", "writer_StarOffice_XML_Writer_Template");
    if (sStorePath != ""){
        CurUNODialog.assignPropertyToDialogControl("txtSavePath_1", "Text", sStorePath);
        // As the user has been asked already if the Path exists already and he does not want to be asked again later on when the
        // document is created we set the flag 'bmodifiedbySaveAsDialog" to true
        bmodifiedbySaveAsDialog[0] = true;
        // it might be that the value in the textbox will not be changed; in this case also the flag 'baskbeforeOverwrite' has to be set
        // because the textlistener won't be called.
        baskbeforeOverwrite[0] = false;
    }
      }
      else{
    sStorePath = Tools.callStoreDialog(xMSF, CurReportPaths.WorkPath, DefaultName + ".sxw""StarOffice XML (Writer)");
    if (sStorePath != ""){
        CurUNODialog.assignPropertyToDialogControl("txtSavePath_2", "Text", sStorePath);
        bmodifiedbySaveAsDialog[1] = true;
        baskbeforeOverwrite[1] = false;
    }
      }
      CurUNODialog.assignPropertyToDialogControl("cmdGoOn", "Enabled", new Boolean(sStorePath != ""));
  }
  catch( Exception exception ){
      exception.printStackTrace(System.out);
  }}
   

    public void insertSaveControls(int YPos, int Index, boolean bDoEnable, int BaseHelpID){
  try{
      String HIDString;
      CurUNODialog.insertControlModel("com.sun.star.awt.UnoControlFixedTextModel", "lblSaveAs_" + Integer.toString(Index+1),
      new String[] {"Enabled", "Height", "Label", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
      new Object[] {new Boolean(bDoEnable), new Integer(8), sSaveAs, new Integer(16), new Integer(YPos), new Integer(SOSTOREPAGE), new Short(CurTabIndex++), new Integer(130)});
     
      HIDString = "HID:" + Integer.toString(BaseHelpID);
      xSaveTextBox[Index] = CurUNODialog.insertTextField("txtSavePath_" + Integer.toString(Index+1), SOTXTSAVEPATH[Index], new TextListenerImpl(),
      new String[] {"Enabled", "Height", "HelpURL", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
      new Object[] {new Boolean(bDoEnable), new Integer(12), HIDString, new Integer(16), new Integer(YPos + 10), new Integer(SOSTOREPAGE), new Short(CurTabIndex++), new Integer(222)});
     
      HIDString = "HID:" + Integer.toString(BaseHelpID+1);
      CurUNODialog.insertButton("cmdSelectPath_" + Integer.toString(Index+1), SOCMDSELECTPATH[Index], new ActionListenerImpl(),
      new String[] {"Enabled", "Height", "HelpURL", "Label", "PositionX", "PositionY", "Step""TabIndex", "Width"},
      new Object[] {new Boolean(bDoEnable), new Integer(14), HIDString, "...", new Integer(248), new Integer(YPos + 9), new Integer(SOSTOREPAGE), new Short(CurTabIndex++), new Integer(16)});
  }
  catch( Exception exception ){
      exception.printStackTrace(System.out);
  }}
   
   
    public void toggleSaveControls(){
  try{
      String sStorePath = "";
      Short iState = (Short) CurUNODialog.getPropertyOfDialogControl("optCreateReportTemplate", "State");
      boolean bDoTemplateEnable = iState.shortValue() == 1;
      CurUNODialog.assignPropertyToDialogControl("optEditTemplate", "Enabled", new Boolean(bDoTemplateEnable));
      CurUNODialog.assignPropertyToDialogControl("optUseTemplate", "Enabled", new Boolean(bDoTemplateEnable));
     
      CurUNODialog.assignPropertyToDialogControl("lblSaveAs_1", "Enabled", new Boolean(bDoTemplateEnable));
      CurUNODialog.assignPropertyToDialogControl("txtSavePath_1", "Enabled", new Boolean(bDoTemplateEnable));
      CurUNODialog.assignPropertyToDialogControl("cmdSelectPath_1", "Enabled", new Boolean(bDoTemplateEnable));
      CurUNODialog.assignPropertyToDialogControl("lblAutomaticLink", "Enabled", new Boolean(bDoTemplateEnable));
     
      CurUNODialog.assignPropertyToDialogControl("lblSaveAs_2", "Enabled", new Boolean(!bDoTemplateEnable));
      CurUNODialog.assignPropertyToDialogControl("txtSavePath_2", "Enabled", new Boolean(!bDoTemplateEnable));
      CurUNODialog.assignPropertyToDialogControl("cmdSelectPath_2", "Enabled", new Boolean(!bDoTemplateEnable));
      CurUNODialog.assignPropertyToDialogControl("chkcreateLink", "Enabled", new Boolean(!bDoTemplateEnable));
     
      if (bDoTemplateEnable == true)
    sStorePath = (String) CurUNODialog.getPropertyOfDialogControl("txtSavePath_1", "Text");
      else
    sStorePath = (String) CurUNODialog.getPropertyOfDialogControl("txtSavePath_2", "Text");
      boolean bDoEnable = sStorePath.compareTo("") != 0;
      CurUNODialog.assignPropertyToDialogControl("cmdGoOn", "Enabled", new Boolean(bDoEnable));
  }
  catch( Exception exception ){
      exception.printStackTrace(System.out);
  }}
   
   
    public void assignDocumentPathstoTextControl(XMultiServiceFactory xMSF){
  String DefaultPath;
  String CurPath = (String) CurUNODialog.getPropertyOfDialogControl("txtSavePath_1", "Text");
  DefaultName = "Report_" + CurReportDocument.CurDBMetaData.DataSourceName + "_" + CurReportDocument.CurDBMetaData.MainCommandName;
  if (DefaultName.equals(OldDefaultName) == false){
      OldDefaultName = DefaultName;
      DefaultPath = CurReportPaths.UserTemplatePath + "/" + DefaultName + ".stw";
      DefaultPath = Tools.convertfromURLNotation(xMSF, DefaultPath);
      CurUNODialog.assignPropertyToDialogControl("txtSavePath_1", "Text", DefaultPath);
      baskbeforeOverwrite[0] = true;
      bmodifiedbySaveAsDialog[0] = false;
      DefaultPath = CurReportPaths.WorkPath + "/" + DefaultName + ".sxw";
      DefaultPath = Tools.convertfromURLNotation(xMSF, DefaultPath);
      CurUNODialog.assignPropertyToDialogControl("txtSavePath_2", "Text", DefaultPath);
      baskbeforeOverwrite[1] = true;
      bmodifiedbySaveAsDialog[1] = false;
  }
    }
   

    public void fillSixthStep(){
  try{
      CurUNODialog.insertRadioButton("optCreateReportTemplate", SOOPTSAVEASTEMPLATE, new ActionListenerImpl(),
      new String[] {"Height", "HelpURL", "Label", "PositionX", "PositionY", "State", "Step", "TabIndex", "Width"},
      new Object[] {new Integer(8), "HID:34370", sSaveAsTemplate, new Integer(6), new Integer(41), new Short((short) 1), new Integer(SOSTOREPAGE), new Short(CurTabIndex++), new Integer(250)});
     
      CurUNODialog.insertRadioButton("optCreateDocument", SOOPTSAVEASDOCUMENT, new ActionListenerImpl(),
      new String[] {"Height", "HelpURL", "Label", "PositionX", "PositionY", "State", "Step", "TabIndex", "Width"},
      new Object[] {new Integer(10), "HID:34371", sSaveAsDocument, new Integer(6), new Integer(125), new Short((short) 0), new Integer(SOSTOREPAGE), new Short(CurTabIndex++), new Integer(138)});
     
      insertSaveControls(55, 0, true, 34372);
     
      CurUNODialog.insertRadioButton("optEditTemplate", SOOPTEDITTEMPLATE, new ActionListenerImpl(),
      new String[] {"Height", "HelpURL", "Label", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
      new Object[] {new Integer(10), "HID:34374", sEditTemplate, new Integer(16), new Integer(84), new Integer(6), new Short(CurTabIndex++), new Integer(138)});
     
      CurUNODialog.insertRadioButton("optUseTemplate", SOOPTUSEDOCUMENT, new ActionListenerImpl(),
      new String[] {"Height", "HelpURL", "Label", "PositionX", "PositionY", "State", "Step", "TabIndex", "Width"},
      new Object[] {new Integer(10), "HID:34375", sUseTemplate, new Integer(16), new Integer(95), new Short((short) 1), new Integer(SOSTOREPAGE), new Short(CurTabIndex++), new Integer(138)});
     
      CurUNODialog.insertControlModel("com.sun.star.awt.UnoControlFixedTextModel", "lblAutomaticLink",
      new String[] {"Height", "Label", "PositionX", "PositionY", "Step", "Width"},
      new Object[] {new Integer(8), sCreateLinkAutomatically, new Integer(16), new Integer(108), new Integer(SOSTOREPAGE), new Integer(200)});
     
      insertSaveControls(140, 1, false, 34376);
     
      chkTemplate = CurUNODialog.insertControlModel("com.sun.star.awt.UnoControlCheckBoxModel", "chkcreateLink",
      new String[] {"Enabled", "Height", "HelpURL", "Label", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
      new Object[] {new Boolean(false), new Integer(8), "HID:34378", sCreateLink, new Integer(16), new Integer(170), new Integer(SOSTOREPAGE), new Short(CurTabIndex++), new Integer(130)});
  }
  catch( Exception exception ){
      exception.printStackTrace(System.out);
  }}
   
   
    public void fillFifthStep(){
  try{
      CurUNODialog.insertControlModel("com.sun.star.awt.UnoControlFixedTextModel", "lblTitle",
      new String[] {"Height", "Label", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
      new Object[] {new Integer(8), sReportTitle, new Integer(6), new Integer(40), new Integer(SOTEMPLATEPAGE), new Short(CurTabIndex++), new Integer(200)});
     
      xTitleTextBox = CurUNODialog.insertTextField("txtTitle", SOTXTTITLE, new TextListenerImpl(),
      new String[] {"Height", "HelpURL", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
      new Object[] {new Integer(12), "HID:34362", new Integer(6), new Integer(50), new Integer(SOTEMPLATEPAGE), new Short(CurTabIndex++), new Integer(258)});
     
      CurUNODialog.insertControlModel("com.sun.star.awt.UnoControlFixedTextModel", "lblContent",
      new String[] {"Height", "Label", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
      new Object[] {new Integer(8), slblDataStructure, new Integer(6), new Integer(70), new Integer(SOTEMPLATEPAGE), new Short(CurTabIndex++), new Integer(125)});
     
      short iSelPos = (short) Tools.FieldInList(CurReportPaths.ContentFiles[1], CurReportPaths.ReportPath + "/cnt-default.stw");
      iOldContentPos = (int) iSelPos;
      xContentListBox = CurUNODialog.insertListBox("lstContent", SOCONTENTLST, new ActionListenerImpl(), new ItemListenerImpl(),
      new String[] {"Height", "HelpURL", "PositionX", "PositionY", "SelectedItems", "Step", "StringItemList", "TabIndex", "Width"},
      new Object[] {new Integer(63), "HID:34363", new Integer(6), new Integer(80), new short[] {iSelPos}new Integer(SOTEMPLATEPAGE), CurReportPaths.ContentFiles[0], new Short(CurTabIndex++), new Integer(125)});
     
      CurUNODialog.insertControlModel("com.sun.star.awt.UnoControlFixedTextModel", "lblLayout",
      new String[] {"Height", "Label", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
      new Object[] {new Integer(8), slblPageLayout, new Integer(140), new Integer(70), new Integer(SOTEMPLATEPAGE), new Short(CurTabIndex++), new Integer(125)});
     
      short iSelLayoutPos = (short) Tools.FieldInList(CurReportPaths.LayoutFiles[1], CurReportPaths.ReportPath + "/stl-default.stw");
      xLayoutListBox = CurUNODialog.insertListBox("lstLayout", SOLAYOUTLST, new ActionListenerImpl(), new ItemListenerImpl(),
      new String[] {"Height", "HelpURL", "PositionX", "PositionY", "SelectedItems", "Step", "StringItemList", "TabIndex", "Width"},
      new Object[] {new Integer(63), "HID:34364", new Integer(140), new Integer(80), new short[] {iSelLayoutPos}, new Integer(SOTEMPLATEPAGE), CurReportPaths.LayoutFiles[0], new Short(CurTabIndex++), new Integer(125)});
      iOldLayoutPos = (int) iSelPos;
     
      CurUNODialog.insertControlModel("com.sun.star.awt.UnoControlFixedTextModel", "lblOrientation",
      new String[] {"Height", "Label", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
      new Object[] {new Integer(8), sOrientationHeader, new Integer(6), new Integer(149), new Integer(SOTEMPLATEPAGE), new Short(CurTabIndex++), new Integer(74)});
     
      CurUNODialog.insertRadioButton("optLandscape", SOOPTLANDSCAPE, new ActionListenerImpl(),
      new String[] {"Height", "HelpURL", "Label", "PositionX", "PositionY", "State", "Step", "TabIndex", "Width"},
      new Object[] {new Integer(10), "HID:34365", sOrientHorizontal, new Integer(12), new Integer(160), new Short((short) 1), new Integer(SOTEMPLATEPAGE), new Short(CurTabIndex++), new Integer(60)});
     
      CurUNODialog.insertRadioButton("optPortrait", SOOPTPORTRAIT, new ActionListenerImpl(),
      new String[] {"Height", "HelpURL", "Label", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
      new Object[] {new Integer(10), "HID:34366", sOrientVertical, new Integer(12), new Integer(173), new Integer(SOTEMPLATEPAGE), new Short(CurTabIndex++), new Integer(60)});
      CurUNODialog.insertControlModel("com.sun.star.awt.UnoControlImageControlModel", "imgOrientation",
      new String[] {"Border", "Height", "ImageURL", "PositionX", "PositionY", "ScaleImage", "Step", "Width"},
      new Object[] {new Short("0"), new Integer(23), CurReportPaths.BitmapPath + "/landscape.gif", new Integer(80), new Integer(158), new Boolean(false), new Integer(SOTEMPLATEPAGE), new Integer(30)});

      CurUNODialog.insertControlModel("com.sun.star.awt.UnoControlFixedTextModel", "lblBlindTextNote_2",
      new String[] {"Height", "Label", "MultiLine", "PositionX", "PositionY", "Step", "Width"},
      new Object[] {new Integer(34), sBlindTextNote, new Boolean(true), new Integer(140), new Integer(149), new Integer(SOTEMPLATEPAGE), new Integer(125)});
     
  }
  catch( Exception exception ){
      exception.printStackTrace(System.out);
  }}
   
   
    public void updateFifthStep(){
  if (CurUNODialog.getPropertyOfDialogControl("txtTitle", "Text").equals(""))
      CurUNODialog.assignPropertyToDialogControl("txtTitle", "Text", CurReportDocument.CurDBMetaData.MainCommandName);
  CurUNODialog.setFocus("lblContent");
    }
   
   
    public boolean checkIfToupdateStep(DBMetaData CurDBMetaData, int iStep){
  boolean bIsSame = CurDBMetaData.MainCommandName.equals(CurDBMetaData.OldMainCommandName) && (CurDBMetaData.MainCommandName != null);
  if (bIsSame == true)
      bIsSame = Arrays.equals(CurDBMetaData.FieldNames, CurDBMetaData.OldFieldNames) && (CurDBMetaData.FieldNames != null);
  if ((bIsSame == true) && (iStep >= 2)){
      bIsSame = Arrays.equals(CurDBMetaData.FieldTitles, CurDBMetaData.OldFieldTitles) && (CurDBMetaData.FieldTitles != null);
      CurDBMetaData.OldFieldTitles = Tools.copyStringArray(CurDBMetaData.FieldTitles);
  }
  if ((bIsSame == true) && (iStep >= 3)){
      bIsSame = Arrays.equals(CurDBMetaData.GroupFieldNames, CurDBMetaData.OldGroupFieldNames) && (CurDBMetaData.GroupFieldNames != null);
      CurDBMetaData.OldGroupFieldNames = Tools.copyStringArray(CurDBMetaData.GroupFieldNames);
  }
  if ((bIsSame == true) && (iStep >= 4)){
      bIsSame = Arrays.equals(CurDBMetaData.SortFieldNames, CurDBMetaData.OldSortFieldNames) && (CurDBMetaData.SortFieldNames != null);
  }
  return !bIsSame;
    }
   
   
    public void getGroupFieldNames(DBMetaData CurDBMetaData){
  String[] GroupFieldNames = new String[GroupFieldVector.size()];
  GroupFieldVector.copyInto(GroupFieldNames);
  CurDBMetaData.GroupFieldNames = GroupFieldNames;
    }
   
   
    public boolean updateFourthStep(DBMetaData CurDBMetaData){
  int SortFieldCount = 0;
  try{
      String CurFieldTitle;
      CurUNODialog.setFocus("lstSort1");
      getGroupFieldNames(CurDBMetaData);
      int FieldCount = CurDBMetaData.FieldNames.length;
      int GroupFieldCount = CurDBMetaData.GroupFieldNames.length;
      SortFieldCount = FieldCount - GroupFieldCount;
      if (checkIfToupdateStep(CurReportDocument.CurDBMetaData, 3) == true){
    if (SortFieldCount == 0)
        PageAddCount = 2;
    String SortFieldNames[] = new String[SortFieldCount + 1];
    String ViewSortFieldNames[] = new String[SortFieldCount + 1];
    SortFieldNames[0] = sNoSorting;
    ViewSortFieldNames[0] = sNoSorting;
    String CurFieldName;
    int a = 1;
    for (int i = 0; i < FieldCount;i++){
        CurFieldName = CurDBMetaData.FieldNames[i];
        if (Tools.FieldInList(CurDBMetaData.GroupFieldNames, CurFieldName) == -1){
      CurFieldTitle = CurDBMetaData.getFieldTitle(CurFieldName);
      SortFieldNames[a] = CurFieldName;
      ViewSortFieldNames[a] = CurFieldTitle;
      a +=1;
        }
    }
    short[] SelList;
    for (int i = 0; i<4; i++){
        if (i == 0)
      // Todo: As soon as Vcl is able to recognize the selected Item set the following line to '0' (Bug #91459 of MT)
      SelList = new short[] {(short) 1};
        else{
      SelList = new short[] {(short) 0};
        }
        bOldSortValues[i] = SelList[0];
        if (i > 1)
      toggleSortListBox(i, (false));
        CurUNODialog.assignPropertyToDialogControl("lstSort" + new Integer(i+1).toString(), "StringItemList", ViewSortFieldNames);
        CurUNODialog.assignPropertyToDialogControl("lstSort" + new Integer(i+1).toString(), "SelectedItems", SelList);
    }
    //      System.out.println(xSortListBox[0].getSelectedItemPos());
      }
      return (SortFieldCount > 0);
  }
  catch(Exception exception){
      exception.printStackTrace(System.out);
      return false;
  }}
   

    public void fillFourthStep(){
    try{
  XWindow[] xListBoxWindow = new XWindow[4];
  boolean bDoEnable;
  String HIDString;
  int YPos = 40;
  int BaseHelpID = 34345;
  for (int i = 0; i<4; i++){
      bDoEnable = (i < 2);
      CurUNODialog.insertControlModel("com.sun.star.awt.UnoControlFixedLineModel", "lblSort" + new Integer(i+1),
      new String[] {"Enabled", "Height", "Label", "Orientation", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
      new Object[] {new Boolean(bDoEnable), new Integer(8), sSortHeader[i], new Integer(0), new Integer(12), new Integer(YPos), new Integer(4), new Short(CurTabIndex ++), new Integer(252)});

      HIDString = "HID:" + Integer.toString(BaseHelpID);
      xSortListBox[i] = CurUNODialog.insertListBox("lstSort" + new Integer(i+1).toString(), SOSORTLST[i], new ActionListenerImpl(), new ItemListenerImpl(),
      new String[] {"Dropdown", "Enabled", "Height", "HelpURL", "LineCount", "Name", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
      new Object[] {new Boolean(true), new Boolean(bDoEnable), new Integer(12), HIDString, new Short("7"), "lstSort" + new Integer(i+1)new Integer(12), new Integer(YPos + 14), new Integer(SOSORTPAGE), new Short(CurTabIndex++), new Integer(154)})//new Short((short) (17+i*4))

      HIDString = "HID:" + Integer.toString(BaseHelpID+1);
      CurUNODialog.insertRadioButton("optAscend" + Integer.toString(i+1), SOSORTASCENDOPT[i], new ActionListenerImpl(),
      new String[] {"Enabled", "Height", "HelpURL", "Label", "PositionX", "PositionY", "State", "Step", "TabIndex", "Tag", "Width"},
      new Object[] {new Boolean(bDoEnable), new Integer(10), HIDString,  sSortAscend[i], new Integer(186), new Integer(YPos+10), new Short((short) 1), new Integer(SOSORTPAGE), new Short(CurTabIndex++), new String("ASC"), new Integer(65)});    //, new Short((short) (18+i*4))

      HIDString = "HID:" + Integer.toString(BaseHelpID+2);
      CurUNODialog.insertRadioButton("optDescend" + Integer.toString(i+1), SOSORTDESCENDOPT[i], new ActionListenerImpl(),
      new String[] {"Enabled", "Height", "HelpURL", "Label", "PositionX", "PositionY", "State", "Step", "TabIndex", "Tag", "Width"},
      new Object[] {new Boolean(bDoEnable), new Integer(10), HIDString, sSortDescend[i], new Integer(186), new Integer(YPos+24), new Short((short) 0), new Integer(SOSORTPAGE), new Short(CurTabIndex++), new String("DESC"), new Integer(65)});    //, new Short((short) (19+i*4)) 
      YPos = YPos + 36;
      BaseHelpID += 3;
  }
    }
    catch(Exception exception){
  exception.printStackTrace(System.out);
    }}
     
   
    public void fillThirdStep(){
  try{
      CurUNODialog.insertControlModel("com.sun.star.awt.UnoControlFixedTextModel", "lblGroups",
    new String[] {"Height", "Label", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
    new Object[] {new Integer(8), sOrganizeFields, new Integer(6), new Integer(38), new Integer(SOGROUPPAGE), new Short(CurTabIndex++), new Integer(100)});
      xGroupListBox = CurUNODialog.insertListBox("lstGroup", SOGROUPLST, new ActionListenerImpl(), new ItemListenerImpl(),
    new String[] {"Height", "HelpURL", "MultiSelection", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
    new Object[] {new Integer(115), "HID:34340", new Boolean(false), new Integer(6), new Integer(49), new Integer(SOGROUPPAGE), new Short(CurTabIndex++), new Integer(110)});

      CurUNODialog.insertButton("cmdGroupOut", SOCMDGROUPOUT, new ActionListenerImpl(),
    new String[] {"Enabled", "Height", "HelpURL", "Label", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
    new Object[] {new Boolean(false), new Integer(14), "HID:34341", "->", new Integer(122), new Integer(90), new Integer(SOGROUPPAGE), new Short(CurTabIndex++), new Integer(25)});
      CurUNODialog.insertButton("cmdGroupIn", SOCMDGROUPIN, new ActionListenerImpl(),
    new String[] {"Enabled", "Height", "HelpURL", "Label", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
    new Object[] {new Boolean(false), new Integer(14), "HID:34342", "<-", new Integer(122), new Integer(110), new Integer(SOGROUPPAGE), new Short(CurTabIndex++), new Integer(25)});     
     
      CurUNODialog.insertControlModel("com.sun.star.awt.UnoControlFixedTextModel", "lblSelGroups",
    new String[] {"Height", "Label", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
    new Object[] {new Integer(8), sGroupings, new Integer(154), new Integer(38), new Integer(SOGROUPPAGE), new Short(CurTabIndex++), new Integer(100)});
      xSelGroupListBox = CurUNODialog.insertListBox("lstSelGroup", SOSELGROUPLST, new ActionListenerImpl(), new ItemListenerImpl(),
    new String[] {"Height", "HelpURL", "MultiSelection", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
    new Object[] {new Integer(115), "HID:34343", new Boolean(false), new Integer(154), new Integer(49), new Integer(SOGROUPPAGE), new Short(CurTabIndex++), new Integer(110)});

      CurUNODialog.insertControlModel("com.sun.star.awt.UnoControlFixedTextModel", "lblBlindTextNote_1",
    new String[] {"Enabled", "Height", "Label", "MultiLine", "PositionX", "PositionY", "Step", "Width"},
    new Object[] {new Boolean(false), new Integer(18), sBlindTextNote, new Boolean(true), new Integer(6), new Integer(168), new Integer(SOGROUPPAGE), new Integer(258)});
  }
  catch( Exception exception ){
      exception.printStackTrace(System.out);
  }}
   
   
    public void scrollControls(){
  int FieldCount = CurReportDocument.CurDBMetaData.FieldCount;
  scrollTextFieldInfo(ScrollBarValue);
  ScrollBarValue = ((Integer) CurUNODialog.getPropertyOfDialogControl("TitleScrollBar", "ScrollValue")).intValue();
  if (ScrollBarValue +  TextFieldCount >= FieldCount)
      ScrollBarValue = (FieldCount) - TextFieldCount;
  fillupTextFields(ScrollBarValue);
    }
   
   
    public void fillupTextFields(int ScrollBarValue){
  int CurIndex;
  String[] FieldNames = CurReportDocument.CurDBMetaData.FieldNames;
  String[] FieldTitles = CurReportDocument.CurDBMetaData.FieldTitles;
  for (int a = 1; a <= TextFieldCount; a++){
      CurIndex = (a-1) + ScrollBarValue;
      CurUNODialog.assignPropertyToDialogControl("lblColumnName_"  + Integer.toString(a), "Label", FieldNames[CurIndex]);
      CurUNODialog.assignPropertyToDialogControl("txtTitleName_"  + Integer.toString(a), "Text", FieldTitles[CurIndex]);
  }
    }
   
   
    public void scrollTextFieldInfo(int iScrollValue){
  int CurIndex;
  for (int a = 1; a <= TextFieldCount; a++){
      CurIndex = (a-1) + iScrollValue;
      CurReportDocument.CurDBMetaData.FieldTitles[CurIndex] = (String) CurUNODialog.getPropertyOfDialogControl("txtTitleName_"+ Integer.toString(a), "Text");
  }
    }

   
    public void updateThirdStep(DBMetaData CurDBMetaData){
  try{
      CurUNODialog.setFocus("lstGroup");
      if (checkIfToupdateStep(CurReportDocument.CurDBMetaData, SOTITLEPAGE) == true){
    CurReportDocument.removeAllTextSections();
    CurReportDocument.removeAllTextTables();
    CurDBMetaData.OldFieldNames = CurDBMetaData.FieldNames;
    // Todo: Nur ausf?hren, when FieldNames anders als vorher -> dann muss auch Selektionslistbox leer gemacht werden.
    CurUNODialog.assignPropertyToDialogControl("lstGroup", "StringItemList", CurDBMetaData.FieldTitles);
    xSelGroupListBox.removeItems((short) 0, xSelGroupListBox.getItemCount());
    GroupFieldVector = new java.util.Vector(CurDBMetaData.FieldNames.length);
    CurReportDocument.GroupFormatVector = new java.util.Vector();
      }
  }
  catch( Exception exception ){
      exception.printStackTrace(System.out);
  }}
   
   
    public void updateSecondStep(DBMetaData CurDBMetaData, int iStep){
  boolean bisVisible;
  CurUNODialog.assignPropertyToDialogControl("cmdBack", "Enabled", new Boolean(true));
  XScrollBar xTitleScrollBar;
  ScrollBarValue = 0;
  CurDBMetaData.initializeFields(xSelFieldsListBox.getItems(), true);
  CurDBMetaData.OldFieldTitles = Tools.copyStringArray(CurDBMetaData.FieldTitles);
  boolean bDoEnableScrollBar = CurDBMetaData.FieldCount > UITextFieldCount;
  CurUNODialog.assignPropertyToDialogControl("TitleScrollBar", "Enabled", new Boolean(bDoEnableScrollBar));
  if (bDoEnableScrollBar){
      TextFieldCount = UITextFieldCount;
      CurUNODialog.assignPropertyToDialogControl("TitleScrollBar", "ScrollValueMax", new Integer(CurDBMetaData.FieldCount-TextFieldCount));
      CurUNODialog.assignPropertyToDialogControl("TitleScrollBar", "BlockIncrement", new Integer(TextFieldCount));
      CurUNODialog.assignPropertyToDialogControl("TitleScrollBar", "LineIncrement", new Integer(1));
      CurUNODialog.assignPropertyToDialogControl("TitleScrollBar", "ScrollValue", new Integer(ScrollBarValue));
  }
  else{
      TextFieldCount = CurReportDocument.CurDBMetaData.FieldCount;
  }
  for (int i = 1; i <= UITextFieldCount; i++){
      bisVisible = (i <= TextFieldCount);
      CurUNODialog.setControlVisible("txtTitleName_" + Integer.toString(i), bisVisible, iStep);
      CurUNODialog.setControlVisible("lblColumnName_" + Integer.toString(i), bisVisible, iStep);
  }
 
  for (short i=1; i <= TextFieldCount; i++){
      CurUNODialog.assignPropertyToDialogControl("lblColumnName_"  + Integer.toString(i), "Label", CurDBMetaData.FieldNames[i-1]);
      CurUNODialog.assignPropertyToDialogControl("txtTitleName_" + Integer.toString(i), "Text", CurDBMetaData.FieldTitles[i-1]);
  }
    }
   
   
    public void fillSecondStep(){
  try{
      int YStartPos = 55;
      int YPos = YStartPos;
      int HelpID = 34381;
      XScrollBar xTitleScrollBar;
      int LabelHeight = 6 + (UITextFieldCount) * 18;
      int ScrollHeight = LabelHeight-2;
      CurTabIndex = 13;
      CurUNODialog.insertControlModel("com.sun.star.awt.UnoControlFixedTextModel", "lblColumnNames",
      new String[] {"Height", "Label", "PositionX", "PositionY", "Step", "Width"},
      new Object[] {new Integer(8), slblColumnNames, new Integer(12), new Integer(YStartPos - 16), new Integer(SOTITLEPAGE), new Integer(68)});
     
      CurUNODialog.insertControlModel("com.sun.star.awt.UnoControlFixedTextModel", "lblColumnTitles",
      new String[] {"Height", "Label", "PositionX", "PositionY", "Step", "Width"},
      new Object[] {new Integer(8), slblColumnTitles, new Integer(90), new Integer(YStartPos - 16), new Integer(SOTITLEPAGE), new Integer(152)});
     
      CurUNODialog.insertControlModel("com.sun.star.awt.UnoControlImageControlModel", "imgTitle",
      new String[] {"Border", "Height", "PositionX", "PositionY", "Step", "Width"},
      new Object[] {new Short("1"), new Integer(LabelHeight), new Integer(6), new Integer(YStartPos-6), new Integer(SOTITLEPAGE), new Integer(256)});
     
      for (short i=0; i<UITextFieldCount; i++){
    CurUNODialog.insertControlModel("com.sun.star.awt.UnoControlFixedTextModel", "lblColumnName_"  + Integer.toString(i+1),
    new String[] {"Height", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
    new Object[] {new Integer(8), new Integer(12), new Integer(YPos+2), new Integer(SOTITLEPAGE), new Short(CurTabIndex++), new Integer(68)});
   
    CurUNODialog.insertTextField("txtTitleName_" + Integer.toString(i+1), SOTXTCOLTITLE, new TextListenerImpl(),
    new String[] {"Height", "HelpURL", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
    new Object[] {new Integer(12), "HID:" + String.valueOf(HelpID), new Integer(90), new Integer(YPos), new Integer(SOTITLEPAGE), new Short(CurTabIndex++), new Integer(152)});
    YPos +=18;
    HelpID += 1;
      }
      xTitleScrollBar = CurUNODialog.insertScrollBar("TitleScrollBar", SOTITLESCROLLBAR, new AdjustmentListenerImpl(),
      new String[] { "Border", "Enabled", "Height", "Orientation", "PositionX", "PositionY", "Step", "Width"},
      new Object[] { new Short("0"), new Boolean(true), new Integer(ScrollHeight), new Integer(com.sun.star.awt.ScrollBarOrientation.VERTICAL), new Integer(252), new Integer(YStartPos-5), new Integer(SOTITLEPAGE), new Integer(10)});
     
      //  CurUNODialog.insertControlModel("com.sun.star.awt.UnoControlFixedTextModel", "lblTitleHeader",
      //        new String[] {"BackgroundColor", "Border", "Height", "PositionX", "PositionY", "Step", "Width"},
      //        new Object[] {new Integer(16777215), new Short((short)1), new Integer(LabelHeight), new Integer(6), new Integer(YStartPos-6), new Integer(5), new Integer(256)});
     
  }
  catch( Exception exception ){
      exception.printStackTrace(System.out);
  }}
   
   
    public void fillFirstStep(ReportDocument CurReportDocument, Object[] CurPropertyValue, DBMetaData CurDBMetaData)
   
    // Scenario 1. No parameters are given
    //  MainWithDefault()
   
    // Scenario 2: Only Datasourcename is given, but no connection and no Content
    //  MainWithDefault("Bibliography")
   
    // Scenario 3: a data source and a connection are given
    //  oLocDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
    //  oLocConnection = oLocDBContext.GetByName("Bibliography").GetConnection("","")
    //  MainWithDefault("Bibliography", oLocConnection)
   
    // Scenario 4: all parameters (data source name, connection, object type and object) are given
    //  oLocDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
    //  oLocConnection = oLocDBContext.GetByName("Bibliography").GetConnection("","")
    //  MainWithDefault("Bibliography", oLocConnection, com.sun.star.sdb.CommandType.TABLE, "biblio")
   
    {
  try{
      String[] LocDBList;
      short iSelCommandPos;
      com.sun.star.awt.FontDescriptor oFontDesc = new com.sun.star.awt.FontDescriptor();
      oFontDesc.Weight = com.sun.star.awt.FontWeight.BOLD;
      CurUNODialog.insertControlModel("com.sun.star.awt.UnoControlFixedTextModel", "lblBinaryFields",
    new String[] {"Height", "Label", "PositionX", "PositionY", "Step", "Width"},
    new Object[] {new Integer(16), sShowBinaryFields, new Integer(6), new Integer(162), new Integer(SOMAINPAGE), new Integer(210)});     
     
      Object oHeaderLabel = CurUNODialog.insertControlModel("com.sun.star.awt.UnoControlFixedTextModel", "lblDialogHeader",
    new String[] {"BackgroundColor", "FontDescriptor", "Height", "Label", "MultiLine", "PositionX", "PositionY", "Step", "Width"},
    new Object[] {new Integer(16777215), oFontDesc, new Integer(30), WizardHeaderText[0], new Boolean(true), new Integer(50), new Integer(SONULLPAGE), new Integer(0), new Integer(220)});

      CurUNODialog.insertButton("cmdCancel", SOCMDCANCEL, new ActionListenerImpl(),
    new String[] {"Height", "HelpURL", "Label", "PositionX", "PositionY", "PushButtonType", "Step", "TabIndex", "Width"},
    new Object[] {new Integer(14), "HID:34321", scmdCancel, new Integer(6), new Integer(190), new Short((short)com.sun.star.awt.PushButtonType.CANCEL_value), new Integer(SONULLPAGE), new Short((short) 70), new Integer(53)});
     
      CurUNODialog.insertButton("cmdHelp", SOCMDHELP, new ActionListenerImpl(),
    new String[] {"Height", "Label", "PositionX", "PositionY", "PushButtonType", "Step", "TabIndex", "Width"},
    new Object[] {new Integer(14), scmdHelp, new Integer(63), new Integer(190), new Short((short)com.sun.star.awt.PushButtonType.HELP_value), new Integer(SONULLPAGE), new Short((short) 71), new Integer(53)});
     
      CurUNODialog.insertButton("cmdBack", SOCMDBACK, new ActionListenerImpl(),
    new String[] {"Enabled", "Height", "HelpURL", "Label", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
    new Object[] {new Boolean(false), new Integer(14), "HID:34322", scmdBack, new Integer(155), new Integer(190), new Integer(SONULLPAGE), new Short((short) 72), new Integer(53)});
     
      CurUNODialog.insertControlModel("com.sun.star.awt.UnoControlFixedLineModel", "hlnCommandButtons",
    new String[] {"Height", "Label", "Orientation", "PositionX", "PositionY", "Step", "Width"},
    new Object[] {new Integer(2), "", new Integer(0), new Integer(6), new Integer(184), new Integer(SONULLPAGE), new Integer(258)});
     
      CurUNODialog.insertButton("cmdMoveSelected", SOCMDMOVESEL, new ActionListenerImpl(),
    new String[] {"Enabled", "Height", "HelpURL", "Label", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
    new Object[] {new Boolean(false), new Integer(14), "HID:34334", "->", new Integer(122), new Integer(84), new Integer(SOMAINPAGE), new Short((short) 8), new Integer(25)});
     
      CurUNODialog.insertButton("cmdMoveAll", SOCMDMOVEALL, new ActionListenerImpl(),
    new String[] {"Enabled", "Height", "HelpURL", "Label", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
    new Object[] {new Boolean(false), new Integer(14), "HID:34335", "=>>", new Integer(122), new Integer(102), new Integer(SOMAINPAGE), new Short((short) 9), new Integer(25)});
     
      CurUNODialog.insertButton("cmdRemoveSelected", SOCMDREMOVESEL, new ActionListenerImpl(),
    new String[] {"Enabled", "Height", "HelpURL", "Label", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
    new Object[] {new Boolean(false), new Integer(14), "HID:34336", "<-", new Integer(122), new Integer(120), new Integer(SOMAINPAGE), new Short((short) 10), new Integer(25)});
     
      CurUNODialog.insertButton("cmdRemoveAll", SOCMDREMOVEALL, new ActionListenerImpl(),
    new String[] {"Enabled", "Height", "HelpURL", "Label", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
    new Object[] {new Boolean(false), new Integer(14), "HID:34337", "<<=", new Integer(122), new Integer(138), new Integer(SOMAINPAGE), new Short((short) 11), new Integer(25)});
                 
      CurUNODialog.insertControlModel("com.sun.star.awt.UnoControlImageControlModel", "imgTheme",
    new String[] {"BackgroundColor", "Border", "Height", "ImageURL", "PositionX", "PositionY", "ScaleImage", "Step", "Width"},
    new Object[] {new Integer(16777215), new Short("0"), new Integer(30), CurReportPaths.BitmapPath + "/report.bmp", new Integer(0), new Integer(SONULLPAGE), new Boolean(false), new Integer(0), new Integer(50)});

      if (CurPropertyValue == null)
    LocDBList = UNODialogs.combineListboxList(slstDatabasesDefaultText, CurReportDocument.CurDBMetaData.DataSourceNames);
      else
    LocDBList = CurReportDocument.CurDBMetaData.DataSourceNames;
//      bDataSourceIsSelected[0] = true;
      CurUNODialog.insertControlModel("com.sun.star.awt.UnoControlFixedTextModel", "lblDatabases",
    new String[] {"Height", "Label", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
    new Object[] {new Integer(8), slblDatabases, new Integer(6), new Integer(39), new Integer(SOMAINPAGE), new Short((short) 1), new Integer(74)});
      xDBListBox = CurUNODialog.insertListBox("lstDatabases", SODBLST, null, new ItemListenerImpl(),
    new String[] {"Dropdown", "Height", "HelpURL", "LineCount", "Name", "PositionX", "PositionY", "Step", "StringItemList", "TabIndex", "Width"},
    new Object[] {new Boolean(true), new Integer(12), "HID:34330", new Short("7"), "lstDatabases", new Integer(6), new Integer(49), new Integer(SOMAINPAGE), LocDBList, new Short((short) 2), new Integer(110)});
      XWindow xDBListBoxWindow = (XWindow) UnoRuntime.queryInterface(XWindow.class, xDBListBox);
      xDBListBoxWindow.addMouseListener(new MouseListenerImpl());

      CurUNODialog.insertControlModel("com.sun.star.awt.UnoControlFixedTextModel", "lblTables",
    new String[] {"Enabled", "Height", "Label", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
    new Object[] {new Boolean(false), new Integer(8), slblTables, new Integer(122), new Integer(39), new Integer(SOMAINPAGE), new Short((short) 3), new Integer(72)});
      xTableListBox = CurUNODialog.insertListBox("lstTables", SOTBLLST, null, new ItemListenerImpl(),
    new String[] {"Dropdown", "Enabled", "Height", "HelpURL", "LineCount", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
    new Object[] {new Boolean(true), new Boolean(false), new Integer(12), "HID:34331", new Short("7"), new Integer(122), new Integer(49), new Integer(SOMAINPAGE), new Short((short) 4), new Integer(142)});
      XWindow xTableListBoxWindow = (XWindow) UnoRuntime.queryInterface(XWindow.class, xTableListBox);
      xTableListBoxWindow.addMouseListener(new MouseListenerImpl());

      CurUNODialog.insertControlModel("com.sun.star.awt.UnoControlFixedTextModel", "lblFields",
    new String[] {"Enabled", "Height", "Label", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
    new Object[] {new Boolean(false), new Integer(8), slblFields, new Integer(6), new Integer(69), new Integer(SOMAINPAGE), new Short((short) 5), new Integer(109)});
      xFieldsListBox = CurUNODialog.insertListBox("lstFields", SOFLDSLST, new ActionListenerImpl(), new ItemListenerImpl(),
    new String[] {"Enabled", "Height", "HelpURL", "MultiSelection", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
    new Object[] {new Boolean(false), new Integer(77), "HID:34332", new Boolean(true), new Integer(6), new Integer(79), new Integer(SOMAINPAGE), new Short((short) 6), new Integer(110)});

      CurUNODialog.insertControlModel("com.sun.star.awt.UnoControlFixedTextModel", "lblSelFields",
    new String[] {"Enabled", "Height", "Label", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
    new Object[] {new Boolean(false), new Integer(8), slblSelFields, new Integer(154), new Integer(69), new Integer(SOMAINPAGE), new Short((short) 12), new Integer(110)})
      xSelFieldsListBox = CurUNODialog.insertListBox("lstSelFields", SOSELFLDSLST, new ActionListenerImpl(), new ItemListenerImpl(),
    new String[] {"Enabled", "Height", "HelpURL", "MultiSelection", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
    new Object[] {new Boolean(false), new Integer(77), "HID:34333", new Boolean(true), new Integer(154), new Integer(79), new Integer(SOMAINPAGE), new Short((short) 13), new Integer(110)});
   
      CurDBMetaData.DataSourceName = (String) Tools.getPropertyValuefromAny(CurPropertyValue, "DataSourceName");
      CurDBMetaData.DBConnection =  (com.sun.star.sdbc.XConnection) Tools.getPropertyValuefromAny(CurPropertyValue, "ActiveConnection", com.sun.star.sdbc.XConnection.class);
      CurDBMetaData.bConnectionOvergiven = (CurDBMetaData.DBConnection != null);
      if (CurDBMetaData.bConnectionOvergiven){
    XNameAccess xNameAccess = (XNameAccess) UnoRuntime.queryInterface(XNameAccess.class, CurDBMetaData.xDatabaseContext);
    CurDBMetaData.DataSource = xNameAccess.getByName(CurDBMetaData.DataSourceName);
    CurDBMetaData.xComponent = (XComponent) UnoRuntime.queryInterface(XComponent.class, CurDBMetaData.DBConnection);
      }
      CurDBMetaData.MainCommandName = (String) Tools.getPropertyValuefromAny(CurPropertyValue, "Command");
      Integer IntCommandType = (Integer) Tools.getPropertyValuefromAny(CurPropertyValue, "CommandType");
     
      if (IntCommandType != null)
    CurDBMetaData.CommandType = IntCommandType.intValue();
     
      XWindow xWindow = (XWindow) UnoRuntime.queryInterface(XWindow.class, xDBListBox);
      if (CurDBMetaData.DataSourceName != null){
    if (CurDBMetaData.DataSourceName.equals("") == false){
        short iPos = (short) Tools.FieldInList(CurDBMetaData.DataSourceNames, CurDBMetaData.DataSourceName);
        if (iPos > -1){
      short[] SelList = new short[] {(short) iPos};
      CurUNODialog.assignPropertyToDialogControl("lstDatabases", "SelectedItems", SelList);
        }
        if (CurDBMetaData.DBConnection != null){
      CurDBMetaData.xComponent = (XComponent) UnoRuntime.queryInterface(XComponent.class, CurDBMetaData.DBConnection);
      if (CurDBMetaData.DataSourceName != null){
          iSelCommandPos = fillupCommandListBox(CurDBMetaData, CurDBMetaData.MainCommandName != null);
          if (iSelCommandPos > (short) -1)
        xWindow = (XWindow) UnoRuntime.queryInterface(XWindow.class, xFieldsListBox);
          else
        xWindow = (XWindow) UnoRuntime.queryInterface(XWindow.class, xTableListBox);
      }
      else
          System.out.println(" Overgiven DataSourcename invalid");
        }
    }
      }
      else
    CurUNODialog.assignPropertyToDialogControl("lstDatabases", "SelectedItems", new short[] {(short) 0});
    xWindow.setFocus();
    // DefaultButton has to be inserted after the focus has been set
    CurUNODialog.insertButton("cmdGoOn", SOCMDGOON, new ActionListenerImpl(),
    new String[] {"DefaultButton", "Enabled", "Height", "HelpURL", "Label", "PositionX", "PositionY", "Step", "TabIndex", "Width"},
    new Object[] {new Boolean(true), new Boolean(false), new Integer(14), "HID:34323", scmdGoOn, new Integer(211), new Integer(190), new Integer(0), new Short((short) 73), new Integer(53)});
  }
  catch (Tools.TerminateWizardException exception){}
  catch(Exception exception){
      exception.printStackTrace(System.out);
  }}
   
   
    public static void main(String args[]) {
  String ConnectStr = "uno:socket,host=localhost,port=8100;urp,negotiate=0,forcesynchronous=1;StarOffice.NamingService";      //localhost  ;Lo-1.Germany.sun.com; 10.16.65.155
  try {
      XMultiServiceFactory xLocMSF = Tools.connect(ConnectStr);
      ReportWizard CurReportWizard = new ReportWizard();
//      String MyOfficePath = Tools.getOfficePath(xLocMSF, "Template", "share");
//      String URLPath = java.net.URLDecoder.decode(MyOfficePath,"UTF-8");
//      Tools.addOfficePath(xLocMSF, "Template", Tools.converttoURLNotation("d:\trash bl abla"));
      if(xLocMSF != null)
    System.out.println("Connected to "+ ConnectStr);
      CurReportWizard.startReportWizard(xLocMSF, null);
//  }
//  catch(com.sun.star.wizards.common.Tools.NoValidPathException exception){     
  }
  catch(Exception exception){
      exception.printStackTrace(System.out);
  }
    }
   
   
    public void startReportWizard(XMultiServiceFactory xMSF, Object[] CurPropertyValue){
  try{
      this.xMSF = xMSF;
      xDesktop = Tools.getDesktop(xMSF);
      CurReportPaths = new ReportPaths();
      if (CurReportPaths.initialize(xMSF) == false)
    return;
      if (getReportResources(xMSF, false) == false){
    Tools.disposeDocument(xMSF, CurReportDocument.xComponent);
    return;
      }
      CurReportDocument =  new ReportDocument(xMSF, true, false, ReportMessages);
      if (CurReportDocument.CurDBMetaData.DataSourceNames.length > 0){              // 1
    CurReportDocument.xProgressBar.setValue(20);
    CurReportDocument.loadStyleTemplates(CurReportPaths.ReportPath + "/stl-default.stw", "LoadPageStyles");
    WidthList = DBMetaData.InitializeWidthList();
    CurUNODialog = new UNODialogs(xMSF, new String[] {"Height", "HelpURL", "Step", "Title", "Width"},
    new Object[] {new Integer(210), "HID:34320", new Integer(1), WizardTitle[0], new Integer(270)});
    CurReportDocument.xProgressBar.setValue(30);
    fillFirstStep(CurReportDocument, CurPropertyValue, CurReportDocument.CurDBMetaData);
    CurReportDocument.xProgressBar.setValue(40);
    fillSecondStep();
    CurReportDocument.xProgressBar.setValue(50);
    fillThirdStep();
    CurReportDocument.xProgressBar.setValue(60);
    fillFourthStep();
    CurReportDocument.xProgressBar.setValue(70);
    fillFifthStep();
    CurReportDocument.xProgressBar.setValue(80);
    fillSixthStep();
    CurReportDocument.xProgressBar.setValue(100);
    bCloseDocument = true;
    CurReportDocument.xProgressBar.end();
    CurReportDocument.CurUNODialog = CurUNODialog;
    CurReportDocument.CurUNODialog.createWindowPeer(CurReportDocument.xWindowPeer);
    CurUNODialog.setPeerProperty("imgTitle", "MouseTransparent", new Boolean(true));
    CurUNODialog.setPeerProperty("cmdMoveSelected", "AccessibilityName", AccessTextMoveSelected);
    CurUNODialog.setPeerProperty("cmdRemoveSelected", "AccessibilityName", AccessTextRemoveSelected);
    CurUNODialog.setPeerProperty("cmdMoveAll", "AccessibilityName", AccessTextMoveAll);
    CurUNODialog.setPeerProperty("cmdRemoveAll", "AccessibilityName", AccessTextRemoveAll);
    CurUNODialog.setPeerProperty("lstFields", "AccessibilityName", Tools.replaceSubString(slblFields, "", "~"));      //.replaceFirst("~", ""));
    CurUNODialog.setPeerProperty("lstSelFields", "AccessibilityName", Tools.replaceSubString(slblSelFields, "", "~"));
    CurUNODialog.setAutoMnemonic("lblDialogHeader", false);
    short RetValue = CurUNODialog.executeDialog(CurReportDocument.xFrame.getComponentWindow().getPosSize());   
    boolean bdisposeDialog = true;
    switch (RetValue){
        case 0:              // via Cancelbutton or via sourceCode with "endExecute"
      if (bCloseDocument == true){
          CurUNODialog.xComponent.dispose();
          Tools.disposeDocument(xMSF, CurReportDocument.xComponent);
          CurReportDocument.CurDBMetaData.disposeDBMetaData();
          return;
      }
      if ((buseTemplate == true) || (bcreateTemplate == false)){
          if (CurReportDocument.checkReportLayoutMode(CurReportDocument.CurDBMetaData.GroupFieldNames)){
        CurUNODialog.xComponent.dispose();
        bdisposeDialog = false;
        Dataimport CurDataimport = new Dataimport();
        CurDataimport.CurReportDocument = CurReportDocument;
        CurDataimport.showProgressDisplay(xMSF, false);    // CurReportDocument.Frame.getComponentWindow().getPosSize().Width);
        importReportData(xMSF, CurDataimport);      // CurReportDocument, CurUNOProgressDialog, CurDataimport);
          }
          else{
        CurUNODialog.xComponent.dispose();
        CurReportDocument.CurDBMetaData.disposeDBMetaData();
          }
      }
      else{
          CurReportDocument.CurDBMetaData.disposeDBMetaData();
      }
      break;
        case 1:
      break;
    }
    if (bdisposeDialog == true)
        CurReportDocument.unlockallControllers();
      }
      else{
    int iMsg = UNODialogs.showMessageBox(xMSF, "ErrorBox", com.sun.star.awt.VclWindowPeerAttribute.OK, sMsgNoDatabaseAvailable);
    Tools.disposeDocument(xMSF, CurReportDocument.xComponent);
      }
  }
  catch(java.lang.Exception jexception ){
      jexception.printStackTrace(System.out);
  }}
   
   
    //final ReportDocument CurReportDocument, final UNODialogs CurUNOProgressDialog
    public void importReportData(final XMultiServiceFactory xMSF, final Dataimport CurDataimport){
  Thread ProgressThread = new Thread(new Runnable() {
     
      public void run(){
    try{
        if (CurReportDocument.CurDBMetaData.executeCommand(sMsgQueryCreationImpossible + (char) 13 + sMsgEndAutopilot, false))
      CurDataimport.insertDatabaseDatatoReportDocument(xMSF);
        if (bcreateTemplate == false){
      boolean bDocisStored = Tools.storeDocument(xMSF, CurReportDocument.xComponent, StorePath, "StarOffice XML (Writer)",
      false, sMsgSavingImpossible + (char)13 + sMsgLinkCreationImpossible);
      if (bcreateLink && bDocisStored)
          CurReportDocument.CurDBMetaData.createDBLink(CurReportDocument.CurDBMetaData.DataSource, StorePath);
        }
    }
    catch (Tools.InvalidQueryException queryexception){
    }
    catch (ThreadDeath td){
        System.out.println("could not stop thread");
        CurUNOProgressDialog.xComponent.dispose();
    }
    CurReportDocument.CurDBMetaData.disposeDBMetaData();
    CurDataimport.CurUNOProgressDialog.xComponent.dispose();
      }
  });
  ProgressThread.start();
    }
   
   
    public static boolean getReportResources(XMultiServiceFactory xMSF, boolean bgetProgressResourcesOnly){
  try{
      final int RID_COMMON = 1000;
      final int RID_FORM = 2200;
      final int RID_REPORT = 2400;
      XInvocation xResInvoke = Tools.initResources(xMSF, "ReportWizard","dbw");
      sMsgWizardName = Tools.getResText(xResInvoke, RID_REPORT);
      if (bgetProgressResourcesOnly == false){
    scmdReady = Tools.getResText(xResInvoke, RID_COMMON + 0);
    scmdCancel = Tools.getResText(xResInvoke, RID_COMMON + 1);
    scmdBack = Tools.getResText(xResInvoke, RID_COMMON + 2);
    scmdGoOn = Tools.getResText(xResInvoke, RID_COMMON + 3);
    slstDatabasesDefaultText = Tools.getResText(xResInvoke, RID_COMMON + 37);
    slstTablesDefaultText = Tools.getResText(xResInvoke, RID_COMMON + 38);
    AccessTextMoveSelected = Tools.getResText(xResInvoke, RID_COMMON + 39);
    AccessTextRemoveSelected = Tools.getResText(xResInvoke, RID_COMMON + 40);
    AccessTextMoveAll = Tools.getResText(xResInvoke, RID_COMMON + 41);
    AccessTextRemoveAll = Tools.getResText(xResInvoke, RID_COMMON + 42);
    sMsgErrorOccured = Tools.getResText(xResInvoke, RID_COMMON + 6);
    sMsgNoTableInDatabase = Tools.getResText(xResInvoke, RID_COMMON + 9);
    sMsgCommandCouldNotbeOpened = Tools.getResText(xResInvoke, RID_COMMON + 13);
    sMsgNoConnection = Tools.getResText(xResInvoke, RID_COMMON + 14);
    scmdHelp = Tools.getResText(xResInvoke, RID_COMMON + 20);
    sMsgNoDatabaseAvailable = Tools.getResText(xResInvoke, RID_REPORT + 2);
   
    slblTables = Tools.getResText(xResInvoke, RID_FORM + 6);
    slblDatabases = Tools.getResText(xResInvoke, RID_FORM + 11);
   
    slblFields = Tools.getResText(xResInvoke, RID_FORM + 12);
    slblSelFields = Tools.getResText(xResInvoke, RID_REPORT + 9);
    slblDataStructure = Tools.getResText(xResInvoke, RID_REPORT + 15);
    slblPageLayout = Tools.getResText(xResInvoke, RID_REPORT + 16);
    sOrganizeFields = Tools.getResText(xResInvoke, RID_REPORT + 19);
    sSortHeader[0] = Tools.getResText(xResInvoke, RID_REPORT + 20);
    sSortHeader[1] = Tools.getResText(xResInvoke, RID_REPORT + 21);
    sSortHeader[2] = Tools.getResText(xResInvoke, RID_REPORT + 51);
    sSortHeader[3] = Tools.getResText(xResInvoke, RID_REPORT + 52);
   
    sNoSorting = Tools.getResText(xResInvoke, RID_REPORT + 8);
    sOrientationHeader =  Tools.getResText(xResInvoke, RID_REPORT + 22);
    sOrientVertical = Tools.getResText(xResInvoke, RID_REPORT + 23);
    sOrientHorizontal = Tools.getResText(xResInvoke, RID_REPORT + 24);
    sReportTitle = Tools.getResText(xResInvoke, RID_REPORT + 33);
    sSortAscend[0] = Tools.getResText(xResInvoke, RID_REPORT + 36);
    sSortAscend[1] = Tools.getResText(xResInvoke, RID_REPORT + 53);
    sSortAscend[2] = Tools.getResText(xResInvoke, RID_REPORT + 54);
    sSortAscend[3] = Tools.getResText(xResInvoke, RID_REPORT + 55);
   
    sSortDescend[0] = Tools.getResText(xResInvoke, RID_REPORT + 37);
    sSortDescend[1] = Tools.getResText(xResInvoke, RID_REPORT + 56);
    sSortDescend[2] = Tools.getResText(xResInvoke, RID_REPORT + 57);
    sSortDescend[3] = Tools.getResText(xResInvoke, RID_REPORT + 58);
   
    WizardHeaderText[0] = (char) 13 " " + Tools.getResText(xResInvoke, RID_REPORT + 28);
    WizardHeaderText[1] = (char) 13 " " + Tools.getResText(xResInvoke, RID_REPORT + 69);
    WizardHeaderText[2] = (char) 13 " " + Tools.getResText(xResInvoke, RID_REPORT + 29);
    WizardHeaderText[3] = (char) 13 " " + Tools.getResText(xResInvoke, RID_REPORT + 30);
    WizardHeaderText[4] = (char) 13 " " + Tools.getResText(xResInvoke, RID_REPORT + 31);
    WizardHeaderText[5] = (char) 13 " " + Tools.getResText(xResInvoke, RID_REPORT + 32);
   
    WizardTitle[0] = sMsgWizardName + " - " + Tools.getResText(xResInvoke, RID_FORM + 45);
    WizardTitle[1] = sMsgWizardName + " - " + Tools.getResText(xResInvoke, RID_REPORT + 68);
    WizardTitle[2] = sMsgWizardName + " - " + Tools.getResText(xResInvoke, RID_REPORT + 11);
    WizardTitle[3] = sMsgWizardName + " - " + Tools.getResText(xResInvoke, RID_REPORT + 12);
    WizardTitle[4] = sMsgWizardName + " - " + Tools.getResText(xResInvoke, RID_REPORT + 13);
    WizardTitle[5] = sMsgWizardName + " - " + Tools.getResText(xResInvoke, RID_REPORT + 14);
   
    sSaveAsTemplate = Tools.getResText(xResInvoke, RID_REPORT + 40);
    sUseTemplate = Tools.getResText(xResInvoke, RID_REPORT + 41);
    sEditTemplate = Tools.getResText(xResInvoke, RID_REPORT + 42);
    sSaveAsDocument = Tools.getResText(xResInvoke, RID_REPORT + 43);
    sSaveAs = Tools.getResText(xResInvoke, RID_REPORT + 44);
    sCreateLink = Tools.getResText(xResInvoke, RID_REPORT + 45);
    sGroupings = Tools.getResText(xResInvoke, RID_REPORT + 50);
    sMsgSavingImpossible = Tools.getResText(xResInvoke, RID_COMMON + 30);
    // todo: the following message also has to show up when saving failed: sLinkCreationImpossible
    sMsgLinkCreationImpossible = Tools.getResText(xResInvoke, RID_COMMON + 31);
    sCreateLinkAutomatically = Tools.getResText(xResInvoke, RID_COMMON + 32);
    sShowBinaryFields = Tools.getResText(xResInvoke, RID_REPORT + 60);
      }
      sMsgEndAutopilot = Tools.getResText(xResInvoke, RID_COMMON + 33);
      sProgressDBConnection = Tools.getResText(xResInvoke, RID_COMMON + 34);
      sMsgConnectionImpossible = Tools.getResText(xResInvoke, RID_COMMON + 35);
      sMsgFilePathInvalid = Tools.getResText(xResInvoke, RID_COMMON + 36);
     
      sStop = Tools.getResText(xResInvoke, RID_COMMON + 21);
      sMsgTableNotExisting = Tools.getResText(xResInvoke, RID_REPORT + 61);
      sProgressTitle = Tools.getResText(xResInvoke, RID_REPORT + 62);
      sProgressBaseCurRecord = Tools.getResText(xResInvoke, RID_REPORT + 63);
      sReportFormNotExisting = Tools.getResText(xResInvoke, RID_REPORT + 64);
      sMsgQueryCreationImpossible =  Tools.getResText(xResInvoke, RID_REPORT + 65);
      sMsgHiddenControlMissing = Tools.getResText(xResInvoke, RID_REPORT + 66);
      sProgressDataImport = Tools.getResText(xResInvoke, RID_REPORT + 67);
      slblColumnTitles = Tools.getResText(xResInvoke, RID_REPORT + 70);
      slblColumnNames = Tools.getResText(xResInvoke, RID_REPORT + 71);
      sMsgCommonReportError = Tools.getResText(xResInvoke, RID_REPORT + 72);
      sMsgCommonReportError = Tools.replaceSubString(sMsgCommonReportError, String.valueOf((char)13), "<BR>");
      sMsgInvalidTextField = Tools.getResText(xResInvoke, RID_REPORT + 73);
      sSortCriteriaisduplicate = Tools.getResText(xResInvoke, RID_REPORT + 74);
      sBlindTextNote = Tools.getResText(xResInvoke, RID_REPORT + 75);
      sBlindTextNote = Tools.replaceSubString(sBlindTextNote, String.valueOf((char)13), "<BR>");
      sMsgNoConnection = Tools.getResText(xResInvoke, RID_COMMON + 14);
      ReportMessages[0] = sMsgTableNotExisting;
      ReportMessages[1] = sMsgCommonReportError;
      ReportMessages[2] = sMsgEndAutopilot;
      ReportMessages[3] = sMsgInvalidTextField;
      return true;
  }
  catch(com.sun.star.uno.Exception exception){
      Tools.showCommonResourceError(xMSF);
      return false;
  }}
   
   
    private static void FillSpreadsheet(XMultiServiceFactory xMSF) {
  try {
      XSpreadsheetDocument xSpreadsheetDocument =  (XSpreadsheetDocument) Tools.createNewDocument(xDesktop, "scalc");
      XActionLockable xActionInterface = (XActionLockable) UnoRuntime.queryInterface(XActionLockable.class, xSpreadsheetDocument );
      xActionInterface.addActionLock();
      XSpreadsheets xSheets = xSpreadsheetDocument.getSheets();
      XIndexAccess xElements = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xSheets);
      Object oSheet = xElements.getByIndex(0);
      XCellRange xSheet = (XCellRange) UnoRuntime.queryInterface(XCellRange.class, oSheet);
//      XTextRange[] xCell = new XTextRange[10000]
//      a = 0;
      long iStart = System.currentTimeMillis();
      for (int n=0; n<100;n++){
    for (int m=0; m<100;m++) {
        XTextRange xCell = (XTextRange) UnoRuntime.queryInterface(XTextRange.class, xSheet.getCellByPosition(n,m));
//        a +=1;
        xCell.setString("Java is fun!");
    }
      }
      long iEnd = System.currentTimeMillis();
      xActionInterface.removeActionLock();
      System.out.println("done...");
      long iTime = (long) (iEnd - iStart)/1000;
      UNODialogs.showMessageBox(xMSF, "ErrorBox", com.sun.star.awt.VclWindowPeerAttribute.OK,  "Zeit " + String.valueOf(iTime) + " Sekunden");
      System.out.println(iTime);
  }
  catch( Exception exception ) {
      System.err.println( exception);
  }
    }
   
   
    class ReportPaths{
  public String TemplatePath;
  public String BitmapPath;
  public String ReportPath;
  public String[][] LayoutFiles;
  public String[][] ContentFiles;
  public String UserTemplatePath;
  public String WorkPath;
  public ReportPaths(){
  }
 
  public boolean initialize(XMultiServiceFactory xMSF){
      try{
    TemplatePath = Tools.getOfficePath(xMSF, "Template","share");
    UserTemplatePath = Tools.getOfficePath(xMSF, "Template","user");
    BitmapPath = Tools.combinePaths(xMSF, TemplatePath, "/wizard/bitmap");
    ReportPath = Tools.combinePaths(xMSF, TemplatePath, "/wizard/report");
    WorkPath = Tools.getOfficePath(xMSF, "Work","");
    ContentFiles = Tools.getFolderTitles(xMSF, "cnt", ReportPath);
    LayoutFiles = Tools.getFolderTitles(xMSF,"stl", ReportPath);
    XInterface xUcbInterface = (XInterface) xMSF.createInstance("com.sun.star.ucb.SimpleFileAccess");
    XSimpleFileAccess xSimpleFileAccess = (XSimpleFileAccess) UnoRuntime.queryInterface(XSimpleFileAccess.class, xUcbInterface);
    boolean bcntexists = xSimpleFileAccess.exists(ReportPath + "/cnt-default.stw");
    boolean bstlexists = xSimpleFileAccess.exists(ReportPath + "/stl-default.stw");
    if ((bcntexists == false) || (bstlexists == false))
        throw  new Tools.NoValidPathException(xMSF);
    return true;
      }
      catch (Tools.NoValidPathException nopathexception){
    return false;
      }
      catch (Exception exception){
    return false;
      }}
    }
}
TOP

Related Classes of com.sun.star.wizards.report.ReportWizard

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.