| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| package com.sun.star.wizards.report; |
| |
| // import java.util.Vector; |
| import com.sun.star.awt.TextEvent; |
| import com.sun.star.awt.VclWindowPeerAttribute; |
| import com.sun.star.awt.XTextListener; |
| import com.sun.star.beans.PropertyValue; |
| |
| import com.sun.star.container.XContentEnumerationAccess; |
| import com.sun.star.deployment.XPackageInformationProvider; |
| import com.sun.star.lang.EventObject; |
| import com.sun.star.lang.XMultiServiceFactory; |
| import com.sun.star.logging.XLogger; |
| import com.sun.star.logging.XLoggerPool; |
| import com.sun.star.sdb.CommandType; |
| |
| import com.sun.star.uno.AnyConverter; |
| import com.sun.star.uno.UnoRuntime; |
| import com.sun.star.uno.XComponentContext; |
| |
| import com.sun.star.logging.LogLevel; |
| import com.sun.star.wizards.common.Helper; |
| import com.sun.star.wizards.common.JavaTools; |
| import com.sun.star.wizards.common.Resource; |
| import com.sun.star.wizards.common.SystemDialog; |
| import com.sun.star.wizards.common.PropertyNames; |
| import com.sun.star.wizards.db.DBMetaData; |
| import com.sun.star.wizards.db.DatabaseObjectWizard; |
| import com.sun.star.wizards.db.RecordParser; |
| import com.sun.star.wizards.db.SQLQueryComposer; |
| import com.sun.star.wizards.ui.CommandFieldSelection; |
| import com.sun.star.wizards.ui.FieldSelection; |
| import com.sun.star.wizards.ui.SortingComponent; |
| import com.sun.star.wizards.ui.TitlesComponent; |
| import com.sun.star.wizards.ui.UIConsts; |
| import com.sun.star.wizards.ui.UnoDialog; |
| import com.sun.star.wizards.ui.XCompletion; |
| import java.lang.reflect.Method; |
| import java.net.URI; |
| import java.net.URL; |
| import java.net.URLClassLoader; |
| import java.util.Map; |
| |
| public class ReportWizard extends DatabaseObjectWizard implements XTextListener, XCompletion |
| { |
| |
| protected FieldSelection CurGroupFieldSelection; |
| private SortingComponent CurSortingComponent; |
| private TitlesComponent CurTitlesComponent; |
| private CommandFieldSelection CurDBCommandFieldSelection; |
| private GroupFieldHandler CurGroupFieldHandler; |
| private ReportLayouter CurReportLayouter; |
| private ReportFinalizer CurReportFinalizer; |
| private int nReportMode = ReportFinalizer.SOCREATEDOCUMENT; |
| private String m_sReportName = PropertyNames.EMPTY_STRING; |
| protected static final String SOREPORTFORMNAME = "ReportSource"; |
| private static final int SOMAINPAGE = 1; |
| private static final int SOTITLEPAGE = 2; |
| protected static final int SOGROUPPAGE = 3; |
| private static final int SOSORTPAGE = 4; |
| protected static final int SOTEMPLATEPAGE = 5; |
| protected static final int SOSTOREPAGE = 6; |
| private IReportDocument m_reportDocument; |
| private static String sMsgWizardName; |
| private static String slblFields; |
| private static String slblSelFields; |
| private static String sShowBinaryFields; |
| private String[] WizardHeaderText = new String[6]; |
| private static String slblColumnTitles; |
| private static String slblColumnNames; |
| private static String slblTables; |
| protected static boolean bCloseDocument; |
| private boolean bHasEscapeProcessing = true; |
| |
| public ReportWizard(XMultiServiceFactory i_serviceFactory, final PropertyValue[] i_wizardContext) |
| { |
| super(i_serviceFactory, 34320, i_wizardContext); |
| super.addResourceHandler("Report Wizard", "dbw"); |
| if (getReportResources(false)) |
| { |
| Helper.setUnoPropertyValues(xDialogModel, |
| new String[] |
| { |
| PropertyNames.PROPERTY_HEIGHT, |
| PropertyNames.PROPERTY_MOVEABLE, |
| PropertyNames.PROPERTY_NAME, |
| PropertyNames.PROPERTY_POSITION_X, |
| PropertyNames.PROPERTY_POSITION_Y, |
| PropertyNames.PROPERTY_STEP, |
| PropertyNames.PROPERTY_TABINDEX, |
| PropertyNames.PROPERTY_TITLE, |
| PropertyNames.PROPERTY_WIDTH |
| }, |
| new Object[] |
| { |
| Integer.valueOf(210), |
| Boolean.TRUE, |
| "DialogReport", |
| 102, |
| 41, |
| 1, |
| new Short((short) 0), |
| sMsgWizardName, |
| 310 |
| }); |
| drawNaviBar(); |
| setRightPaneHeaders(this.WizardHeaderText); |
| } |
| } |
| |
| protected void enterStep(int nOldStep, int nNewStep) |
| { |
| if ((nOldStep >= SOTEMPLATEPAGE) && (nNewStep < SOTEMPLATEPAGE)) |
| { |
| // CurReportDocument.getDoc().oTextSectionHandler.removeTextSectionbyName("RecordSection"); |
| // CurReportDocument.getDoc().oTextTableHandler.removeTextTablebyName("Tbl_RecordSection"); |
| m_reportDocument.removeTextTableAndTextSection(); |
| } |
| switch (nNewStep) |
| { |
| case SOMAINPAGE: |
| CurDBCommandFieldSelection.setModified(false); |
| break; |
| |
| case SOTITLEPAGE: |
| String[] aFieldNames = m_reportDocument.getRecordParser().getFieldNames(); |
| Map aFieldTitleSet = m_reportDocument.getRecordParser().getFieldTitleSet(); |
| CurTitlesComponent.initialize(aFieldNames, aFieldTitleSet); |
| break; |
| |
| case SOGROUPPAGE: |
| CurGroupFieldHandler.initialize(); |
| break; |
| |
| case SOSORTPAGE: |
| String[] aFieldNames2 = m_reportDocument.getRecordParser().getFieldNames(); |
| String[][] aSortFieldNames = m_reportDocument.getRecordParser().getSortFieldNames(); |
| CurSortingComponent.initialize(aFieldNames2, aSortFieldNames); |
| int nLength = m_reportDocument.getRecordParser().GroupFieldNames.length; |
| CurSortingComponent.setReadOnlyUntil(nLength, false); |
| break; |
| |
| case SOTEMPLATEPAGE: |
| break; |
| |
| case SOSTOREPAGE: |
| //TODO initialize with suitable PathName |
| CurReportFinalizer.initialize(m_reportDocument.getRecordParser()); |
| break; |
| |
| default: |
| break; |
| } |
| } |
| |
| protected void leaveStep(int nOldStep, int nNewStep) |
| { |
| |
| switch (nOldStep) |
| { |
| case SOMAINPAGE: |
| String[] aSelectedFieldNames = CurDBCommandFieldSelection.getSelectedFieldNames(); |
| String aTableName = CurDBCommandFieldSelection.getSelectedCommandName(); |
| int nType = CurDBCommandFieldSelection.getSelectedCommandType(); |
| m_reportDocument.initializeFieldColumns(nType, aTableName, aSelectedFieldNames); |
| if (CurDBCommandFieldSelection.isModified()) |
| { |
| // cleanup document |
| m_reportDocument.clearDocument(); |
| m_reportDocument.getRecordParser().setGroupFieldNames(new String[] |
| { |
| }); |
| CurGroupFieldHandler.removeGroupFieldNames(); |
| } |
| break; |
| |
| case SOTITLEPAGE: |
| String[] sFieldTitles = CurTitlesComponent.getFieldTitles(); |
| // set new field name titles |
| // CurReportDocument.getRecordParser().setFieldTitles(sFieldTitles); |
| m_reportDocument.setFieldTitles(sFieldTitles); |
| break; |
| |
| case SOGROUPPAGE: |
| // TODO: DESIGN!!! a getter should return a value!!! |
| CurGroupFieldHandler.getGroupFieldNames(m_reportDocument.getRecordParser()); |
| String[] aGroupFieldNames = m_reportDocument.getRecordParser().GroupFieldNames; |
| // CurReportDocument.getRecordParser().prependSortFieldNames(aGroupFieldNames); |
| m_reportDocument.setGrouping(aGroupFieldNames); |
| break; |
| |
| case SOSORTPAGE: |
| String[][] aSortFieldNames = CurSortingComponent.getSortFieldNames(); |
| // CurReportDocument.getRecordParser().SortFieldNames = aSortFieldNames; |
| m_reportDocument.setSorting(aSortFieldNames); |
| // TODO: why do we make a switch here |
| super.enablefromStep(SOTEMPLATEPAGE, true); |
| break; |
| |
| case SOTEMPLATEPAGE: |
| break; |
| |
| case SOSTOREPAGE: |
| break; |
| |
| default: |
| break; |
| } |
| |
| if ((nOldStep < SOTEMPLATEPAGE) && (super.getNewStep() >= SOTEMPLATEPAGE)) |
| { |
| // this is called before SOTEMPLATEPAGE, after SOGROUPPAGE |
| m_reportDocument.getRecordParser().createRecordFieldNames(); |
| CurReportLayouter.initialize(m_reportDocument.getContentPath()); |
| } |
| } |
| |
| private void dialogFinish() |
| { |
| this.xComponent.dispose(); |
| if (bCloseDocument) |
| { |
| m_reportDocument.dispose(); |
| return; |
| } |
| |
| if ((nReportMode == ReportFinalizer.SOCREATETEMPLATE) |
| || (nReportMode == ReportFinalizer.SOUSETEMPLATE)) |
| { |
| m_reportDocument.addReportToDBView(); |
| boolean bOpenInDesign = (nReportMode == ReportFinalizer.SOCREATETEMPLATE); |
| m_reportDocument.createAndOpenReportDocument(m_sReportName, true, bOpenInDesign); |
| } |
| else |
| { |
| m_reportDocument.importReportData(this); |
| m_reportDocument.createAndOpenReportDocument(m_sReportName, false, false); |
| } |
| } |
| |
| private boolean executeQuery() |
| { |
| boolean bQueryCreated = false; |
| final RecordParser recordParser = m_reportDocument.getRecordParser(); |
| final SQLQueryComposer sqlQueryComposer = recordParser.getSQLQueryComposer(); |
| if (this.CurDBCommandFieldSelection.getSelectedCommandType() == CommandType.TABLE) |
| { |
| if (m_reportDocument instanceof ReportTextImplementation) |
| { |
| bQueryCreated = sqlQueryComposer.setQueryCommand(this.xWindow, false, false); |
| m_reportDocument.setCommandType(CommandType.COMMAND); |
| String sQuery = sqlQueryComposer.getQuery(); |
| m_reportDocument.setCommand(sQuery); |
| } |
| else |
| { |
| bQueryCreated = true; |
| } |
| } |
| else |
| { |
| try |
| { |
| String sQueryName = CurDBCommandFieldSelection.getSelectedCommandName(); |
| DBMetaData.CommandObject oCommand = recordParser.getQueryByName(sQueryName); |
| bHasEscapeProcessing = recordParser.hasEscapeProcessing(oCommand.getPropertySet()); |
| String sCommand = (String) oCommand.getPropertySet().getPropertyValue(PropertyNames.COMMAND); |
| if (bHasEscapeProcessing) |
| { |
| // String sCommand = (String) oCommand.xPropertySet.getPropertyValue(PropertyNames.COMMAND); |
| bQueryCreated = (!sCommand.equals(PropertyNames.EMPTY_STRING)); |
| if (m_reportDocument instanceof ReportTextImplementation) |
| { |
| sqlQueryComposer.m_xQueryAnalyzer.setQuery(sCommand); |
| sqlQueryComposer.prependSortingCriteria(); |
| m_reportDocument.setCommandType(CommandType.COMMAND); |
| m_reportDocument.setCommand(sqlQueryComposer.getQuery()); |
| } |
| } |
| else |
| { |
| m_reportDocument.setCommandType(CommandType.COMMAND); |
| m_reportDocument.setCommand(sCommand); |
| } |
| bQueryCreated = true; |
| } |
| catch (Exception e) |
| { |
| e.printStackTrace(System.out); |
| } |
| } |
| if (!bQueryCreated) |
| { |
| super.vetoableChange(null); |
| } |
| return bQueryCreated; |
| } |
| |
| public void buildSteps() |
| { |
| // CurReportDocument.getDoc().xProgressBar.setValue(30); |
| CurDBCommandFieldSelection = new CommandFieldSelection(this, m_reportDocument.getRecordParser(), 100, slblFields, slblSelFields, slblTables, true, 34330); |
| CurDBCommandFieldSelection.addFieldSelectionListener(new FieldSelectionListener()); |
| if (!isReportBuilderInstalled()) |
| { |
| insertLabel("lblBinaryFields", |
| new String[] |
| { |
| PropertyNames.PROPERTY_HEIGHT, PropertyNames.PROPERTY_LABEL, PropertyNames.PROPERTY_POSITION_X, PropertyNames.PROPERTY_POSITION_Y, PropertyNames.PROPERTY_STEP, PropertyNames.PROPERTY_WIDTH |
| }, |
| new Object[] |
| { |
| 16, sShowBinaryFields, 95, 162, 1, 210 |
| }); |
| } |
| // CurReportDocument.getDoc().xProgressBar.setValue(40); |
| CurTitlesComponent = new TitlesComponent(this, SOTITLEPAGE, 97, 37, 210, 7, slblColumnNames, slblColumnTitles, 34381); |
| CurTitlesComponent.addTextListener(this); |
| // CurReportDocument.getDoc().xProgressBar.setValue(50); |
| CurGroupFieldHandler = new GroupFieldHandler(m_reportDocument, this); |
| // CurReportDocument.getDoc().xProgressBar.setValue(60); |
| CurSortingComponent = new SortingComponent(this, SOSORTPAGE, 95, 30, 210, 34346); |
| // CurReportDocument.getDoc().xProgressBar.setValue(70); |
| CurReportLayouter = new ReportLayouter(xMSF, m_reportDocument, this); |
| // CurReportDocument.getDoc().xProgressBar.setValue(80); |
| CurReportFinalizer = new ReportFinalizer(xMSF, m_reportDocument, this); |
| // CurReportDocument.getDoc().xProgressBar.setValue(100); |
| bCloseDocument = true; |
| // CurReportDocument.getDoc().xProgressBar.end(); |
| enableNavigationButtons(false, false, false); |
| } |
| |
| public boolean finishWizard() |
| { |
| final int ncurStep = getCurrentStep(); |
| if ((switchToStep(ncurStep, SOSTOREPAGE)) || (ncurStep == SOSTOREPAGE)) |
| { |
| if (this.executeQuery()) |
| { |
| if (CurReportFinalizer.finish()) |
| { |
| nReportMode = CurReportFinalizer.getReportOpenMode(); |
| m_sReportName = CurReportFinalizer.getStoreName(); |
| xDialog.endExecute(); |
| return true; |
| } |
| } |
| } |
| return false; |
| } |
| |
| public void cancelWizard() |
| { |
| xDialog.endExecute(); |
| } |
| |
| public void insertQueryRelatedSteps() |
| { |
| setRMItemLabels(m_oResource, UIConsts.RID_QUERY + 80); |
| addRoadmap(); |
| int i = 0; |
| i = insertRoadmapItem(0, true, m_oResource.getResText(UIConsts.RID_QUERY + 80), SOMAINPAGE); |
| i = insertRoadmapItem(i, false, m_oResource.getResText(UIConsts.RID_REPORT + 68), SOTITLEPAGE); |
| i = insertRoadmapItem(i, false, m_oResource.getResText(UIConsts.RID_REPORT + 11), SOGROUPPAGE); |
| i = insertRoadmapItem(i, false, m_oResource.getResText(UIConsts.RID_REPORT + 12), SOSORTPAGE); // Orderby is always supported |
| i = insertRoadmapItem(i, false, m_oResource.getResText(UIConsts.RID_REPORT + 13), SOTEMPLATEPAGE); |
| i = insertRoadmapItem(i, false, m_oResource.getResText(UIConsts.RID_REPORT + 14), SOSTOREPAGE); |
| setRoadmapInteractive(true); |
| setRoadmapComplete(true); |
| setCurrentRoadmapItemID((short) 1); |
| } |
| |
| private boolean isReportBuilderInstalled() |
| { |
| //! Check if the new Report Builder Extension is available |
| XContentEnumerationAccess a = com.sun.star.uno.UnoRuntime.queryInterface(XContentEnumerationAccess.class, xMSF); |
| com.sun.star.container.XEnumeration e = a.createContentEnumeration("com.sun.star.report.pentaho.SOReportJobFactory"); |
| if (e == null) |
| { |
| return false; |
| } |
| return e.hasMoreElements(); |
| } |
| |
| /** |
| * Return the path to the "com.sun.reportdesigner" extension |
| * @param _xMSF |
| * @return |
| */ |
| public static String getPathToExtension(XMultiServiceFactory _xMSF) |
| { |
| // Get the path to the extension and try to add the path to the class loader |
| final XComponentContext xComponentContext = Helper.getComponentContext(_xMSF); |
| final Object aSingleton = xComponentContext.getValueByName("/singletons/com.sun.star.deployment.PackageInformationProvider"); |
| XPackageInformationProvider xProvider = UnoRuntime.queryInterface(XPackageInformationProvider.class, aSingleton); |
| return xProvider.getPackageLocation("com.sun.reportdesigner"); |
| } |
| private static XLogger m_xLogger; |
| |
| private static void initializeLogger(XMultiServiceFactory _xMSF) |
| { |
| XComponentContext xContext = Helper.getComponentContext(_xMSF); |
| |
| final Object aLoggerPool = xContext.getValueByName("/singletons/com.sun.star.logging.LoggerPool"); |
| if (aLoggerPool == null) |
| { |
| System.out.println("Can't get singleton from logging"); |
| } |
| final XLoggerPool xLoggerPool = UnoRuntime.queryInterface(XLoggerPool.class, aLoggerPool); |
| m_xLogger = xLoggerPool.getNamedLogger("com.sun.star.wizards.ReportBuilder"); |
| } |
| |
| public static XLogger getLogger() |
| { |
| return m_xLogger; |
| } |
| |
| public void startReportWizard() |
| { |
| initializeLogger(xMSF); |
| getLogger().log(LogLevel.SEVERE, "Start Report Wizard"); |
| |
| if (isReportBuilderInstalled()) |
| { |
| // Get the path to the extension and try to add the path to the class loader |
| String sLocation = getPathToExtension(xMSF); |
| // TODO: Umlaut in filename! |
| if (sLocation.length() > 0) |
| { |
| try |
| { |
| URI aLocationURI = URI.create(sLocation + "/" + "reportbuilderwizard.jar"); |
| |
| URL[] aURLs = new URL[1]; |
| aURLs[0] = aLocationURI.toURL(); |
| URLClassLoader aClassLoader = new URLClassLoader(aURLs, this.getClass().getClassLoader()); |
| Class a = aClassLoader.loadClass("com.sun.star.wizards.reportbuilder.ReportBuilderImplementation"); |
| Method aMethod = a.getMethod("create", new Class[] |
| { |
| XMultiServiceFactory.class |
| }); |
| m_reportDocument = (IReportDocument) aMethod.invoke(a, xMSF |
| ); |
| } |
| catch (Exception e) |
| { |
| // Maybe problems in URI create() if a wrong char is used like '[' ']', ... |
| System.out.println("There could be a problem with the path '" + sLocation + "'"); |
| } |
| } |
| } |
| |
| try |
| { |
| if (m_reportDocument == null) |
| { |
| // Fallback, if there is no reportbuilder wizard implementation, we use the old wizard |
| m_reportDocument = new ReportTextImplementation(xMSF); |
| } |
| |
| m_reportDocument.initialize(m_docUI, m_oResource); |
| |
| if (m_reportDocument.getRecordParser().getConnection(m_wizardContext)) |
| { |
| buildSteps(); |
| |
| m_reportDocument.checkInvariants(); |
| |
| this.CurDBCommandFieldSelection.preselectCommand(m_wizardContext, false); |
| |
| createWindowPeer(m_reportDocument.getWizardParent()); |
| |
| m_reportDocument.getRecordParser().setWindowPeer(this.xControl.getPeer()); |
| insertQueryRelatedSteps(); |
| short RetValue = executeDialog(m_reportDocument.getFrame().getComponentWindow().getPosSize()); |
| if (RetValue == 0) |
| { |
| dialogFinish(); |
| } |
| } |
| m_reportDocument.getRecordParser().dispose(); |
| } |
| catch (java.io.IOException e) |
| { |
| String sMessage = e.getMessage(); |
| if (sMessage.equals("default.otr")) |
| { |
| sMessage = m_oResource.getResText(UIConsts.RID_REPORT + 92); |
| } |
| else |
| { |
| } |
| // show a dialog with the error message |
| SystemDialog.showMessageBox(xMSF, "ErrorBox", VclWindowPeerAttribute.OK, sMessage); |
| } |
| catch (java.lang.Exception jexception) |
| { |
| jexception.printStackTrace(System.out); |
| } |
| } |
| |
| public void importReportData(final XMultiServiceFactory xMSF, final Dataimport CurDataimport) |
| { |
| boolean bDocisStored = false; |
| try |
| { |
| boolean bexecute = false; |
| if (!bHasEscapeProcessing) |
| { |
| bexecute = m_reportDocument.getRecordParser().executeCommand(com.sun.star.sdb.CommandType.QUERY); // sMsgQueryCreationImpossible + (char) 13 + sMsgEndAutopilot)) |
| } |
| else |
| { |
| bexecute = m_reportDocument.getRecordParser().executeCommand(com.sun.star.sdb.CommandType.COMMAND); // sMsgQueryCreationImpossible + (char) 13 + sMsgEndAutopilot)) |
| } |
| if (bexecute) |
| { |
| bexecute = m_reportDocument.getRecordParser().getFields(m_reportDocument.getRecordParser().getFieldNames(), false); |
| } |
| if (bexecute) |
| { |
| // CurDataimport.insertDatabaseDatatoReportDocument(xMSF); |
| m_reportDocument.insertDatabaseDatatoReportDocument(xMSF); |
| } |
| |
| if (CurReportFinalizer.getReportOpenMode() == ReportFinalizer.SOCREATEDOCUMENT) |
| { |
| bDocisStored = m_reportDocument.getRecordParser().storeDatabaseDocumentToTempPath(m_reportDocument.getComponent(), CurReportFinalizer.getStoreName()); |
| } |
| } |
| catch (com.sun.star.wizards.common.InvalidQueryException queryexception) |
| { |
| } |
| CurDataimport.xComponent.dispose(); |
| if (bDocisStored) |
| { |
| m_reportDocument.getRecordParser().addReportDocument(m_reportDocument.getComponent(), false); |
| } |
| |
| m_reportDocument.getRecordParser().dispose(); |
| } |
| |
| public boolean getReportResources(boolean bgetProgressResourcesOnly) |
| { |
| sMsgWizardName = super.m_oResource.getResText(UIConsts.RID_REPORT); |
| if (!bgetProgressResourcesOnly) |
| { |
| sShowBinaryFields = m_oResource.getResText(UIConsts.RID_REPORT + 60); |
| slblTables = m_oResource.getResText(UIConsts.RID_FORM + 6); |
| slblFields = m_oResource.getResText(UIConsts.RID_FORM + 12); |
| slblSelFields = m_oResource.getResText(UIConsts.RID_REPORT + 9); |
| WizardHeaderText[0] = m_oResource.getResText(UIConsts.RID_REPORT + 28); |
| WizardHeaderText[1] = m_oResource.getResText(UIConsts.RID_REPORT + 69); |
| WizardHeaderText[2] = m_oResource.getResText(UIConsts.RID_REPORT + 29); |
| WizardHeaderText[3] = m_oResource.getResText(UIConsts.RID_REPORT + 30); |
| WizardHeaderText[4] = m_oResource.getResText(UIConsts.RID_REPORT + 31); |
| WizardHeaderText[5] = m_oResource.getResText(UIConsts.RID_REPORT + 32); |
| } |
| slblColumnTitles = m_oResource.getResText(UIConsts.RID_REPORT + 70); |
| slblColumnNames = m_oResource.getResText(UIConsts.RID_REPORT + 71); |
| return true; |
| } |
| |
| public static String getBlindTextNote(Object _aDocument, Resource _oResource) |
| { |
| String sBlindTextNote = PropertyNames.EMPTY_STRING; |
| if (_aDocument instanceof ReportTextImplementation) |
| { |
| sBlindTextNote = _oResource.getResText(UIConsts.RID_REPORT + 75); |
| sBlindTextNote = JavaTools.replaceSubString(sBlindTextNote, String.valueOf((char) 13), "<BR>"); |
| } |
| return sBlindTextNote; |
| } |
| |
| public void enableRoadmapItems(boolean _bEnabled) |
| { |
| try |
| { |
| Object oRoadmapItem = null; |
| int CurStep = AnyConverter.toInt(Helper.getUnoPropertyValue(xDialogModel, PropertyNames.PROPERTY_STEP)); |
| boolean bEnabled = false; |
| int CurItemID; |
| for (int i = 0; i < getRMItemCount(); i++) |
| { |
| oRoadmapItem = this.xIndexContRoadmap.getByIndex(i); |
| CurItemID = AnyConverter.toInt(Helper.getUnoPropertyValue(oRoadmapItem, "ID")); |
| if (CurItemID > CurStep) |
| { |
| bEnabled = _bEnabled; |
| } |
| else |
| { |
| bEnabled = true; |
| } |
| |
| Helper.setUnoPropertyValue(oRoadmapItem, PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(bEnabled)); |
| } |
| } |
| catch (com.sun.star.uno.Exception exception) |
| { |
| exception.printStackTrace(System.out); |
| } |
| } |
| |
| private void enableWizardSteps(String[] NewItems) |
| { |
| boolean bEnabled = NewItems.length > 0; |
| setControlProperty("btnWizardNext", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(bEnabled)); |
| setControlProperty("btnWizardFinish", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(bEnabled)); |
| enableRoadmapItems(bEnabled); // Note: Performancewise this could be improved |
| } |
| |
| public void textChanged(TextEvent xTextEvent) |
| { |
| try |
| { |
| Object oModel = UnoDialog.getModel(xTextEvent.Source); |
| String sContent = (String) Helper.getUnoPropertyValue(oModel, "Text"); |
| String fieldname = this.CurTitlesComponent.getFieldNameByTitleControl(oModel); |
| // CurReportDocument.getDoc().oTextFieldHandler.changeUserFieldContent(fieldname, sfieldtitle); |
| m_reportDocument.liveupdate_changeUserFieldContent(fieldname, sContent); |
| } |
| catch (Exception exception) |
| { |
| exception.printStackTrace(System.out); |
| } |
| } |
| |
| public void disposing(EventObject EventObject) |
| { |
| } |
| |
| public void setmodified(int _ndialogpage, Object ooldValue, Object onewValue) |
| { |
| switch (_ndialogpage) |
| { |
| case SOMAINPAGE: |
| break; |
| default: |
| break; |
| } |
| } |
| |
| private void toggleSortingPage() |
| { |
| int nlCommandType = this.CurDBCommandFieldSelection.getSelectedCommandType(); |
| boolean bdoenable = (nlCommandType == CommandType.TABLE); |
| if (!bdoenable) |
| { |
| String sQueryName = CurDBCommandFieldSelection.getSelectedCommandName(); |
| DBMetaData.CommandObject oCommand = m_reportDocument.getRecordParser().getQueryByName(sQueryName); |
| bdoenable = m_reportDocument.getRecordParser().hasEscapeProcessing(oCommand.getPropertySet()); |
| } |
| super.setStepEnabled(SOSORTPAGE, bdoenable); |
| |
| // int nCommandType = this.CurDBCommandFieldSelection.getSelectedCommandType(); |
| // super.setStepEnabled(SOSORTPAGE, (nCommandType == CommandType.TABLE)); |
| } |
| |
| public class FieldSelectionListener implements com.sun.star.wizards.ui.XFieldSelectionListener |
| { |
| |
| protected int m_nID; |
| |
| public int getID() |
| { |
| return m_nID; |
| } |
| |
| public void setID(String sIncSuffix) |
| { |
| m_nID = 1; |
| if (sIncSuffix != null) |
| { |
| if ((!sIncSuffix.equals(PropertyNames.EMPTY_STRING)) && (!sIncSuffix.equals("_"))) |
| { |
| String sID = JavaTools.ArrayoutofString(sIncSuffix, "_")[1]; |
| m_nID = Integer.parseInt(sID); |
| } |
| } |
| } |
| |
| public void shiftFromLeftToRight(String[] SelItems, String[] NewItems) |
| { |
| if (m_nID == 1) |
| { |
| CurDBCommandFieldSelection.setModified(true); |
| enableWizardSteps(NewItems); |
| toggleSortingPage(); |
| } |
| else |
| { |
| boolean bEnabled = (CurGroupFieldSelection.getSelectedFieldNames().length > 0); |
| Helper.setUnoPropertyValue(getRoadmapItemByID(SOGROUPPAGE), PropertyNames.PROPERTY_ENABLED, bEnabled); |
| } |
| } |
| |
| public void shiftFromRightToLeft(String[] SelItems, String[] NewItems) |
| { |
| // TODO When the ListFieldbox is refilled only fields of the current Command may be merged into the Listbox |
| if (m_nID == 1) |
| { |
| enableWizardSteps(NewItems); |
| CurDBCommandFieldSelection.setModified(true); |
| } |
| else |
| { |
| boolean bEnabled = (CurGroupFieldSelection.getSelectedFieldNames().length > 0); |
| Helper.setUnoPropertyValue(getRoadmapItemByID(SOGROUPPAGE), PropertyNames.PROPERTY_ENABLED, bEnabled); |
| } |
| } |
| |
| public void moveItemDown(String item) |
| { |
| } |
| |
| public void moveItemUp(String item) |
| { |
| } |
| } |
| // public void tests() |
| // { |
| // |
| // Calendar aCalendar = new GregorianCalendar(); |
| // aCalendar.setTimeInMillis(1202382900000L); |
| // String aCalStr = aCalendar.toString(); |
| // |
| // Date aDate = new Date(); |
| // aDate.setSeconds(0); |
| // aDate.setMinutes(15); |
| // aDate.setHours(12); |
| // // aDate.setMonth(2); |
| // // aDate.setYear(2008); |
| // // aDate.setDay(7); |
| // long nTime = aDate.getTime(); |
| // Long aLong = new Long(nTime); |
| // String aStr = aLong.toString(); |
| // |
| // Date aNewDate = new Date(1202382900000L); |
| //// aNewDate. |
| // String aDateStr = aNewDate.toString(); |
| //// Datetime aNewTime = new Time(1202382900); |
| //// String aTimeStr = aNewTime.toString(); |
| // |
| // } |
| } |