blob: c0299889c6c612af66fc18f0551c6a0151f4cdc5 [file] [log] [blame]
/**************************************************************
*
* 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.letter;
import java.util.Vector;
import com.sun.star.lang.IllegalArgumentException;
import com.sun.star.lang.WrappedTargetException;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.wizards.common.Configuration;
import com.sun.star.wizards.common.Desktop;
import com.sun.star.wizards.common.NoValidPathException;
import com.sun.star.wizards.common.SystemDialog;
import com.sun.star.wizards.common.PropertyNames;
import com.sun.star.awt.VclWindowPeerAttribute;
import com.sun.star.awt.XTextComponent;
import com.sun.star.awt.XWindow;
import com.sun.star.awt.XWindowPeer;
import com.sun.star.beans.PropertyValue;
import com.sun.star.container.NoSuchElementException;
import com.sun.star.document.MacroExecMode;
import com.sun.star.document.XDocumentProperties;
import com.sun.star.document.XDocumentPropertiesSupplier;
import com.sun.star.ucb.CommandAbortedException;
import com.sun.star.uno.AnyConverter;
import com.sun.star.uno.Exception;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.wizards.text.*;
import com.sun.star.wizards.common.*;
import com.sun.star.task.XInteractionHandler;
import com.sun.star.text.XTextFrame;
import com.sun.star.text.XTextDocument;
import com.sun.star.uno.XInterface;
import com.sun.star.util.CloseVetoException;
import com.sun.star.util.XCloseable;
import com.sun.star.wizards.document.*;
import com.sun.star.wizards.ui.*;
import com.sun.star.wizards.ui.event.*;
import com.sun.star.wizards.common.Helper;
public class LetterWizardDialogImpl extends LetterWizardDialog
{
protected void enterStep(int OldStep, int NewStep)
{
}
protected void leaveStep(int OldStep, int NewStep)
{
}
static LetterDocument myLetterDoc;
static boolean running;
XMultiServiceFactory xmsf;
XTextDocument xTextDocument;
PathSelection myPathSelection;
CGLetterWizard myConfig;
Vector mainDA = new Vector();
Vector letterDA = new Vector();
Vector businessDA = new Vector();
String[][] BusinessFiles;
String[][] OfficialFiles;
String[][] PrivateFiles;
String[] Norms;
String[] NormPaths;
String[] NormNames;
String sTemplatePath;
String sUserTemplatePath;
String sBitmapPath;
String sLetterPath;
String sLetterLangPackPath;
String sWorkPath;
String sCurrentNorm;
String sPath;
boolean bEditTemplate;
boolean bSaveSuccess = false;
private boolean filenameChanged = false;
LetterDocument.BusinessPaperObject BusCompanyLogo = null;
LetterDocument.BusinessPaperObject BusCompanyAddress = null;
LetterDocument.BusinessPaperObject BusCompanyAddressReceiver = null;
LetterDocument.BusinessPaperObject BusFooter = null;
final static int RM_TYPESTYLE = 1;
final static int RM_BUSINESSPAPER = 2;
final static int RM_ELEMENTS = 3;
final static int RM_SENDERRECEIVER = 4;
final static int RM_FOOTER = 5;
final static int RM_FINALSETTINGS = 6;
public LetterWizardDialogImpl(XMultiServiceFactory xmsf)
{
super(xmsf);
this.xmsf = xmsf;
}
public static void main(String args[])
{
//only being called when starting wizard remotely
String ConnectStr = "uno:socket,host=127.0.0.1,port=8100;urp,negotiate=0,forcesynchronous=1;StarOffice.ServiceManager";
XMultiServiceFactory xLocMSF = null;
try
{
xLocMSF = Desktop.connect(ConnectStr);
}
catch (Exception e)
{
e.printStackTrace();
}
catch (java.lang.Exception e)
{
e.printStackTrace();
}
LetterWizardDialogImpl lw = new LetterWizardDialogImpl(xLocMSF);
lw.startWizard(xLocMSF, null);
}
public void startWizard(XMultiServiceFactory xMSF, Object[] CurPropertyValue)
{
running = true;
try
{
//Number of steps on WizardDialog:
setMaxStep(6);
//instatiate The Document Frame for the Preview
myLetterDoc = new LetterDocument(xMSF, this);
//create the dialog:
drawNaviBar();
buildStep1();
buildStep2();
buildStep3();
buildStep4();
buildStep5();
buildStep6();
initializePaths();
initializeNorms();
initializeSalutation();
initializeGreeting();
//special Control for setting the save Path:
insertPathSelectionControl();
//load the last used settings from the registry and apply listeners to the controls:
initConfiguration();
//set the language according to the Linguistic
int oL = getOfficeLinguistic();
myConfig.cp_BusinessLetter.cp_Norm = oL;
myConfig.cp_PrivateOfficialLetter.cp_Norm = oL;
myConfig.cp_PrivateLetter.cp_Norm = oL;
initializeTemplates(xMSF);
if (myConfig.cp_BusinessLetter.cp_Greeting.equals(PropertyNames.EMPTY_STRING))
{
myConfig.cp_BusinessLetter.cp_Greeting = resources.GreetingLabels[0];
}
if (myConfig.cp_BusinessLetter.cp_Salutation.equals(PropertyNames.EMPTY_STRING))
{
myConfig.cp_BusinessLetter.cp_Salutation = resources.SalutationLabels[0];
}
if (myConfig.cp_PrivateOfficialLetter.cp_Greeting.equals(PropertyNames.EMPTY_STRING))
{
myConfig.cp_PrivateOfficialLetter.cp_Greeting = resources.GreetingLabels[1];
}
if (myConfig.cp_PrivateOfficialLetter.cp_Salutation.equals(PropertyNames.EMPTY_STRING))
{
myConfig.cp_PrivateOfficialLetter.cp_Salutation = resources.SalutationLabels[1];
}
if (myConfig.cp_PrivateLetter.cp_Greeting.equals(PropertyNames.EMPTY_STRING))
{
myConfig.cp_PrivateLetter.cp_Greeting = resources.GreetingLabels[2];
}
if (myConfig.cp_PrivateLetter.cp_Salutation.equals(PropertyNames.EMPTY_STRING))
{
myConfig.cp_PrivateLetter.cp_Salutation = resources.SalutationLabels[2];
}
//update the dialog UI according to the loaded Configuration
updateUI();
if (myPathSelection.xSaveTextBox.getText().equalsIgnoreCase(PropertyNames.EMPTY_STRING))
{
myPathSelection.initializePath();
}
XWindow xContainerWindow = myLetterDoc.xFrame.getContainerWindow();
XWindowPeer xWindowPeer = UnoRuntime.queryInterface(XWindowPeer.class, xContainerWindow);
createWindowPeer(xWindowPeer);
//add the Roadmap to the dialog:
insertRoadmap();
//load the last used document and apply last used settings:
setConfiguration();
//If the configuration does not define Greeting/Salutation yet choose a default
setDefaultForGreetingAndSalutation();
//disable funtionality that is not supported by the template:
initializeElements();
//disable the document, so that the user cannot change anything:
myLetterDoc.xFrame.getComponentWindow().setEnable(false);
executeDialog(myLetterDoc.xFrame);
removeTerminateListener();
closeDocument();
running = false;
}
catch (Exception exception)
{
removeTerminateListener();
exception.printStackTrace(System.out);
running = false;
}
}
public void cancelWizard()
{
xDialog.endExecute();
running = false;
}
public boolean finishWizard()
{
switchToStep(getCurrentStep(), getMaxStep());
try
{
//myLetterDoc.xTextDocument.lockControllers();
FileAccess fileAccess = new FileAccess(xMSF);
sPath = myPathSelection.getSelectedPath();
if (sPath.equals(PropertyNames.EMPTY_STRING))
{
myPathSelection.triggerPathPicker();
sPath = myPathSelection.getSelectedPath();
}
sPath = fileAccess.getURL(sPath);
//first, if the filename was not changed, thus
//it is coming from a saved session, check if the
// file exists and warn the user.
if (!filenameChanged)
{
if (fileAccess.exists(sPath, true))
{
int answer = SystemDialog.showMessageBox(xMSF, xControl.getPeer(), "MessBox", VclWindowPeerAttribute.YES_NO + VclWindowPeerAttribute.DEF_NO, resources.resOverwriteWarning);
if (answer == 3) // user said: no, do not overwrite....
{
return false;
}
}
}
myLetterDoc.setWizardTemplateDocInfo(resources.resLetterWizardDialog_title, resources.resTemplateDescription);
myLetterDoc.killEmptyUserFields();
myLetterDoc.keepLogoFrame = (chkUseLogo.getState() != 0);
if ((chkBusinessPaper.getState() != 0) && (chkPaperCompanyLogo.getState() != 0))
{
myLetterDoc.keepLogoFrame = false;
}
myLetterDoc.keepBendMarksFrame = (chkUseBendMarks.getState() != 0);
myLetterDoc.keepLetterSignsFrame = (chkUseSigns.getState() != 0);
myLetterDoc.keepSenderAddressRepeatedFrame = (chkUseAddressReceiver.getState() != 0);
if (optBusinessLetter.getState())
{
if ((chkBusinessPaper.getState() != 0) && (chkCompanyReceiver.getState() != 0))
{
myLetterDoc.keepSenderAddressRepeatedFrame = false;
}
if ((chkBusinessPaper.getState() != 0) && (chkPaperCompanyAddress.getState() != 0))
{
myLetterDoc.keepAddressFrame = false;
}
}
myLetterDoc.killEmptyFrames();
bSaveSuccess = OfficeDocument.store(xMSF, xTextDocument, sPath, "writer8_template", false);
if (bSaveSuccess)
{
saveConfiguration();
XInteractionHandler xIH = UnoRuntime.queryInterface(XInteractionHandler.class, xMSF.createInstance("com.sun.star.comp.uui.UUIInteractionHandler"));
PropertyValue loadValues[] = new PropertyValue[4];
loadValues[0] = new PropertyValue();
loadValues[0].Name = "AsTemplate";
loadValues[1] = new PropertyValue();
loadValues[1].Name = "MacroExecutionMode";
loadValues[1].Value = new Short(MacroExecMode.ALWAYS_EXECUTE);
loadValues[2] = new PropertyValue();
loadValues[2].Name = "UpdateDocMode";
loadValues[2].Value = new Short(com.sun.star.document.UpdateDocMode.FULL_UPDATE);
loadValues[3] = new PropertyValue();
loadValues[3].Name = "InteractionHandler";
loadValues[3].Value = xIH;
if (bEditTemplate)
{
loadValues[0].Value = Boolean.FALSE;
}
else
{
loadValues[0].Value = Boolean.TRUE;
}
Object oDoc = OfficeDocument.load(Desktop.getDesktop(xMSF), sPath, "_default", loadValues);
XTextDocument xTextDocument = (com.sun.star.text.XTextDocument) oDoc;
XMultiServiceFactory xDocMSF = UnoRuntime.queryInterface(XMultiServiceFactory.class, xTextDocument);
ViewHandler myViewHandler = new ViewHandler(xDocMSF, xTextDocument);
myViewHandler.setViewSetting("ZoomType", new Short(com.sun.star.view.DocumentZoomType.OPTIMAL));
}
else
{
//TODO: Error Handling
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
xDialog.endExecute();
running = false;
}
return true;
}
public void closeDocument()
{
try
{
//xComponent.dispose();
XCloseable xCloseable = UnoRuntime.queryInterface(XCloseable.class, myLetterDoc.xFrame);
xCloseable.close(false);
}
catch (CloseVetoException e)
{
e.printStackTrace();
}
}
public void optBusinessLetterItemChanged()
{
DataAware.setDataObject(letterDA, myConfig.cp_BusinessLetter, true);
setControlProperty("lblBusinessStyle", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("lstBusinessStyle", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("chkBusinessPaper", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("lblPrivOfficialStyle", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("lstPrivOfficialStyle", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("lblPrivateStyle", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("lstPrivateStyle", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
lstBusinessStyleItemChanged();
enableSenderReceiver();
setPossibleFooter(true);
if (myPathSelection.xSaveTextBox.getText().equalsIgnoreCase(PropertyNames.EMPTY_STRING))
{
myPathSelection.initializePath();
}
}
public void optPrivOfficialLetterItemChanged()
{
DataAware.setDataObject(letterDA, myConfig.cp_PrivateOfficialLetter, true);
setControlProperty("lblBusinessStyle", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("lstBusinessStyle", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("chkBusinessPaper", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("lblPrivOfficialStyle", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("lstPrivOfficialStyle", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("lblPrivateStyle", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("lstPrivateStyle", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
lstPrivOfficialStyleItemChanged();
disableBusinessPaper();
enableSenderReceiver();
setPossibleFooter(true);
if (myPathSelection.xSaveTextBox.getText().equalsIgnoreCase(PropertyNames.EMPTY_STRING))
{
myPathSelection.initializePath();
}
}
public void optPrivateLetterItemChanged()
{
DataAware.setDataObject(letterDA, myConfig.cp_PrivateLetter, true);
setControlProperty("lblBusinessStyle", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("lstBusinessStyle", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("chkBusinessPaper", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("lblPrivOfficialStyle", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("lstPrivOfficialStyle", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("lblPrivateStyle", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("lstPrivateStyle", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
lstPrivateStyleItemChanged();
disableBusinessPaper();
disableSenderReceiver();
setPossibleFooter(false);
if (myPathSelection.xSaveTextBox.getText().equalsIgnoreCase(PropertyNames.EMPTY_STRING))
{
myPathSelection.initializePath();
}
}
public void optSenderPlaceholderItemChanged()
{
setControlProperty("lblSenderName", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("lblSenderStreet", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("lblPostCodeCity", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("txtSenderName", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("txtSenderStreet", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("txtSenderPostCode", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("txtSenderState", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("txtSenderCity", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
myLetterDoc.fillSenderWithUserData();
}
public void optSenderDefineItemChanged()
{
setControlProperty("lblSenderName", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("lblSenderStreet", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("lblPostCodeCity", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("txtSenderName", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("txtSenderStreet", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("txtSenderPostCode", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("txtSenderState", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("txtSenderCity", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
txtSenderNameTextChanged();
txtSenderStreetTextChanged();
txtSenderPostCodeTextChanged();
txtSenderStateTextChanged();
txtSenderCityTextChanged();
}
public void optCreateLetterItemChanged()
{
bEditTemplate = false;
}
public void optMakeChangesItemChanged()
{
bEditTemplate = true;
}
public void optReceiverPlaceholderItemChanged()
{
OfficeDocument.attachEventCall(xTextDocument, "OnNew", "StarBasic", "macro:///Template.Correspondence.Placeholder()");
}
public void optReceiverDatabaseItemChanged()
{
OfficeDocument.attachEventCall(xTextDocument, "OnNew", "StarBasic", "macro:///Template.Correspondence.Database()");
}
public void lstBusinessStyleItemChanged()
{
xTextDocument = myLetterDoc.loadAsPreview(BusinessFiles[1][lstBusinessStyle.getSelectedItemPos()], false);
myLetterDoc.xTextDocument.lockControllers();
initializeElements();
chkBusinessPaperItemChanged();
setElements(false);
myLetterDoc.xTextDocument.unlockControllers();
activate();
}
public void lstPrivOfficialStyleItemChanged()
{
xTextDocument = myLetterDoc.loadAsPreview(OfficialFiles[1][lstPrivOfficialStyle.getSelectedItemPos()], false);
myLetterDoc.xTextDocument.lockControllers();
initializeElements();
setPossibleSenderData(true);
setElements(false);
myLetterDoc.xTextDocument.unlockControllers();
activate();
}
public void lstPrivateStyleItemChanged()
{
xTextDocument = myLetterDoc.loadAsPreview(PrivateFiles[1][lstPrivateStyle.getSelectedItemPos()], false);
myLetterDoc.xTextDocument.lockControllers();
initializeElements();
setElements(true);
myLetterDoc.xTextDocument.unlockControllers();
activate();
}
public void numLogoHeightTextChanged()
{
BusCompanyLogo.iHeight = (int) (numLogoHeight.getValue() * 1000);
BusCompanyLogo.setFramePosition();
}
public void numLogoWidthTextChanged()
{
BusCompanyLogo.iWidth = (int) (numLogoWidth.getValue() * 1000);
BusCompanyLogo.setFramePosition();
}
public void numLogoXTextChanged()
{
BusCompanyLogo.iXPos = (int) (numLogoX.getValue() * 1000);
BusCompanyLogo.setFramePosition();
}
public void numLogoYTextChanged()
{
BusCompanyLogo.iYPos = (int) (numLogoY.getValue() * 1000);
BusCompanyLogo.setFramePosition();
}
public void numAddressWidthTextChanged()
{
BusCompanyAddress.iWidth = (int) (numAddressWidth.getValue() * 1000);
BusCompanyAddress.setFramePosition();
}
public void numAddressXTextChanged()
{
BusCompanyAddress.iXPos = (int) (numAddressX.getValue() * 1000);
BusCompanyAddress.setFramePosition();
}
public void numAddressYTextChanged()
{
BusCompanyAddress.iYPos = (int) (numAddressY.getValue() * 1000);
BusCompanyAddress.setFramePosition();
}
public void numAddressHeightTextChanged()
{
BusCompanyAddress.iHeight = (int) (numAddressHeight.getValue() * 1000);
BusCompanyAddress.setFramePosition();
}
public void numFooterHeightTextChanged()
{
BusFooter.iHeight = (int) (numFooterHeight.getValue() * 1000);
BusFooter.iYPos = myLetterDoc.DocSize.Height - BusFooter.iHeight;
BusFooter.setFramePosition();
}
public void chkPaperCompanyLogoItemChanged()
{
if (chkPaperCompanyLogo.getState() != 0)
{
//minimal value is required, otherwise the frame creation fails
if (numLogoWidth.getValue() == 0)
{
numLogoWidth.setValue(0.1);
}
if (numLogoHeight.getValue() == 0)
{
numLogoHeight.setValue(0.1);
}
BusCompanyLogo = myLetterDoc.new BusinessPaperObject("Company Logo", (int) (numLogoWidth.getValue() * 1000), (int) (numLogoHeight.getValue() * 1000), (int) (numLogoX.getValue() * 1000), (int) (numLogoY.getValue() * 1000));
setControlProperty("numLogoHeight", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("lblCompanyLogoHeight", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("numLogoWidth", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("lblCompanyLogoWidth", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("numLogoX", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("lblCompanyLogoX", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("numLogoY", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("lblCompanyLogoY", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setPossibleLogo(false);
}
else
{
if (BusCompanyLogo != null)
{
BusCompanyLogo.removeFrame();
}
setControlProperty("numLogoHeight", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("lblCompanyLogoHeight", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("numLogoWidth", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("lblCompanyLogoWidth", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("numLogoX", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("lblCompanyLogoX", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("numLogoY", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("lblCompanyLogoY", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setPossibleLogo(true);
}
}
public void chkPaperCompanyAddressItemChanged()
{
if (chkPaperCompanyAddress.getState() != 0)
{
// minimal value is required, otherwise the frame creation fails
if (numAddressWidth.getValue() == 0)
{
numAddressWidth.setValue(0.1);
}
if (numAddressHeight.getValue() == 0)
{
numAddressHeight.setValue(0.1);
}
BusCompanyAddress = myLetterDoc.new BusinessPaperObject("Company Address", (int) (numAddressWidth.getValue() * 1000), (int) (numAddressHeight.getValue() * 1000), (int) (numAddressX.getValue() * 1000), (int) (numAddressY.getValue() * 1000));
setControlProperty("numAddressHeight", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("lblCompanyAddressHeight", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("numAddressWidth", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("lblCompanyAddressWidth", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("numAddressX", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("lblCompanyAddressX", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("numAddressY", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setControlProperty("lblCompanyAddressY", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
if (myLetterDoc.hasElement("Sender Address"))
{
myLetterDoc.switchElement("Sender Address", (false));
}
if (chkCompanyReceiver.getState() != 0)
{
setPossibleSenderData(false);
}
}
else
{
if (BusCompanyAddress != null)
{
BusCompanyAddress.removeFrame();
}
setControlProperty("numAddressHeight", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("lblCompanyAddressHeight", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("numAddressWidth", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("lblCompanyAddressWidth", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("numAddressX", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("lblCompanyAddressX", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("numAddressY", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("lblCompanyAddressY", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
if (myLetterDoc.hasElement("Sender Address"))
{
myLetterDoc.switchElement("Sender Address", (true));
}
setPossibleSenderData(true);
if (optSenderDefine.getState())
{
optSenderDefineItemChanged();
}
if (optSenderPlaceholder.getState())
{
optSenderPlaceholderItemChanged();
}
}
}
public void chkCompanyReceiverItemChanged()
{
XTextFrame xReceiverFrame = null;
if (chkCompanyReceiver.getState() != 0)
{
try
{
xReceiverFrame = TextFrameHandler.getFrameByName("Receiver Address", xTextDocument);
Integer FrameWidth = (Integer) Helper.getUnoPropertyValue(xReceiverFrame, PropertyNames.PROPERTY_WIDTH);
int iFrameWidth = FrameWidth.intValue();
Integer FrameX = (Integer) Helper.getUnoPropertyValue(xReceiverFrame, "HoriOrientPosition");
int iFrameX = FrameX.intValue();
Integer FrameY = (Integer) Helper.getUnoPropertyValue(xReceiverFrame, "VertOrientPosition");
int iFrameY = FrameY.intValue();
//Height of the Company Address in the Receiver Field
int iReceiverHeight = (int) (0.5 * 1000);
BusCompanyAddressReceiver = myLetterDoc.new BusinessPaperObject(PropertyNames.SPACE, iFrameWidth, iReceiverHeight, iFrameX, (iFrameY - iReceiverHeight));
setPossibleAddressReceiver(false);
}
catch (NoSuchElementException e)
{
// TODO Error Message: Template modified!
e.printStackTrace();
}
catch (WrappedTargetException e)
{
e.printStackTrace();
}
if (chkPaperCompanyAddress.getState() != 0)
{
setPossibleSenderData(false);
}
}
else
{
if (BusCompanyAddressReceiver != null)
{
BusCompanyAddressReceiver.removeFrame();
}
setPossibleAddressReceiver(true);
setPossibleSenderData(true);
if (optSenderDefine.getState())
{
optSenderDefineItemChanged();
}
if (optSenderPlaceholder.getState())
{
optSenderPlaceholderItemChanged();
}
}
}
public void chkPaperFooterItemChanged()
{
if (chkPaperFooter.getState() != 0)
{
//minimal value is required, otherwise the frame creation fails
if (numFooterHeight.getValue() == 0)
{
numFooterHeight.setValue(0.1);
}
BusFooter = myLetterDoc.new BusinessPaperObject("Footer", myLetterDoc.DocSize.Width, (int) (numFooterHeight.getValue() * 1000), 0, (int) (myLetterDoc.DocSize.Height - (numFooterHeight.getValue() * 1000)));
this.setControlProperty("numFooterHeight", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
this.setControlProperty("lblFooterHeight", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
setPossibleFooter(false);
}
else
{
if (BusFooter != null)
{
BusFooter.removeFrame();
}
setControlProperty("numFooterHeight", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setControlProperty("lblFooterHeight", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
setPossibleFooter(true);
}
}
//switch Elements on/off -------------------------------------------------------
public void chkUseLogoItemChanged()
{
try
{
if (myLetterDoc.hasElement("Company Logo"))
{
boolean logostatus = AnyConverter.toBoolean(getControlProperty("chkUseLogo", PropertyNames.PROPERTY_ENABLED)) && (chkUseLogo.getState() != 0);
myLetterDoc.switchElement("Company Logo", logostatus);
}
}
catch (IllegalArgumentException e)
{
e.printStackTrace();
}
}
public void chkUseAddressReceiverItemChanged()
{
try
{
if (myLetterDoc.hasElement("Sender Address Repeated"))
{
boolean rstatus = AnyConverter.toBoolean(getControlProperty("chkUseAddressReceiver", PropertyNames.PROPERTY_ENABLED)) && (chkUseAddressReceiver.getState() != 0);
myLetterDoc.switchElement("Sender Address Repeated", rstatus);
}
}
catch (IllegalArgumentException e)
{
e.printStackTrace();
}
}
public void chkUseSignsItemChanged()
{
if (myLetterDoc.hasElement("Letter Signs"))
{
myLetterDoc.switchElement("Letter Signs", (chkUseSigns.getState() != 0));
}
}
public void chkUseSubjectItemChanged()
{
if (myLetterDoc.hasElement("Subject Line"))
{
myLetterDoc.switchElement("Subject Line", (chkUseSubject.getState() != 0));
}
}
public void chkUseBendMarksItemChanged()
{
if (myLetterDoc.hasElement("Bend Marks"))
{
myLetterDoc.switchElement("Bend Marks", (chkUseBendMarks.getState() != 0));
}
}
public void chkUseFooterItemChanged()
{
try
{
boolean bFooterPossible = (chkUseFooter.getState() != 0) && AnyConverter.toBoolean(getControlProperty("chkUseFooter", PropertyNames.PROPERTY_ENABLED));
if (chkFooterNextPages.getState() != 0)
{
myLetterDoc.switchFooter("First Page", false, (chkFooterPageNumbers.getState() != 0), txtFooter.getText());
myLetterDoc.switchFooter("Standard", bFooterPossible, (chkFooterPageNumbers.getState() != 0), txtFooter.getText());
}
else
{
myLetterDoc.switchFooter("First Page", bFooterPossible, (chkFooterPageNumbers.getState() != 0), txtFooter.getText());
myLetterDoc.switchFooter("Standard", bFooterPossible, (chkFooterPageNumbers.getState() != 0), txtFooter.getText());
}
//enable/disable roadmap item for footer page
XInterface BPaperItem = getRoadmapItemByID(RM_FOOTER);
Helper.setUnoPropertyValue(BPaperItem, PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(bFooterPossible));
}
catch (Exception exception)
{
exception.printStackTrace(System.out);
}
}
public void chkFooterNextPagesItemChanged()
{
chkUseFooterItemChanged();
}
public void chkFooterPageNumbersItemChanged()
{
chkUseFooterItemChanged();
}
private void setPossibleFooter(boolean bState)
{
setControlProperty("chkUseFooter", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(bState));
chkUseFooterItemChanged();
}
private void setPossibleAddressReceiver(boolean bState)
{
if (myLetterDoc.hasElement("Sender Address Repeated"))
{
setControlProperty("chkUseAddressReceiver", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(bState));
chkUseAddressReceiverItemChanged();
}
}
private void setPossibleLogo(boolean bState)
{
if (myLetterDoc.hasElement("Company Logo"))
{
setControlProperty("chkUseLogo", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(bState));
chkUseLogoItemChanged();
}
}
public void txtFooterTextChanged()
{
chkUseFooterItemChanged();
}
public void txtSenderNameTextChanged()
{
TextFieldHandler myFieldHandler = new TextFieldHandler(myLetterDoc.xMSF, xTextDocument);
myFieldHandler.changeUserFieldContent("Company", txtSenderName.getText());
}
public void txtSenderStreetTextChanged()
{
TextFieldHandler myFieldHandler = new TextFieldHandler(myLetterDoc.xMSF, xTextDocument);
myFieldHandler.changeUserFieldContent("Street", txtSenderStreet.getText());
}
public void txtSenderCityTextChanged()
{
TextFieldHandler myFieldHandler = new TextFieldHandler(myLetterDoc.xMSF, xTextDocument);
myFieldHandler.changeUserFieldContent("City", txtSenderCity.getText());
}
public void txtSenderPostCodeTextChanged()
{
TextFieldHandler myFieldHandler = new TextFieldHandler(myLetterDoc.xMSF, xTextDocument);
myFieldHandler.changeUserFieldContent("PostCode", txtSenderPostCode.getText());
}
public void txtSenderStateTextChanged()
{
TextFieldHandler myFieldHandler = new TextFieldHandler(myLetterDoc.xMSF, xTextDocument);
myFieldHandler.changeUserFieldContent(PropertyNames.PROPERTY_STATE, txtSenderState.getText());
}
public void txtTemplateNameTextChanged()
{
XDocumentPropertiesSupplier xDocPropsSuppl = UnoRuntime.queryInterface(XDocumentPropertiesSupplier.class, xTextDocument);
XDocumentProperties xDocProps = xDocPropsSuppl.getDocumentProperties();
String TitleName = txtTemplateName.getText();
xDocProps.setTitle(TitleName);
}
public void chkUseSalutationItemChanged()
{
XTextComponent xTextComponent = UnoRuntime.queryInterface(XTextComponent.class, lstSalutation);
myLetterDoc.switchUserField("Salutation", xTextComponent.getText(), (chkUseSalutation.getState() != 0));
setControlProperty("lstSalutation", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(chkUseSalutation.getState() != 0));
}
public void lstSalutationItemChanged()
{
XTextComponent xTextComponent = UnoRuntime.queryInterface(XTextComponent.class, lstSalutation);
myLetterDoc.switchUserField("Salutation", xTextComponent.getText(), (chkUseSalutation.getState() != 0));
}
public void lstSalutationTextChanged()
{
}
public void chkUseGreetingItemChanged()
{
XTextComponent xTextComponent = UnoRuntime.queryInterface(XTextComponent.class, lstGreeting);
myLetterDoc.switchUserField("Greeting", xTextComponent.getText(), (chkUseGreeting.getState() != 0));
setControlProperty("lstGreeting", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(chkUseGreeting.getState() != 0));
}
private void setDefaultForGreetingAndSalutation()
{
XTextComponent xTextComponent;
xTextComponent = UnoRuntime.queryInterface(XTextComponent.class, lstSalutation);
if (xTextComponent.getText().equals(PropertyNames.EMPTY_STRING))
{
xTextComponent.setText(resources.SalutationLabels[0]);
}
xTextComponent = UnoRuntime.queryInterface(XTextComponent.class, lstGreeting);
if (xTextComponent.getText().equals(PropertyNames.EMPTY_STRING))
{
xTextComponent.setText(resources.GreetingLabels[0]);
}
}
public void lstGreetingItemChanged()
{
XTextComponent xTextComponent = UnoRuntime.queryInterface(XTextComponent.class, lstGreeting);
myLetterDoc.switchUserField("Greeting", xTextComponent.getText(), (chkUseGreeting.getState() != 0));
}
public void lstGreetingTextChanged()
{
}
// ----------------------------------------------------------------------------
public void chkBusinessPaperItemChanged()
{
//enable/disable Roadmap Entry Business Paper
if (chkBusinessPaper.getState() != 0)
{
enableBusinessPaper();
}
else
{
disableBusinessPaper();
setPossibleSenderData(true);
}
}
private int getOfficeLinguistic()
{
int oL = 0;
boolean found = false;
String OfficeLinguistic = Configuration.getOfficeLinguistic(xMSF);
for (int i = 0; i < Norms.length; i++)
{
if (Norms[i].equalsIgnoreCase(OfficeLinguistic))
{
oL = i;
found = true;
break;
}
}
if (!found)
{
//fall back to English:
for (int i = 0; i < Norms.length; i++)
{
if (Norms[i].equalsIgnoreCase("en-US"))
{
oL = i;
found = true;
break;
}
}
}
return oL;
}
private void setPossibleSenderData(boolean bState)
{
setControlProperty("optSenderDefine", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(bState));
setControlProperty("optSenderPlaceholder", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(bState));
setControlProperty("lblSenderAddress", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(bState));
if (!bState)
{
setControlProperty("txtSenderCity", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(bState));
setControlProperty("txtSenderName", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(bState));
setControlProperty("txtSenderPostCode", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(bState));
setControlProperty("txtSenderStreet", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(bState));
setControlProperty("txtSenderCity", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(bState));
setControlProperty("txtSenderState", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(bState));
setControlProperty("lblSenderName", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(bState));
setControlProperty("lblSenderStreet", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(bState));
setControlProperty("lblPostCodeCity", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(bState));
}
}
private void enableSenderReceiver()
{
XInterface BPaperItem = getRoadmapItemByID(RM_SENDERRECEIVER);
Helper.setUnoPropertyValue(BPaperItem, PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
}
private void disableSenderReceiver()
{
XInterface BPaperItem = getRoadmapItemByID(RM_SENDERRECEIVER);
Helper.setUnoPropertyValue(BPaperItem, PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
}
private void enableBusinessPaper()
{
XInterface BPaperItem = getRoadmapItemByID(RM_BUSINESSPAPER);
Helper.setUnoPropertyValue(BPaperItem, PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
chkPaperCompanyLogoItemChanged();
chkPaperCompanyAddressItemChanged();
chkPaperFooterItemChanged();
chkCompanyReceiverItemChanged();
}
private void disableBusinessPaper()
{
XInterface BPaperItem = getRoadmapItemByID(RM_BUSINESSPAPER);
Helper.setUnoPropertyValue(BPaperItem, PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
if (BusCompanyLogo != null)
{
BusCompanyLogo.removeFrame();
}
if (BusCompanyAddress != null)
{
BusCompanyAddress.removeFrame();
}
if (BusFooter != null)
{
BusFooter.removeFrame();
}
if (BusCompanyAddressReceiver != null)
{
BusCompanyAddressReceiver.removeFrame();
}
setPossibleAddressReceiver(true);
setPossibleFooter(true);
setPossibleLogo(true);
if (myLetterDoc.hasElement("Sender Address"))
{
myLetterDoc.switchElement("Sender Address", (true));
}
}
public void lstLetterNormItemChanged()
{
//when the norm changes, the correct template needs to be reloaded
sCurrentNorm = Norms[getCurrentLetter().cp_Norm];
initializeTemplates(xMSF);
if (optBusinessLetter.getState())
{
lstBusinessStyleItemChanged();
}
if (optPrivOfficialLetter.getState())
{
lstPrivOfficialStyleItemChanged();
}
if (optPrivateLetter.getState())
{
lstPrivateStyleItemChanged();
}
}
public void initializeSalutation()
{
setControlProperty("lstSalutation", PropertyNames.STRING_ITEM_LIST, resources.SalutationLabels);
}
public void initializeGreeting()
{
setControlProperty("lstGreeting", PropertyNames.STRING_ITEM_LIST, resources.GreetingLabels);
}
public void initializeNorms()
{
LocaleCodes lc = new LocaleCodes(xmsf);
String[] allLocales = lc.getIDs();
Object[] nameList =
{
PropertyNames.EMPTY_STRING, PropertyNames.EMPTY_STRING
};
String[] nameList1 =
{
PropertyNames.EMPTY_STRING, PropertyNames.EMPTY_STRING
};
String[] nameList1b =
{
PropertyNames.EMPTY_STRING, PropertyNames.EMPTY_STRING
};
String[] nameList2 =
{
PropertyNames.EMPTY_STRING, PropertyNames.EMPTY_STRING
};
Vector allPaths = new Vector();
String sLetterSubPath = "/wizard/letter/";
try
{
sTemplatePath = FileAccess.deleteLastSlashfromUrl(sTemplatePath);
String[] PathParts = sTemplatePath.split("/");
String nuString = PropertyNames.EMPTY_STRING;
String sMainPath;
for (int i = 0; i < (PathParts.length - 1); i++)
{
nuString = nuString + PathParts[i] + "/";
}
String sLocLetterPath;
sMainPath = nuString;
sMainPath = FileAccess.deleteLastSlashfromUrl(sMainPath);
sLetterPath = sMainPath + sLetterSubPath;
//sLetterLangPackPath = FileAccess.combinePaths(xMSF, sTemplatePath, sLetterSubPath);
XInterface xInterface = (XInterface) xMSF.createInstance("com.sun.star.ucb.SimpleFileAccess");
com.sun.star.ucb.XSimpleFileAccess xSimpleFileAccess = UnoRuntime.queryInterface(com.sun.star.ucb.XSimpleFileAccess.class, xInterface);
nameList1 = xSimpleFileAccess.getFolderContents(sMainPath, true);
nameList2 = xSimpleFileAccess.getFolderContents(sLetterPath, true);
for (int i = 0; i < nameList1.length; i++)
{
String theFileName = FileAccess.getFilename(nameList1[i]);
if (!theFileName.equalsIgnoreCase("wizard"))
{
sLocLetterPath = FileAccess.deleteLastSlashfromUrl(nameList1[i] + sLetterSubPath);
try
{
nameList1b = xSimpleFileAccess.getFolderContents(sLocLetterPath, true);
for (int j = 0; j < nameList1b.length; j++)
{
String theFileNameb = FileAccess.getFilename(nameList1b[j]);
allPaths.add(nameList1[i] + sLetterSubPath + theFileNameb);
}
}
catch (Exception e)
{
//if the path is invalid an exception is thrown - try the fallback below then
}
}
}
for (int i = 0; i < nameList2.length; i++)
{
boolean found = false;
for (int t = 0; t < nameList1.length; t++)
{
if (FileAccess.getFilename(nameList2[i]).equalsIgnoreCase(FileAccess.getFilename(nameList1[t])))
{
found = true;
}
}
if (!found)
{
allPaths.add(nameList2[i]);
}
}
nameList = allPaths.toArray();
}
catch (CommandAbortedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
//} catch (NoValidPathException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
Vector NormsVector = new Vector();
Vector NormsPathVector = new Vector();
Vector LanguageLabelsVector = new Vector();
String[] LanguageLabels;
boolean found = false;
String cIsoCode = PropertyNames.EMPTY_STRING;
String MSID = PropertyNames.EMPTY_STRING;
int z = 0;
for (int i = 0; i < nameList.length; i++)
{
found = false;
cIsoCode = FileAccess.getFilename((String) nameList[i]);
for (int t = 0; t < allLocales.length; t++)
{
String[] aLang = allLocales[t].split(PropertyNames.SEMI_COLON);
if (cIsoCode.equalsIgnoreCase(aLang[1]))
{
MSID = aLang[2];
found = true;
t = allLocales.length;
}
}
if (!found)
{
for (int t = 0; t < allLocales.length; t++)
{
String[] aLang = allLocales[t].split(PropertyNames.SEMI_COLON);
if (cIsoCode.equalsIgnoreCase(aLang[1].substring(0, 2)))
{
MSID = aLang[2];
found = true;
t = allLocales.length;
}
}
}
if (found)
{
NormsVector.add(cIsoCode);
NormsPathVector.add(nameList[i]);
LanguageLabelsVector.add(lc.getLanguageString(MSID));
/*
Norms[z] = cIsoCode;
NormPaths[z] = (String) nameList[i];
LanguageLabels[z] = lc.getLanguageString(MSID);
z++;
**/
}
}
Norms = new String[NormsVector.size()];
NormsVector.toArray(Norms);
NormPaths = new String[NormsPathVector.size()];
NormsPathVector.toArray(NormPaths);
LanguageLabels = new String[LanguageLabelsVector.size()];
LanguageLabelsVector.toArray(LanguageLabels);
//Norms = new String[nameList.length];
//NormPaths = new String[nameList.length];
//LanguageLabels = new String[Norms.length];
setControlProperty("lstLetterNorm", PropertyNames.STRING_ITEM_LIST, LanguageLabels);
}
private CGLetter getCurrentLetter()
{
switch (myConfig.cp_LetterType)
{
case 0:
return myConfig.cp_BusinessLetter;
case 1:
return myConfig.cp_PrivateOfficialLetter;
case 2:
return myConfig.cp_PrivateLetter;
default:
return null;
}
}
private void initializePaths()
{
try
{
sTemplatePath = FileAccess.getOfficePath(xMSF, "Template", "share", "/wizard");
sUserTemplatePath = FileAccess.getOfficePath(xMSF, "Template", "user", PropertyNames.EMPTY_STRING);
sBitmapPath = FileAccess.combinePaths(xMSF, sTemplatePath, "/../wizard/bitmap");
}
catch (NoValidPathException e)
{
e.printStackTrace();
}
}
public boolean initializeTemplates(XMultiServiceFactory xMSF)
{
sCurrentNorm = Norms[getCurrentLetter().cp_Norm];
//creation of the language independent path:
String sLetterPath = NormPaths[getCurrentLetter().cp_Norm];
// try
// {
BusinessFiles = FileAccess.getFolderTitles(xMSF, "bus", sLetterPath);
OfficialFiles = FileAccess.getFolderTitles(xMSF, "off", sLetterPath);
PrivateFiles = FileAccess.getFolderTitles(xMSF, "pri", sLetterPath);
setControlProperty("lstBusinessStyle", PropertyNames.STRING_ITEM_LIST, BusinessFiles[0]);
setControlProperty("lstPrivOfficialStyle", PropertyNames.STRING_ITEM_LIST, OfficialFiles[0]);
setControlProperty("lstPrivateStyle", PropertyNames.STRING_ITEM_LIST, PrivateFiles[0]);
setControlProperty("lstBusinessStyle", PropertyNames.SELECTED_ITEMS, new short[]
{
0
});
setControlProperty("lstPrivOfficialStyle", PropertyNames.SELECTED_ITEMS, new short[]
{
0
});
setControlProperty("lstPrivateStyle", PropertyNames.SELECTED_ITEMS, new short[]
{
0
});
// }
// catch (com.sun.star.wizards.common.NoValidPathException e)
// {
// return false;
// }
return true;
}
public void initializeElements()
{
setControlProperty("chkUseLogo", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(myLetterDoc.hasElement("Company Logo")));
setControlProperty("chkUseBendMarks", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(myLetterDoc.hasElement("Bend Marks")));
setControlProperty("chkUseAddressReceiver", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(myLetterDoc.hasElement("Sender Address Repeated")));
setControlProperty("chkUseSubject", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(myLetterDoc.hasElement("Subject Line")));
setControlProperty("chkUseSigns", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(myLetterDoc.hasElement("Letter Signs")));
myLetterDoc.updateDateFields();
}
public void setConfiguration()
{
//set correct Configuration tree:
if (optBusinessLetter.getState())
{
optBusinessLetterItemChanged();
}
if (optPrivOfficialLetter.getState())
{
optPrivOfficialLetterItemChanged();
}
if (optPrivateLetter.getState())
{
optPrivateLetterItemChanged();
}
}
public void setElements(boolean privLetter)
{
//UI relevant:
if (optSenderDefine.getState())
{
optSenderDefineItemChanged();
}
if (optSenderPlaceholder.getState())
{
optSenderPlaceholderItemChanged();
}
chkUseSignsItemChanged();
chkUseSubjectItemChanged();
chkUseSalutationItemChanged();
chkUseGreetingItemChanged();
chkUseBendMarksItemChanged();
chkUseAddressReceiverItemChanged();
txtTemplateNameTextChanged();
//not UI relevant:
if (optReceiverDatabase.getState() && !privLetter)
{
optReceiverDatabaseItemChanged();
}
if (optReceiverPlaceholder.getState() && !privLetter)
{
optReceiverPlaceholderItemChanged();
}
if (optCreateLetter.getState())
{
optCreateLetterItemChanged();
}
if (optMakeChanges.getState())
{
optMakeChangesItemChanged();
}
}
public void insertRoadmap()
{
addRoadmap();
int i = 0;
i = insertRoadmapItem(0, true, resources.RoadmapLabels[RM_TYPESTYLE], RM_TYPESTYLE);
i = insertRoadmapItem(i, false, resources.RoadmapLabels[RM_BUSINESSPAPER], RM_BUSINESSPAPER);
i = insertRoadmapItem(i, true, resources.RoadmapLabels[RM_ELEMENTS], RM_ELEMENTS);
i = insertRoadmapItem(i, true, resources.RoadmapLabels[RM_SENDERRECEIVER], RM_SENDERRECEIVER);
i = insertRoadmapItem(i, false, resources.RoadmapLabels[RM_FOOTER], RM_FOOTER);
i = insertRoadmapItem(i, true, resources.RoadmapLabels[RM_FINALSETTINGS], RM_FINALSETTINGS);
setRoadmapInteractive(true);
setRoadmapComplete(true);
setCurrentRoadmapItemID((short) 1);
}
private class myPathSelectionListener implements XPathSelectionListener
{
public void validatePath()
{
if (myPathSelection.usedPathPicker)
{
filenameChanged = true;
}
myPathSelection.usedPathPicker = false;
}
}
public void insertPathSelectionControl()
{
myPathSelection = new PathSelection(xMSF, this, PathSelection.TransferMode.SAVE, PathSelection.DialogTypes.FILE);
myPathSelection.insert(6, 97, 70, 205, (short) 45, resources.reslblTemplatePath_value, true, HelpIds.getHelpIdString(HID + 47), HelpIds.getHelpIdString(HID + 48));
myPathSelection.sDefaultDirectory = sUserTemplatePath;
myPathSelection.sDefaultName = "myLetterTemplate.ott";
myPathSelection.sDefaultFilter = "writer8_template";
myPathSelection.addSelectionListener(new myPathSelectionListener());
}
public void initConfiguration()
{
try
{
myConfig = new CGLetterWizard();
Object root = Configuration.getConfigurationRoot(xMSF, "/org.openoffice.Office.Writer/Wizards/Letter", false);
myConfig.readConfiguration(root, "cp_");
mainDA.add(RadioDataAware.attachRadioButtons(myConfig, "cp_LetterType", new Object[]
{
optBusinessLetter, optPrivOfficialLetter, optPrivateLetter
}, null, true));
mainDA.add(UnoDataAware.attachListBox(myConfig.cp_BusinessLetter, "cp_Style", lstBusinessStyle, null, true));
mainDA.add(UnoDataAware.attachListBox(myConfig.cp_PrivateOfficialLetter, "cp_Style", lstPrivOfficialStyle, null, true));
mainDA.add(UnoDataAware.attachListBox(myConfig.cp_PrivateLetter, "cp_Style", lstPrivateStyle, null, true));
mainDA.add(UnoDataAware.attachCheckBox(myConfig.cp_BusinessLetter, "cp_BusinessPaper", chkBusinessPaper, null, true));
CGLetter cgl = myConfig.cp_BusinessLetter;
CGPaperElementLocation cgpl = myConfig.cp_BusinessLetter.cp_CompanyLogo;
CGPaperElementLocation cgpa = myConfig.cp_BusinessLetter.cp_CompanyAddress;
businessDA.add(UnoDataAware.attachCheckBox(cgpl, "cp_Display", chkPaperCompanyLogo, null, true));
businessDA.add(UnoDataAware.attachNumericControl(cgpl, "cp_Width", numLogoWidth, null, true));
businessDA.add(UnoDataAware.attachNumericControl(cgpl, "cp_Height", numLogoHeight, null, true));
businessDA.add(UnoDataAware.attachNumericControl(cgpl, "cp_X", numLogoX, null, true));
businessDA.add(UnoDataAware.attachNumericControl(cgpl, "cp_Y", numLogoY, null, true));
businessDA.add(UnoDataAware.attachCheckBox(cgpa, "cp_Display", chkPaperCompanyAddress, null, true));
businessDA.add(UnoDataAware.attachNumericControl(cgpa, "cp_Width", numAddressWidth, null, true));
businessDA.add(UnoDataAware.attachNumericControl(cgpa, "cp_Height", numAddressHeight, null, true));
businessDA.add(UnoDataAware.attachNumericControl(cgpa, "cp_X", numAddressX, null, true));
businessDA.add(UnoDataAware.attachNumericControl(cgpa, "cp_Y", numAddressY, null, true));
businessDA.add(UnoDataAware.attachCheckBox(cgl, "cp_PaperCompanyAddressReceiverField", chkCompanyReceiver, null, true));
businessDA.add(UnoDataAware.attachCheckBox(cgl, "cp_PaperFooter", chkPaperFooter, null, true));
businessDA.add(UnoDataAware.attachNumericControl(cgl, "cp_PaperFooterHeight", numFooterHeight, null, true));
letterDA.add(UnoDataAware.attachListBox(cgl, "cp_Norm", lstLetterNorm, null, true));
letterDA.add(UnoDataAware.attachCheckBox(cgl, "cp_PrintCompanyLogo", chkUseLogo, null, true));
letterDA.add(UnoDataAware.attachCheckBox(cgl, "cp_PrintCompanyAddressReceiverField", chkUseAddressReceiver, null, true));
letterDA.add(UnoDataAware.attachCheckBox(cgl, "cp_PrintLetterSigns", chkUseSigns, null, true));
letterDA.add(UnoDataAware.attachCheckBox(cgl, "cp_PrintSubjectLine", chkUseSubject, null, true));
letterDA.add(UnoDataAware.attachCheckBox(cgl, "cp_PrintSalutation", chkUseSalutation, null, true));
letterDA.add(UnoDataAware.attachCheckBox(cgl, "cp_PrintBendMarks", chkUseBendMarks, null, true));
letterDA.add(UnoDataAware.attachCheckBox(cgl, "cp_PrintGreeting", chkUseGreeting, null, true));
letterDA.add(UnoDataAware.attachCheckBox(cgl, "cp_PrintFooter", chkUseFooter, null, true));
letterDA.add(UnoDataAware.attachEditControl(cgl, "cp_Salutation", lstSalutation, null, true));
letterDA.add(UnoDataAware.attachEditControl(cgl, "cp_Greeting", lstGreeting, null, true));
letterDA.add(RadioDataAware.attachRadioButtons(cgl, "cp_SenderAddressType", new Object[]
{
optSenderDefine, optSenderPlaceholder
}, null, true));
letterDA.add(UnoDataAware.attachEditControl(cgl, "cp_SenderCompanyName", txtSenderName, null, true));
letterDA.add(UnoDataAware.attachEditControl(cgl, "cp_SenderStreet", txtSenderStreet, null, true));
letterDA.add(UnoDataAware.attachEditControl(cgl, "cp_SenderPostCode", txtSenderPostCode, null, true));
letterDA.add(UnoDataAware.attachEditControl(cgl, "cp_SenderState", txtSenderState, null, true));
letterDA.add(UnoDataAware.attachEditControl(cgl, "cp_SenderCity", txtSenderCity, null, true));
letterDA.add(RadioDataAware.attachRadioButtons(cgl, "cp_ReceiverAddressType", new Object[]
{
optReceiverDatabase, optReceiverPlaceholder
}, null, true));
letterDA.add(UnoDataAware.attachEditControl(cgl, "cp_Footer", txtFooter, null, true));
letterDA.add(UnoDataAware.attachCheckBox(cgl, "cp_FooterOnlySecondPage", chkFooterNextPages, null, true));
letterDA.add(UnoDataAware.attachCheckBox(cgl, "cp_FooterPageNumbers", chkFooterPageNumbers, null, true));
letterDA.add(RadioDataAware.attachRadioButtons(cgl, "cp_CreationType", new Object[]
{
optCreateLetter, optMakeChanges
}, null, true));
letterDA.add(UnoDataAware.attachEditControl(cgl, "cp_TemplateName", txtTemplateName, null, true));
letterDA.add(UnoDataAware.attachEditControl(cgl, "cp_TemplatePath", myPathSelection.xSaveTextBox, null, true));
}
catch (Exception exception)
{
exception.printStackTrace();
}
}
private void updateUI()
{
UnoDataAware.updateUI(mainDA);
UnoDataAware.updateUI(letterDA);
UnoDataAware.updateUI(businessDA);
}
public void saveConfiguration()
{
try
{
Object root = Configuration.getConfigurationRoot(xMSF, "/org.openoffice.Office.Writer/Wizards/Letter", true);
myConfig.writeConfiguration(root, "cp_");
Configuration.commit(root);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}