1*a1b4a26bSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*a1b4a26bSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*a1b4a26bSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*a1b4a26bSAndrew Rist  * distributed with this work for additional information
6*a1b4a26bSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*a1b4a26bSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*a1b4a26bSAndrew Rist  * "License"); you may not use this file except in compliance
9*a1b4a26bSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*a1b4a26bSAndrew Rist  *
11*a1b4a26bSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*a1b4a26bSAndrew Rist  *
13*a1b4a26bSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*a1b4a26bSAndrew Rist  * software distributed under the License is distributed on an
15*a1b4a26bSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*a1b4a26bSAndrew Rist  * KIND, either express or implied.  See the License for the
17*a1b4a26bSAndrew Rist  * specific language governing permissions and limitations
18*a1b4a26bSAndrew Rist  * under the License.
19*a1b4a26bSAndrew Rist  *
20*a1b4a26bSAndrew Rist  *************************************************************/
21*a1b4a26bSAndrew Rist 
22*a1b4a26bSAndrew Rist 
23cdf0e10cSrcweir package com.sun.star.wizards.report;
24cdf0e10cSrcweir 
25cdf0e10cSrcweir // import java.util.Vector;
26cdf0e10cSrcweir import com.sun.star.awt.TextEvent;
27cdf0e10cSrcweir import com.sun.star.awt.VclWindowPeerAttribute;
28cdf0e10cSrcweir import com.sun.star.awt.XTextListener;
29cdf0e10cSrcweir import com.sun.star.beans.PropertyValue;
30cdf0e10cSrcweir 
31cdf0e10cSrcweir import com.sun.star.container.XContentEnumerationAccess;
32cdf0e10cSrcweir import com.sun.star.deployment.XPackageInformationProvider;
33cdf0e10cSrcweir import com.sun.star.lang.EventObject;
34cdf0e10cSrcweir import com.sun.star.lang.XMultiServiceFactory;
35cdf0e10cSrcweir import com.sun.star.logging.XLogger;
36cdf0e10cSrcweir import com.sun.star.logging.XLoggerPool;
37cdf0e10cSrcweir import com.sun.star.sdb.CommandType;
38cdf0e10cSrcweir 
39cdf0e10cSrcweir import com.sun.star.uno.AnyConverter;
40cdf0e10cSrcweir import com.sun.star.uno.UnoRuntime;
41cdf0e10cSrcweir import com.sun.star.uno.XComponentContext;
42cdf0e10cSrcweir 
43cdf0e10cSrcweir import com.sun.star.logging.LogLevel;
44cdf0e10cSrcweir import com.sun.star.wizards.common.Helper;
45cdf0e10cSrcweir import com.sun.star.wizards.common.JavaTools;
46cdf0e10cSrcweir import com.sun.star.wizards.common.Resource;
47cdf0e10cSrcweir import com.sun.star.wizards.common.SystemDialog;
48cdf0e10cSrcweir import com.sun.star.wizards.common.PropertyNames;
49cdf0e10cSrcweir import com.sun.star.wizards.db.DBMetaData;
50cdf0e10cSrcweir import com.sun.star.wizards.db.DatabaseObjectWizard;
51cdf0e10cSrcweir import com.sun.star.wizards.db.RecordParser;
52cdf0e10cSrcweir import com.sun.star.wizards.db.SQLQueryComposer;
53cdf0e10cSrcweir import com.sun.star.wizards.ui.CommandFieldSelection;
54cdf0e10cSrcweir import com.sun.star.wizards.ui.FieldSelection;
55cdf0e10cSrcweir import com.sun.star.wizards.ui.SortingComponent;
56cdf0e10cSrcweir import com.sun.star.wizards.ui.TitlesComponent;
57cdf0e10cSrcweir import com.sun.star.wizards.ui.UIConsts;
58cdf0e10cSrcweir import com.sun.star.wizards.ui.UnoDialog;
59cdf0e10cSrcweir import com.sun.star.wizards.ui.XCompletion;
60cdf0e10cSrcweir import java.lang.reflect.Method;
61cdf0e10cSrcweir import java.net.URI;
62cdf0e10cSrcweir import java.net.URL;
63cdf0e10cSrcweir import java.net.URLClassLoader;
64cdf0e10cSrcweir import java.util.Map;
65cdf0e10cSrcweir 
66cdf0e10cSrcweir public class ReportWizard extends DatabaseObjectWizard implements XTextListener, XCompletion
67cdf0e10cSrcweir {
68cdf0e10cSrcweir 
69cdf0e10cSrcweir     protected FieldSelection CurGroupFieldSelection;
70cdf0e10cSrcweir     private SortingComponent CurSortingComponent;
71cdf0e10cSrcweir     private TitlesComponent CurTitlesComponent;
72cdf0e10cSrcweir     private CommandFieldSelection CurDBCommandFieldSelection;
73cdf0e10cSrcweir     private GroupFieldHandler CurGroupFieldHandler;
74cdf0e10cSrcweir     private ReportLayouter CurReportLayouter;
75cdf0e10cSrcweir     private ReportFinalizer CurReportFinalizer;
76cdf0e10cSrcweir     private int nReportMode = ReportFinalizer.SOCREATEDOCUMENT;
77cdf0e10cSrcweir     private String m_sReportName = PropertyNames.EMPTY_STRING;
78cdf0e10cSrcweir     protected static final String SOREPORTFORMNAME = "ReportSource";
79cdf0e10cSrcweir     private static final int SOMAINPAGE = 1;
80cdf0e10cSrcweir     private static final int SOTITLEPAGE = 2;
81cdf0e10cSrcweir     protected static final int SOGROUPPAGE = 3;
82cdf0e10cSrcweir     private static final int SOSORTPAGE = 4;
83cdf0e10cSrcweir     protected static final int SOTEMPLATEPAGE = 5;
84cdf0e10cSrcweir     protected static final int SOSTOREPAGE = 6;
85cdf0e10cSrcweir     private IReportDocument m_reportDocument;
86cdf0e10cSrcweir     private static String sMsgWizardName;
87cdf0e10cSrcweir     private static String slblFields;
88cdf0e10cSrcweir     private static String slblSelFields;
89cdf0e10cSrcweir     private static String sShowBinaryFields;
90cdf0e10cSrcweir     private String[] WizardHeaderText = new String[6];
91cdf0e10cSrcweir     private static String slblColumnTitles;
92cdf0e10cSrcweir     private static String slblColumnNames;
93cdf0e10cSrcweir     private static String slblTables;
94cdf0e10cSrcweir     protected static boolean bCloseDocument;
95cdf0e10cSrcweir     private boolean bHasEscapeProcessing = true;
96cdf0e10cSrcweir 
ReportWizard(XMultiServiceFactory i_serviceFactory, final PropertyValue[] i_wizardContext)97cdf0e10cSrcweir     public ReportWizard(XMultiServiceFactory i_serviceFactory, final PropertyValue[] i_wizardContext)
98cdf0e10cSrcweir     {
99cdf0e10cSrcweir         super(i_serviceFactory, 34320, i_wizardContext);
100cdf0e10cSrcweir         super.addResourceHandler("Report Wizard", "dbw");
101cdf0e10cSrcweir         if (getReportResources(false))
102cdf0e10cSrcweir         {
103cdf0e10cSrcweir             Helper.setUnoPropertyValues(xDialogModel,
104cdf0e10cSrcweir                     new String[]
105cdf0e10cSrcweir                     {
106cdf0e10cSrcweir                         PropertyNames.PROPERTY_HEIGHT,
107cdf0e10cSrcweir                         PropertyNames.PROPERTY_MOVEABLE,
108cdf0e10cSrcweir                         PropertyNames.PROPERTY_NAME,
109cdf0e10cSrcweir                         PropertyNames.PROPERTY_POSITION_X,
110cdf0e10cSrcweir                         PropertyNames.PROPERTY_POSITION_Y,
111cdf0e10cSrcweir                         PropertyNames.PROPERTY_STEP,
112cdf0e10cSrcweir                         PropertyNames.PROPERTY_TABINDEX,
113cdf0e10cSrcweir                         PropertyNames.PROPERTY_TITLE,
114cdf0e10cSrcweir                         PropertyNames.PROPERTY_WIDTH
115cdf0e10cSrcweir                     },
116cdf0e10cSrcweir                     new Object[]
117cdf0e10cSrcweir                     {
118cdf0e10cSrcweir                         Integer.valueOf(210),
119cdf0e10cSrcweir                         Boolean.TRUE,
120cdf0e10cSrcweir                         "DialogReport",
121cdf0e10cSrcweir                         102,
122cdf0e10cSrcweir                         41,
123cdf0e10cSrcweir                         1,
124cdf0e10cSrcweir                         new Short((short) 0),
125cdf0e10cSrcweir                         sMsgWizardName,
126cdf0e10cSrcweir                         310
127cdf0e10cSrcweir                     });
128cdf0e10cSrcweir             drawNaviBar();
129cdf0e10cSrcweir             setRightPaneHeaders(this.WizardHeaderText);
130cdf0e10cSrcweir         }
131cdf0e10cSrcweir     }
132cdf0e10cSrcweir 
enterStep(int nOldStep, int nNewStep)133cdf0e10cSrcweir     protected void enterStep(int nOldStep, int nNewStep)
134cdf0e10cSrcweir     {
135cdf0e10cSrcweir         if ((nOldStep >= SOTEMPLATEPAGE) && (nNewStep < SOTEMPLATEPAGE))
136cdf0e10cSrcweir         {
137cdf0e10cSrcweir             // CurReportDocument.getDoc().oTextSectionHandler.removeTextSectionbyName("RecordSection");
138cdf0e10cSrcweir             // CurReportDocument.getDoc().oTextTableHandler.removeTextTablebyName("Tbl_RecordSection");
139cdf0e10cSrcweir             m_reportDocument.removeTextTableAndTextSection();
140cdf0e10cSrcweir         }
141cdf0e10cSrcweir         switch (nNewStep)
142cdf0e10cSrcweir         {
143cdf0e10cSrcweir             case SOMAINPAGE:
144cdf0e10cSrcweir                 CurDBCommandFieldSelection.setModified(false);
145cdf0e10cSrcweir                 break;
146cdf0e10cSrcweir 
147cdf0e10cSrcweir             case SOTITLEPAGE:
148cdf0e10cSrcweir                 String[] aFieldNames = m_reportDocument.getRecordParser().getFieldNames();
149cdf0e10cSrcweir                 Map aFieldTitleSet = m_reportDocument.getRecordParser().getFieldTitleSet();
150cdf0e10cSrcweir                 CurTitlesComponent.initialize(aFieldNames, aFieldTitleSet);
151cdf0e10cSrcweir                 break;
152cdf0e10cSrcweir 
153cdf0e10cSrcweir             case SOGROUPPAGE:
154cdf0e10cSrcweir                 CurGroupFieldHandler.initialize();
155cdf0e10cSrcweir                 break;
156cdf0e10cSrcweir 
157cdf0e10cSrcweir             case SOSORTPAGE:
158cdf0e10cSrcweir                 String[] aFieldNames2 = m_reportDocument.getRecordParser().getFieldNames();
159cdf0e10cSrcweir                 String[][] aSortFieldNames = m_reportDocument.getRecordParser().getSortFieldNames();
160cdf0e10cSrcweir                 CurSortingComponent.initialize(aFieldNames2, aSortFieldNames);
161cdf0e10cSrcweir                 int nLength = m_reportDocument.getRecordParser().GroupFieldNames.length;
162cdf0e10cSrcweir                 CurSortingComponent.setReadOnlyUntil(nLength, false);
163cdf0e10cSrcweir                 break;
164cdf0e10cSrcweir 
165cdf0e10cSrcweir             case SOTEMPLATEPAGE:
166cdf0e10cSrcweir                 break;
167cdf0e10cSrcweir 
168cdf0e10cSrcweir             case SOSTOREPAGE:
169cdf0e10cSrcweir                 //TODO initialize with suitable PathName
170cdf0e10cSrcweir                 CurReportFinalizer.initialize(m_reportDocument.getRecordParser());
171cdf0e10cSrcweir                 break;
172cdf0e10cSrcweir 
173cdf0e10cSrcweir             default:
174cdf0e10cSrcweir                 break;
175cdf0e10cSrcweir         }
176cdf0e10cSrcweir     }
177cdf0e10cSrcweir 
leaveStep(int nOldStep, int nNewStep)178cdf0e10cSrcweir     protected void leaveStep(int nOldStep, int nNewStep)
179cdf0e10cSrcweir     {
180cdf0e10cSrcweir 
181cdf0e10cSrcweir         switch (nOldStep)
182cdf0e10cSrcweir         {
183cdf0e10cSrcweir             case SOMAINPAGE:
184cdf0e10cSrcweir                 String[] aSelectedFieldNames = CurDBCommandFieldSelection.getSelectedFieldNames();
185cdf0e10cSrcweir                 String aTableName = CurDBCommandFieldSelection.getSelectedCommandName();
186cdf0e10cSrcweir                 int nType = CurDBCommandFieldSelection.getSelectedCommandType();
187cdf0e10cSrcweir                 m_reportDocument.initializeFieldColumns(nType, aTableName, aSelectedFieldNames);
188cdf0e10cSrcweir                 if (CurDBCommandFieldSelection.isModified())
189cdf0e10cSrcweir                 {
190cdf0e10cSrcweir                     // cleanup document
191cdf0e10cSrcweir                     m_reportDocument.clearDocument();
192cdf0e10cSrcweir                     m_reportDocument.getRecordParser().setGroupFieldNames(new String[]
193cdf0e10cSrcweir                             {
194cdf0e10cSrcweir                             });
195cdf0e10cSrcweir                     CurGroupFieldHandler.removeGroupFieldNames();
196cdf0e10cSrcweir                 }
197cdf0e10cSrcweir                 break;
198cdf0e10cSrcweir 
199cdf0e10cSrcweir             case SOTITLEPAGE:
200cdf0e10cSrcweir                 String[] sFieldTitles = CurTitlesComponent.getFieldTitles();
201cdf0e10cSrcweir                 // set new field name titles
202cdf0e10cSrcweir                 // CurReportDocument.getRecordParser().setFieldTitles(sFieldTitles);
203cdf0e10cSrcweir                 m_reportDocument.setFieldTitles(sFieldTitles);
204cdf0e10cSrcweir                 break;
205cdf0e10cSrcweir 
206cdf0e10cSrcweir             case SOGROUPPAGE:
207cdf0e10cSrcweir                 // TODO: DESIGN!!! a getter should return a value!!!
208cdf0e10cSrcweir                 CurGroupFieldHandler.getGroupFieldNames(m_reportDocument.getRecordParser());
209cdf0e10cSrcweir                 String[] aGroupFieldNames = m_reportDocument.getRecordParser().GroupFieldNames;
210cdf0e10cSrcweir                 // CurReportDocument.getRecordParser().prependSortFieldNames(aGroupFieldNames);
211cdf0e10cSrcweir                 m_reportDocument.setGrouping(aGroupFieldNames);
212cdf0e10cSrcweir                 break;
213cdf0e10cSrcweir 
214cdf0e10cSrcweir             case SOSORTPAGE:
215cdf0e10cSrcweir                 String[][] aSortFieldNames = CurSortingComponent.getSortFieldNames();
216cdf0e10cSrcweir                 // CurReportDocument.getRecordParser().SortFieldNames = aSortFieldNames;
217cdf0e10cSrcweir                 m_reportDocument.setSorting(aSortFieldNames);
218cdf0e10cSrcweir                 // TODO: why do we make a switch here
219cdf0e10cSrcweir                 super.enablefromStep(SOTEMPLATEPAGE, true);
220cdf0e10cSrcweir                 break;
221cdf0e10cSrcweir 
222cdf0e10cSrcweir             case SOTEMPLATEPAGE:
223cdf0e10cSrcweir                 break;
224cdf0e10cSrcweir 
225cdf0e10cSrcweir             case SOSTOREPAGE:
226cdf0e10cSrcweir                 break;
227cdf0e10cSrcweir 
228cdf0e10cSrcweir             default:
229cdf0e10cSrcweir                 break;
230cdf0e10cSrcweir         }
231cdf0e10cSrcweir 
232cdf0e10cSrcweir         if ((nOldStep < SOTEMPLATEPAGE) && (super.getNewStep() >= SOTEMPLATEPAGE))
233cdf0e10cSrcweir         {
234cdf0e10cSrcweir // this is called before SOTEMPLATEPAGE, after SOGROUPPAGE
235cdf0e10cSrcweir             m_reportDocument.getRecordParser().createRecordFieldNames();
236cdf0e10cSrcweir             CurReportLayouter.initialize(m_reportDocument.getContentPath());
237cdf0e10cSrcweir         }
238cdf0e10cSrcweir     }
239cdf0e10cSrcweir 
dialogFinish()240cdf0e10cSrcweir     private void dialogFinish()
241cdf0e10cSrcweir     {
242cdf0e10cSrcweir         this.xComponent.dispose();
243cdf0e10cSrcweir         if (bCloseDocument)
244cdf0e10cSrcweir         {
245cdf0e10cSrcweir             m_reportDocument.dispose();
246cdf0e10cSrcweir             return;
247cdf0e10cSrcweir         }
248cdf0e10cSrcweir 
249cdf0e10cSrcweir         if ((nReportMode == ReportFinalizer.SOCREATETEMPLATE)
250cdf0e10cSrcweir                 || (nReportMode == ReportFinalizer.SOUSETEMPLATE))
251cdf0e10cSrcweir         {
252cdf0e10cSrcweir             m_reportDocument.addReportToDBView();
253cdf0e10cSrcweir             boolean bOpenInDesign = (nReportMode == ReportFinalizer.SOCREATETEMPLATE);
254cdf0e10cSrcweir             m_reportDocument.createAndOpenReportDocument(m_sReportName, true, bOpenInDesign);
255cdf0e10cSrcweir         }
256cdf0e10cSrcweir         else
257cdf0e10cSrcweir         {
258cdf0e10cSrcweir             m_reportDocument.importReportData(this);
259cdf0e10cSrcweir             m_reportDocument.createAndOpenReportDocument(m_sReportName, false, false);
260cdf0e10cSrcweir         }
261cdf0e10cSrcweir     }
262cdf0e10cSrcweir 
executeQuery()263cdf0e10cSrcweir     private boolean executeQuery()
264cdf0e10cSrcweir     {
265cdf0e10cSrcweir         boolean bQueryCreated = false;
266cdf0e10cSrcweir         final RecordParser recordParser = m_reportDocument.getRecordParser();
267cdf0e10cSrcweir         final SQLQueryComposer sqlQueryComposer = recordParser.getSQLQueryComposer();
268cdf0e10cSrcweir         if (this.CurDBCommandFieldSelection.getSelectedCommandType() == CommandType.TABLE)
269cdf0e10cSrcweir         {
270cdf0e10cSrcweir             if (m_reportDocument instanceof ReportTextImplementation)
271cdf0e10cSrcweir             {
272cdf0e10cSrcweir                 bQueryCreated = sqlQueryComposer.setQueryCommand(this.xWindow, false, false);
273cdf0e10cSrcweir                 m_reportDocument.setCommandType(CommandType.COMMAND);
274cdf0e10cSrcweir                 String sQuery = sqlQueryComposer.getQuery();
275cdf0e10cSrcweir                 m_reportDocument.setCommand(sQuery);
276cdf0e10cSrcweir             }
277cdf0e10cSrcweir             else
278cdf0e10cSrcweir             {
279cdf0e10cSrcweir                 bQueryCreated = true;
280cdf0e10cSrcweir             }
281cdf0e10cSrcweir         }
282cdf0e10cSrcweir         else
283cdf0e10cSrcweir         {
284cdf0e10cSrcweir             try
285cdf0e10cSrcweir             {
286cdf0e10cSrcweir                 String sQueryName = CurDBCommandFieldSelection.getSelectedCommandName();
287cdf0e10cSrcweir                 DBMetaData.CommandObject oCommand = recordParser.getQueryByName(sQueryName);
288cdf0e10cSrcweir                 bHasEscapeProcessing = recordParser.hasEscapeProcessing(oCommand.getPropertySet());
289cdf0e10cSrcweir                 String sCommand = (String) oCommand.getPropertySet().getPropertyValue(PropertyNames.COMMAND);
290cdf0e10cSrcweir                 if (bHasEscapeProcessing)
291cdf0e10cSrcweir                 {
292cdf0e10cSrcweir                     // String sCommand = (String) oCommand.xPropertySet.getPropertyValue(PropertyNames.COMMAND);
293cdf0e10cSrcweir                     bQueryCreated = (!sCommand.equals(PropertyNames.EMPTY_STRING));
294cdf0e10cSrcweir                     if (m_reportDocument instanceof ReportTextImplementation)
295cdf0e10cSrcweir                     {
296cdf0e10cSrcweir                         sqlQueryComposer.m_xQueryAnalyzer.setQuery(sCommand);
297cdf0e10cSrcweir                         sqlQueryComposer.prependSortingCriteria();
298cdf0e10cSrcweir                         m_reportDocument.setCommandType(CommandType.COMMAND);
299cdf0e10cSrcweir                         m_reportDocument.setCommand(sqlQueryComposer.getQuery());
300cdf0e10cSrcweir                     }
301cdf0e10cSrcweir                 }
302cdf0e10cSrcweir                 else
303cdf0e10cSrcweir                 {
304cdf0e10cSrcweir                     m_reportDocument.setCommandType(CommandType.COMMAND);
305cdf0e10cSrcweir                     m_reportDocument.setCommand(sCommand);
306cdf0e10cSrcweir                 }
307cdf0e10cSrcweir                 bQueryCreated = true;
308cdf0e10cSrcweir             }
309cdf0e10cSrcweir             catch (Exception e)
310cdf0e10cSrcweir             {
311cdf0e10cSrcweir                 e.printStackTrace(System.out);
312cdf0e10cSrcweir             }
313cdf0e10cSrcweir         }
314cdf0e10cSrcweir         if (!bQueryCreated)
315cdf0e10cSrcweir         {
316cdf0e10cSrcweir             super.vetoableChange(null);
317cdf0e10cSrcweir         }
318cdf0e10cSrcweir         return bQueryCreated;
319cdf0e10cSrcweir     }
320cdf0e10cSrcweir 
buildSteps()321cdf0e10cSrcweir     public void buildSteps()
322cdf0e10cSrcweir     {
323cdf0e10cSrcweir         // CurReportDocument.getDoc().xProgressBar.setValue(30);
324cdf0e10cSrcweir         CurDBCommandFieldSelection = new CommandFieldSelection(this, m_reportDocument.getRecordParser(), 100, slblFields, slblSelFields, slblTables, true, 34330);
325cdf0e10cSrcweir         CurDBCommandFieldSelection.addFieldSelectionListener(new FieldSelectionListener());
326cdf0e10cSrcweir         if (!isReportBuilderInstalled())
327cdf0e10cSrcweir         {
328cdf0e10cSrcweir             insertLabel("lblBinaryFields",
329cdf0e10cSrcweir                     new String[]
330cdf0e10cSrcweir                     {
331cdf0e10cSrcweir                         PropertyNames.PROPERTY_HEIGHT, PropertyNames.PROPERTY_LABEL, PropertyNames.PROPERTY_POSITION_X, PropertyNames.PROPERTY_POSITION_Y, PropertyNames.PROPERTY_STEP, PropertyNames.PROPERTY_WIDTH
332cdf0e10cSrcweir                     },
333cdf0e10cSrcweir                     new Object[]
334cdf0e10cSrcweir                     {
335cdf0e10cSrcweir                         16, sShowBinaryFields, 95, 162, 1, 210
336cdf0e10cSrcweir                     });
337cdf0e10cSrcweir         }
338cdf0e10cSrcweir         // CurReportDocument.getDoc().xProgressBar.setValue(40);
339cdf0e10cSrcweir         CurTitlesComponent = new TitlesComponent(this, SOTITLEPAGE, 97, 37, 210, 7, slblColumnNames, slblColumnTitles, 34381);
340cdf0e10cSrcweir         CurTitlesComponent.addTextListener(this);
341cdf0e10cSrcweir         // CurReportDocument.getDoc().xProgressBar.setValue(50);
342cdf0e10cSrcweir         CurGroupFieldHandler = new GroupFieldHandler(m_reportDocument, this);
343cdf0e10cSrcweir         // CurReportDocument.getDoc().xProgressBar.setValue(60);
344cdf0e10cSrcweir         CurSortingComponent = new SortingComponent(this, SOSORTPAGE, 95, 30, 210, 34346);
345cdf0e10cSrcweir         // CurReportDocument.getDoc().xProgressBar.setValue(70);
346cdf0e10cSrcweir         CurReportLayouter = new ReportLayouter(xMSF, m_reportDocument, this);
347cdf0e10cSrcweir         // CurReportDocument.getDoc().xProgressBar.setValue(80);
348cdf0e10cSrcweir         CurReportFinalizer = new ReportFinalizer(xMSF, m_reportDocument, this);
349cdf0e10cSrcweir         // CurReportDocument.getDoc().xProgressBar.setValue(100);
350cdf0e10cSrcweir         bCloseDocument = true;
351cdf0e10cSrcweir         // CurReportDocument.getDoc().xProgressBar.end();
352cdf0e10cSrcweir         enableNavigationButtons(false, false, false);
353cdf0e10cSrcweir     }
354cdf0e10cSrcweir 
finishWizard()355cdf0e10cSrcweir     public boolean finishWizard()
356cdf0e10cSrcweir     {
357cdf0e10cSrcweir         final int ncurStep = getCurrentStep();
358cdf0e10cSrcweir         if ((switchToStep(ncurStep, SOSTOREPAGE)) || (ncurStep == SOSTOREPAGE))
359cdf0e10cSrcweir         {
360cdf0e10cSrcweir             if (this.executeQuery())
361cdf0e10cSrcweir             {
362cdf0e10cSrcweir                 if (CurReportFinalizer.finish())
363cdf0e10cSrcweir                 {
364cdf0e10cSrcweir                     nReportMode = CurReportFinalizer.getReportOpenMode();
365cdf0e10cSrcweir                     m_sReportName = CurReportFinalizer.getStoreName();
366cdf0e10cSrcweir                     xDialog.endExecute();
367cdf0e10cSrcweir                     return true;
368cdf0e10cSrcweir                 }
369cdf0e10cSrcweir             }
370cdf0e10cSrcweir         }
371cdf0e10cSrcweir         return false;
372cdf0e10cSrcweir     }
373cdf0e10cSrcweir 
cancelWizard()374cdf0e10cSrcweir     public void cancelWizard()
375cdf0e10cSrcweir     {
376cdf0e10cSrcweir         xDialog.endExecute();
377cdf0e10cSrcweir     }
378cdf0e10cSrcweir 
insertQueryRelatedSteps()379cdf0e10cSrcweir     public void insertQueryRelatedSteps()
380cdf0e10cSrcweir     {
381cdf0e10cSrcweir         setRMItemLabels(m_oResource, UIConsts.RID_QUERY + 80);
382cdf0e10cSrcweir         addRoadmap();
383cdf0e10cSrcweir         int i = 0;
384cdf0e10cSrcweir         i = insertRoadmapItem(0, true, m_oResource.getResText(UIConsts.RID_QUERY + 80), SOMAINPAGE);
385cdf0e10cSrcweir         i = insertRoadmapItem(i, false, m_oResource.getResText(UIConsts.RID_REPORT + 68), SOTITLEPAGE);
386cdf0e10cSrcweir         i = insertRoadmapItem(i, false, m_oResource.getResText(UIConsts.RID_REPORT + 11), SOGROUPPAGE);
387cdf0e10cSrcweir         i = insertRoadmapItem(i, false, m_oResource.getResText(UIConsts.RID_REPORT + 12), SOSORTPAGE);       // Orderby is always supported
388cdf0e10cSrcweir         i = insertRoadmapItem(i, false, m_oResource.getResText(UIConsts.RID_REPORT + 13), SOTEMPLATEPAGE);
389cdf0e10cSrcweir         i = insertRoadmapItem(i, false, m_oResource.getResText(UIConsts.RID_REPORT + 14), SOSTOREPAGE);
390cdf0e10cSrcweir         setRoadmapInteractive(true);
391cdf0e10cSrcweir         setRoadmapComplete(true);
392cdf0e10cSrcweir         setCurrentRoadmapItemID((short) 1);
393cdf0e10cSrcweir     }
394cdf0e10cSrcweir 
isReportBuilderInstalled()395cdf0e10cSrcweir     private boolean isReportBuilderInstalled()
396cdf0e10cSrcweir     {
397cdf0e10cSrcweir         //! Check if the new Report Builder Extension is available
398cdf0e10cSrcweir         XContentEnumerationAccess a = com.sun.star.uno.UnoRuntime.queryInterface(XContentEnumerationAccess.class, xMSF);
399cdf0e10cSrcweir         com.sun.star.container.XEnumeration e = a.createContentEnumeration("com.sun.star.report.pentaho.SOReportJobFactory");
400cdf0e10cSrcweir         if (e == null)
401cdf0e10cSrcweir         {
402cdf0e10cSrcweir             return false;
403cdf0e10cSrcweir         }
404cdf0e10cSrcweir         return e.hasMoreElements();
405cdf0e10cSrcweir         }
406cdf0e10cSrcweir 
407cdf0e10cSrcweir     /**
408cdf0e10cSrcweir      * Return the path to the "com.sun.reportdesigner" extension
409cdf0e10cSrcweir      * @param _xMSF
410cdf0e10cSrcweir      * @return
411cdf0e10cSrcweir      */
getPathToExtension(XMultiServiceFactory _xMSF)412cdf0e10cSrcweir     public static String getPathToExtension(XMultiServiceFactory _xMSF)
413cdf0e10cSrcweir     {
414cdf0e10cSrcweir         // Get the path to the extension and try to add the path to the class loader
415cdf0e10cSrcweir         final XComponentContext xComponentContext = Helper.getComponentContext(_xMSF);
416cdf0e10cSrcweir         final Object aSingleton = xComponentContext.getValueByName("/singletons/com.sun.star.deployment.PackageInformationProvider");
417cdf0e10cSrcweir         XPackageInformationProvider xProvider = UnoRuntime.queryInterface(XPackageInformationProvider.class, aSingleton);
418cdf0e10cSrcweir         return xProvider.getPackageLocation("com.sun.reportdesigner");
419cdf0e10cSrcweir     }
420cdf0e10cSrcweir     private static XLogger m_xLogger;
421cdf0e10cSrcweir 
initializeLogger(XMultiServiceFactory _xMSF)422cdf0e10cSrcweir     private static void initializeLogger(XMultiServiceFactory _xMSF)
423cdf0e10cSrcweir     {
424cdf0e10cSrcweir         XComponentContext xContext = Helper.getComponentContext(_xMSF);
425cdf0e10cSrcweir 
426cdf0e10cSrcweir         final Object aLoggerPool = xContext.getValueByName("/singletons/com.sun.star.logging.LoggerPool");
427cdf0e10cSrcweir         if (aLoggerPool == null)
428cdf0e10cSrcweir         {
429cdf0e10cSrcweir             System.out.println("Can't get singleton from logging");
430cdf0e10cSrcweir         }
431cdf0e10cSrcweir         final XLoggerPool xLoggerPool = UnoRuntime.queryInterface(XLoggerPool.class, aLoggerPool);
432cdf0e10cSrcweir         m_xLogger = xLoggerPool.getNamedLogger("com.sun.star.wizards.ReportBuilder");
433cdf0e10cSrcweir     }
434cdf0e10cSrcweir 
getLogger()435cdf0e10cSrcweir     public static XLogger getLogger()
436cdf0e10cSrcweir     {
437cdf0e10cSrcweir         return m_xLogger;
438cdf0e10cSrcweir     }
439cdf0e10cSrcweir 
startReportWizard()440cdf0e10cSrcweir     public void startReportWizard()
441cdf0e10cSrcweir     {
442cdf0e10cSrcweir         initializeLogger(xMSF);
443cdf0e10cSrcweir         getLogger().log(LogLevel.SEVERE, "Start Report Wizard");
444cdf0e10cSrcweir 
445cdf0e10cSrcweir         if (isReportBuilderInstalled())
446cdf0e10cSrcweir         {
447cdf0e10cSrcweir             // Get the path to the extension and try to add the path to the class loader
448cdf0e10cSrcweir             String sLocation = getPathToExtension(xMSF);
449cdf0e10cSrcweir             // TODO: Umlaut in filename!
450cdf0e10cSrcweir             if (sLocation.length() > 0)
451cdf0e10cSrcweir             {
452cdf0e10cSrcweir                 try
453cdf0e10cSrcweir                 {
454cdf0e10cSrcweir                     URI aLocationURI = URI.create(sLocation + "/" + "reportbuilderwizard.jar");
455cdf0e10cSrcweir 
456cdf0e10cSrcweir                     URL[] aURLs = new URL[1];
457cdf0e10cSrcweir                     aURLs[0] = aLocationURI.toURL();
458cdf0e10cSrcweir                     URLClassLoader aClassLoader = new URLClassLoader(aURLs, this.getClass().getClassLoader());
459cdf0e10cSrcweir                     Class a = aClassLoader.loadClass("com.sun.star.wizards.reportbuilder.ReportBuilderImplementation");
460cdf0e10cSrcweir                     Method aMethod = a.getMethod("create", new Class[]
461cdf0e10cSrcweir                             {
462cdf0e10cSrcweir                                 XMultiServiceFactory.class
463cdf0e10cSrcweir                             });
464cdf0e10cSrcweir                     m_reportDocument = (IReportDocument) aMethod.invoke(a, xMSF
465cdf0e10cSrcweir                             );
466cdf0e10cSrcweir                 }
467cdf0e10cSrcweir                 catch (Exception e)
468cdf0e10cSrcweir                 {
469cdf0e10cSrcweir                     // Maybe problems in URI create() if a wrong char is used like '[' ']', ...
470cdf0e10cSrcweir                     System.out.println("There could be a problem with the path '" + sLocation + "'");
471cdf0e10cSrcweir                 }
472cdf0e10cSrcweir             }
473cdf0e10cSrcweir         }
474cdf0e10cSrcweir 
475cdf0e10cSrcweir         try
476cdf0e10cSrcweir         {
477cdf0e10cSrcweir             if (m_reportDocument == null)
478cdf0e10cSrcweir             {
479cdf0e10cSrcweir                 // Fallback, if there is no reportbuilder wizard implementation, we use the old wizard
480cdf0e10cSrcweir                 m_reportDocument = new ReportTextImplementation(xMSF);
481cdf0e10cSrcweir             }
482cdf0e10cSrcweir 
483cdf0e10cSrcweir             m_reportDocument.initialize(m_docUI, m_oResource);
484cdf0e10cSrcweir 
485cdf0e10cSrcweir             if (m_reportDocument.getRecordParser().getConnection(m_wizardContext))
486cdf0e10cSrcweir             {
487cdf0e10cSrcweir                 buildSteps();
488cdf0e10cSrcweir 
489cdf0e10cSrcweir                 m_reportDocument.checkInvariants();
490cdf0e10cSrcweir 
491cdf0e10cSrcweir                 this.CurDBCommandFieldSelection.preselectCommand(m_wizardContext, false);
492cdf0e10cSrcweir 
493cdf0e10cSrcweir                 createWindowPeer(m_reportDocument.getWizardParent());
494cdf0e10cSrcweir 
495cdf0e10cSrcweir                 m_reportDocument.getRecordParser().setWindowPeer(this.xControl.getPeer());
496cdf0e10cSrcweir                 insertQueryRelatedSteps();
497cdf0e10cSrcweir                 short RetValue = executeDialog(m_reportDocument.getFrame().getComponentWindow().getPosSize());
498cdf0e10cSrcweir                 if (RetValue == 0)
499cdf0e10cSrcweir                 {
500cdf0e10cSrcweir                     dialogFinish();
501cdf0e10cSrcweir                 }
502cdf0e10cSrcweir             }
503cdf0e10cSrcweir             m_reportDocument.getRecordParser().dispose();
504cdf0e10cSrcweir         }
505cdf0e10cSrcweir         catch (java.io.IOException e)
506cdf0e10cSrcweir         {
507cdf0e10cSrcweir             String sMessage = e.getMessage();
508cdf0e10cSrcweir             if (sMessage.equals("default.otr"))
509cdf0e10cSrcweir             {
510cdf0e10cSrcweir                 sMessage = m_oResource.getResText(UIConsts.RID_REPORT + 92);
511cdf0e10cSrcweir             }
512cdf0e10cSrcweir             else
513cdf0e10cSrcweir             {
514cdf0e10cSrcweir             }
515cdf0e10cSrcweir             // show a dialog with the error message
516cdf0e10cSrcweir             SystemDialog.showMessageBox(xMSF, "ErrorBox", VclWindowPeerAttribute.OK, sMessage);
517cdf0e10cSrcweir         }
518cdf0e10cSrcweir         catch (java.lang.Exception jexception)
519cdf0e10cSrcweir         {
520cdf0e10cSrcweir             jexception.printStackTrace(System.out);
521cdf0e10cSrcweir         }
522cdf0e10cSrcweir     }
523cdf0e10cSrcweir 
importReportData(final XMultiServiceFactory xMSF, final Dataimport CurDataimport)524cdf0e10cSrcweir     public void importReportData(final XMultiServiceFactory xMSF, final Dataimport CurDataimport)
525cdf0e10cSrcweir     {
526cdf0e10cSrcweir         boolean bDocisStored = false;
527cdf0e10cSrcweir         try
528cdf0e10cSrcweir         {
529cdf0e10cSrcweir             boolean bexecute = false;
530cdf0e10cSrcweir             if (!bHasEscapeProcessing)
531cdf0e10cSrcweir             {
532cdf0e10cSrcweir                 bexecute = m_reportDocument.getRecordParser().executeCommand(com.sun.star.sdb.CommandType.QUERY);   //            sMsgQueryCreationImpossible + (char) 13 + sMsgEndAutopilot))
533cdf0e10cSrcweir             }
534cdf0e10cSrcweir             else
535cdf0e10cSrcweir             {
536cdf0e10cSrcweir                 bexecute = m_reportDocument.getRecordParser().executeCommand(com.sun.star.sdb.CommandType.COMMAND);   //            sMsgQueryCreationImpossible + (char) 13 + sMsgEndAutopilot))
537cdf0e10cSrcweir             }
538cdf0e10cSrcweir             if (bexecute)
539cdf0e10cSrcweir             {
540cdf0e10cSrcweir                 bexecute = m_reportDocument.getRecordParser().getFields(m_reportDocument.getRecordParser().getFieldNames(), false);
541cdf0e10cSrcweir             }
542cdf0e10cSrcweir             if (bexecute)
543cdf0e10cSrcweir             {
544cdf0e10cSrcweir                 // CurDataimport.insertDatabaseDatatoReportDocument(xMSF);
545cdf0e10cSrcweir                 m_reportDocument.insertDatabaseDatatoReportDocument(xMSF);
546cdf0e10cSrcweir             }
547cdf0e10cSrcweir 
548cdf0e10cSrcweir             if (CurReportFinalizer.getReportOpenMode() == ReportFinalizer.SOCREATEDOCUMENT)
549cdf0e10cSrcweir             {
550cdf0e10cSrcweir                 bDocisStored = m_reportDocument.getRecordParser().storeDatabaseDocumentToTempPath(m_reportDocument.getComponent(), CurReportFinalizer.getStoreName());
551cdf0e10cSrcweir             }
552cdf0e10cSrcweir         }
553cdf0e10cSrcweir         catch (com.sun.star.wizards.common.InvalidQueryException queryexception)
554cdf0e10cSrcweir         {
555cdf0e10cSrcweir         }
556cdf0e10cSrcweir         CurDataimport.xComponent.dispose();
557cdf0e10cSrcweir         if (bDocisStored)
558cdf0e10cSrcweir         {
559cdf0e10cSrcweir             m_reportDocument.getRecordParser().addReportDocument(m_reportDocument.getComponent(), false);
560cdf0e10cSrcweir         }
561cdf0e10cSrcweir 
562cdf0e10cSrcweir         m_reportDocument.getRecordParser().dispose();
563cdf0e10cSrcweir     }
564cdf0e10cSrcweir 
getReportResources(boolean bgetProgressResourcesOnly)565cdf0e10cSrcweir     public boolean getReportResources(boolean bgetProgressResourcesOnly)
566cdf0e10cSrcweir     {
567cdf0e10cSrcweir         sMsgWizardName = super.m_oResource.getResText(UIConsts.RID_REPORT);
568cdf0e10cSrcweir         if (!bgetProgressResourcesOnly)
569cdf0e10cSrcweir         {
570cdf0e10cSrcweir             sShowBinaryFields = m_oResource.getResText(UIConsts.RID_REPORT + 60);
571cdf0e10cSrcweir             slblTables = m_oResource.getResText(UIConsts.RID_FORM + 6);
572cdf0e10cSrcweir             slblFields = m_oResource.getResText(UIConsts.RID_FORM + 12);
573cdf0e10cSrcweir             slblSelFields = m_oResource.getResText(UIConsts.RID_REPORT + 9);
574cdf0e10cSrcweir             WizardHeaderText[0] = m_oResource.getResText(UIConsts.RID_REPORT + 28);
575cdf0e10cSrcweir             WizardHeaderText[1] = m_oResource.getResText(UIConsts.RID_REPORT + 69);
576cdf0e10cSrcweir             WizardHeaderText[2] = m_oResource.getResText(UIConsts.RID_REPORT + 29);
577cdf0e10cSrcweir             WizardHeaderText[3] = m_oResource.getResText(UIConsts.RID_REPORT + 30);
578cdf0e10cSrcweir             WizardHeaderText[4] = m_oResource.getResText(UIConsts.RID_REPORT + 31);
579cdf0e10cSrcweir             WizardHeaderText[5] = m_oResource.getResText(UIConsts.RID_REPORT + 32);
580cdf0e10cSrcweir         }
581cdf0e10cSrcweir         slblColumnTitles = m_oResource.getResText(UIConsts.RID_REPORT + 70);
582cdf0e10cSrcweir         slblColumnNames = m_oResource.getResText(UIConsts.RID_REPORT + 71);
583cdf0e10cSrcweir         return true;
584cdf0e10cSrcweir     }
585cdf0e10cSrcweir 
getBlindTextNote(Object _aDocument, Resource _oResource)586cdf0e10cSrcweir     public static String getBlindTextNote(Object _aDocument, Resource _oResource)
587cdf0e10cSrcweir     {
588cdf0e10cSrcweir         String sBlindTextNote = PropertyNames.EMPTY_STRING;
589cdf0e10cSrcweir         if (_aDocument instanceof ReportTextImplementation)
590cdf0e10cSrcweir         {
591cdf0e10cSrcweir             sBlindTextNote = _oResource.getResText(UIConsts.RID_REPORT + 75);
592cdf0e10cSrcweir             sBlindTextNote = JavaTools.replaceSubString(sBlindTextNote, String.valueOf((char) 13), "<BR>");
593cdf0e10cSrcweir         }
594cdf0e10cSrcweir         return sBlindTextNote;
595cdf0e10cSrcweir     }
596cdf0e10cSrcweir 
enableRoadmapItems(boolean _bEnabled)597cdf0e10cSrcweir     public void enableRoadmapItems(boolean _bEnabled)
598cdf0e10cSrcweir     {
599cdf0e10cSrcweir         try
600cdf0e10cSrcweir         {
601cdf0e10cSrcweir             Object oRoadmapItem = null;
602cdf0e10cSrcweir             int CurStep = AnyConverter.toInt(Helper.getUnoPropertyValue(xDialogModel, PropertyNames.PROPERTY_STEP));
603cdf0e10cSrcweir             boolean bEnabled = false;
604cdf0e10cSrcweir             int CurItemID;
605cdf0e10cSrcweir             for (int i = 0; i < getRMItemCount(); i++)
606cdf0e10cSrcweir             {
607cdf0e10cSrcweir                 oRoadmapItem = this.xIndexContRoadmap.getByIndex(i);
608cdf0e10cSrcweir                 CurItemID = AnyConverter.toInt(Helper.getUnoPropertyValue(oRoadmapItem, "ID"));
609cdf0e10cSrcweir                 if (CurItemID > CurStep)
610cdf0e10cSrcweir                 {
611cdf0e10cSrcweir                     bEnabled = _bEnabled;
612cdf0e10cSrcweir                 }
613cdf0e10cSrcweir                 else
614cdf0e10cSrcweir                 {
615cdf0e10cSrcweir                     bEnabled = true;
616cdf0e10cSrcweir                 }
617cdf0e10cSrcweir 
618cdf0e10cSrcweir                 Helper.setUnoPropertyValue(oRoadmapItem, PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(bEnabled));
619cdf0e10cSrcweir             }
620cdf0e10cSrcweir         }
621cdf0e10cSrcweir         catch (com.sun.star.uno.Exception exception)
622cdf0e10cSrcweir         {
623cdf0e10cSrcweir             exception.printStackTrace(System.out);
624cdf0e10cSrcweir         }
625cdf0e10cSrcweir     }
626cdf0e10cSrcweir 
enableWizardSteps(String[] NewItems)627cdf0e10cSrcweir     private void enableWizardSteps(String[] NewItems)
628cdf0e10cSrcweir     {
629cdf0e10cSrcweir         boolean bEnabled = NewItems.length > 0;
630cdf0e10cSrcweir         setControlProperty("btnWizardNext", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(bEnabled));
631cdf0e10cSrcweir         setControlProperty("btnWizardFinish", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(bEnabled));
632cdf0e10cSrcweir         enableRoadmapItems(bEnabled);   // Note: Performancewise this could be improved
633cdf0e10cSrcweir     }
634cdf0e10cSrcweir 
textChanged(TextEvent xTextEvent)635cdf0e10cSrcweir     public void textChanged(TextEvent xTextEvent)
636cdf0e10cSrcweir     {
637cdf0e10cSrcweir         try
638cdf0e10cSrcweir         {
639cdf0e10cSrcweir             Object oModel = UnoDialog.getModel(xTextEvent.Source);
640cdf0e10cSrcweir             String sContent = (String) Helper.getUnoPropertyValue(oModel, "Text");
641cdf0e10cSrcweir             String fieldname = this.CurTitlesComponent.getFieldNameByTitleControl(oModel);
642cdf0e10cSrcweir             // CurReportDocument.getDoc().oTextFieldHandler.changeUserFieldContent(fieldname, sfieldtitle);
643cdf0e10cSrcweir             m_reportDocument.liveupdate_changeUserFieldContent(fieldname, sContent);
644cdf0e10cSrcweir         }
645cdf0e10cSrcweir         catch (Exception exception)
646cdf0e10cSrcweir         {
647cdf0e10cSrcweir             exception.printStackTrace(System.out);
648cdf0e10cSrcweir         }
649cdf0e10cSrcweir     }
650cdf0e10cSrcweir 
disposing(EventObject EventObject)651cdf0e10cSrcweir     public void disposing(EventObject EventObject)
652cdf0e10cSrcweir     {
653cdf0e10cSrcweir     }
654cdf0e10cSrcweir 
setmodified(int _ndialogpage, Object ooldValue, Object onewValue)655cdf0e10cSrcweir     public void setmodified(int _ndialogpage, Object ooldValue, Object onewValue)
656cdf0e10cSrcweir     {
657cdf0e10cSrcweir         switch (_ndialogpage)
658cdf0e10cSrcweir         {
659cdf0e10cSrcweir             case SOMAINPAGE:
660cdf0e10cSrcweir                 break;
661cdf0e10cSrcweir             default:
662cdf0e10cSrcweir                 break;
663cdf0e10cSrcweir         }
664cdf0e10cSrcweir     }
665cdf0e10cSrcweir 
toggleSortingPage()666cdf0e10cSrcweir     private void toggleSortingPage()
667cdf0e10cSrcweir     {
668cdf0e10cSrcweir         int nlCommandType = this.CurDBCommandFieldSelection.getSelectedCommandType();
669cdf0e10cSrcweir         boolean bdoenable = (nlCommandType == CommandType.TABLE);
670cdf0e10cSrcweir         if (!bdoenable)
671cdf0e10cSrcweir         {
672cdf0e10cSrcweir             String sQueryName = CurDBCommandFieldSelection.getSelectedCommandName();
673cdf0e10cSrcweir             DBMetaData.CommandObject oCommand = m_reportDocument.getRecordParser().getQueryByName(sQueryName);
674cdf0e10cSrcweir             bdoenable = m_reportDocument.getRecordParser().hasEscapeProcessing(oCommand.getPropertySet());
675cdf0e10cSrcweir         }
676cdf0e10cSrcweir         super.setStepEnabled(SOSORTPAGE, bdoenable);
677cdf0e10cSrcweir 
678cdf0e10cSrcweir         // int nCommandType = this.CurDBCommandFieldSelection.getSelectedCommandType();
679cdf0e10cSrcweir         // super.setStepEnabled(SOSORTPAGE, (nCommandType == CommandType.TABLE));
680cdf0e10cSrcweir     }
681cdf0e10cSrcweir 
682cdf0e10cSrcweir     public class FieldSelectionListener implements com.sun.star.wizards.ui.XFieldSelectionListener
683cdf0e10cSrcweir     {
684cdf0e10cSrcweir 
685cdf0e10cSrcweir         protected int m_nID;
686cdf0e10cSrcweir 
getID()687cdf0e10cSrcweir         public int getID()
688cdf0e10cSrcweir         {
689cdf0e10cSrcweir             return m_nID;
690cdf0e10cSrcweir         }
691cdf0e10cSrcweir 
setID(String sIncSuffix)692cdf0e10cSrcweir         public void setID(String sIncSuffix)
693cdf0e10cSrcweir         {
694cdf0e10cSrcweir             m_nID = 1;
695cdf0e10cSrcweir             if (sIncSuffix != null)
696cdf0e10cSrcweir             {
697cdf0e10cSrcweir                 if ((!sIncSuffix.equals(PropertyNames.EMPTY_STRING)) && (!sIncSuffix.equals("_")))
698cdf0e10cSrcweir                 {
699cdf0e10cSrcweir                     String sID = JavaTools.ArrayoutofString(sIncSuffix, "_")[1];
700cdf0e10cSrcweir                     m_nID = Integer.parseInt(sID);
701cdf0e10cSrcweir                 }
702cdf0e10cSrcweir             }
703cdf0e10cSrcweir         }
704cdf0e10cSrcweir 
shiftFromLeftToRight(String[] SelItems, String[] NewItems)705cdf0e10cSrcweir         public void shiftFromLeftToRight(String[] SelItems, String[] NewItems)
706cdf0e10cSrcweir         {
707cdf0e10cSrcweir             if (m_nID == 1)
708cdf0e10cSrcweir             {
709cdf0e10cSrcweir                 CurDBCommandFieldSelection.setModified(true);
710cdf0e10cSrcweir                 enableWizardSteps(NewItems);
711cdf0e10cSrcweir                 toggleSortingPage();
712cdf0e10cSrcweir             }
713cdf0e10cSrcweir             else
714cdf0e10cSrcweir             {
715cdf0e10cSrcweir                 boolean bEnabled = (CurGroupFieldSelection.getSelectedFieldNames().length > 0);
716cdf0e10cSrcweir                 Helper.setUnoPropertyValue(getRoadmapItemByID(SOGROUPPAGE), PropertyNames.PROPERTY_ENABLED, bEnabled);
717cdf0e10cSrcweir             }
718cdf0e10cSrcweir         }
719cdf0e10cSrcweir 
shiftFromRightToLeft(String[] SelItems, String[] NewItems)720cdf0e10cSrcweir         public void shiftFromRightToLeft(String[] SelItems, String[] NewItems)
721cdf0e10cSrcweir         {
722cdf0e10cSrcweir             // TODO When the ListFieldbox is refilled only fields of the current Command may be merged into the Listbox
723cdf0e10cSrcweir             if (m_nID == 1)
724cdf0e10cSrcweir             {
725cdf0e10cSrcweir                 enableWizardSteps(NewItems);
726cdf0e10cSrcweir                 CurDBCommandFieldSelection.setModified(true);
727cdf0e10cSrcweir             }
728cdf0e10cSrcweir             else
729cdf0e10cSrcweir             {
730cdf0e10cSrcweir                 boolean bEnabled = (CurGroupFieldSelection.getSelectedFieldNames().length > 0);
731cdf0e10cSrcweir                 Helper.setUnoPropertyValue(getRoadmapItemByID(SOGROUPPAGE), PropertyNames.PROPERTY_ENABLED, bEnabled);
732cdf0e10cSrcweir             }
733cdf0e10cSrcweir         }
734cdf0e10cSrcweir 
moveItemDown(String item)735cdf0e10cSrcweir         public void moveItemDown(String item)
736cdf0e10cSrcweir         {
737cdf0e10cSrcweir         }
738cdf0e10cSrcweir 
moveItemUp(String item)739cdf0e10cSrcweir         public void moveItemUp(String item)
740cdf0e10cSrcweir         {
741cdf0e10cSrcweir         }
742cdf0e10cSrcweir     }
743cdf0e10cSrcweir //    public void tests()
744cdf0e10cSrcweir //    {
745cdf0e10cSrcweir //
746cdf0e10cSrcweir //        Calendar aCalendar = new GregorianCalendar();
747cdf0e10cSrcweir //        aCalendar.setTimeInMillis(1202382900000L);
748cdf0e10cSrcweir //        String aCalStr = aCalendar.toString();
749cdf0e10cSrcweir //
750cdf0e10cSrcweir //        Date aDate = new Date();
751cdf0e10cSrcweir //        aDate.setSeconds(0);
752cdf0e10cSrcweir //        aDate.setMinutes(15);
753cdf0e10cSrcweir //        aDate.setHours(12);
754cdf0e10cSrcweir //        // aDate.setMonth(2);
755cdf0e10cSrcweir //        // aDate.setYear(2008);
756cdf0e10cSrcweir //        // aDate.setDay(7);
757cdf0e10cSrcweir //        long nTime = aDate.getTime();
758cdf0e10cSrcweir //        Long aLong = new Long(nTime);
759cdf0e10cSrcweir //        String aStr = aLong.toString();
760cdf0e10cSrcweir //
761cdf0e10cSrcweir //        Date aNewDate = new Date(1202382900000L);
762cdf0e10cSrcweir ////         aNewDate.
763cdf0e10cSrcweir //        String aDateStr = aNewDate.toString();
764cdf0e10cSrcweir ////         Datetime aNewTime = new Time(1202382900);
765cdf0e10cSrcweir ////         String aTimeStr = aNewTime.toString();
766cdf0e10cSrcweir //
767cdf0e10cSrcweir //    }
768cdf0e10cSrcweir }
769