You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openoffice.apache.org by Carsten Demmrich <c....@demmtop.de> on 2012/08/27 11:02:08 UTC

[API] Problem with currency formatter in text field

Hello, i have a problem with formatting of a text field. I create a text 
field in Java and insert this in a document.
The content is 0.0 and the format is the default currency. But the 
content is not formatted. The document show me 0.0 and not 0,00 €.
Why?

     private void setTextField(Object[] value)
     {
         try
         {
             XTextDocument xTextDocument = (XTextDocument) 
UnoRuntime.queryInterface(XTextDocument.class, oBean.getDocument());
             XController xController = 
xTextDocument.getCurrentController();
             XTextViewCursorSupplier xTextViewCursorSupplier = 
(XTextViewCursorSupplier) 
UnoRuntime.queryInterface(XTextViewCursorSupplier.class, xController);
             XTextViewCursor xDocTextCursor = 
xTextViewCursorSupplier.getViewCursor();

             XText xText = xDocTextCursor.getText();

             xText.insertTextContent(xDocTextCursor, 
createTextField(xTextDocument, (String) value[2], (String) value[1]), 
false);
         }
         catch (Exception e)
         {
             logger.error(e);
         }
     }

private XDependentTextField createTextField(XTextDocument xTextDocument, 
String fieldName, String fieldValue)
     {
         XMultiServiceFactory xMultiServiceFactory = 
(XMultiServiceFactory) 
UnoRuntime.queryInterface(XMultiServiceFactory.class, xTextDocument);
         XTextFieldsSupplier xTextFieldsSupplier = (XTextFieldsSupplier) 
UnoRuntime.queryInterface(XTextFieldsSupplier.class, xTextDocument);
         XNameAccess xNamedFieldMasters = 
xTextFieldsSupplier.getTextFieldMasters();
         XDependentTextField userField = null;
         XPropertySet masterPropSet = null;

         try
         {
             // Create the field...
             userField = (XDependentTextField) 
UnoRuntime.queryInterface(XDependentTextField.class, 
xMultiServiceFactory.createInstance("com.sun.star.text.TextField.User"));

             if 
(!xNamedFieldMasters.hasByName("com.sun.star.text.FieldMaster.User." + 
fieldName))
             {
                 // Create the field master...
                 masterPropSet = (XPropertySet) 
UnoRuntime.queryInterface(XPropertySet.class, 
xMultiServiceFactory.createInstance("com.sun.star.text.FieldMaster.User"));

                 // Set the field name and content...
                 masterPropSet.setPropertyValue("Name", fieldName);
                 masterPropSet.setPropertyValue("Content", fieldValue);

                 if (fieldValue.equals("0.0"))
                 {
                     // Query the number formats supplier of the document
                     com.sun.star.util.XNumberFormatsSupplier 
xNumberFormatsSupplier = (com.sun.star.util.XNumberFormatsSupplier) 
UnoRuntime.queryInterface(com.sun.star.util.XNumberFormatsSupplier.class, xTextDocument); 


                     // Get the number formats from the supplier
                     com.sun.star.util.XNumberFormats xNumberFormats = 
xNumberFormatsSupplier.getNumberFormats();

                     // Query the XNumberFormatTypes interface
                     com.sun.star.util.XNumberFormatTypes 
xNumberFormatTypes = (com.sun.star.util.XNumberFormatTypes) 
UnoRuntime.queryInterface(com.sun.star.util.XNumberFormatTypes.class, 
xNumberFormats);

                     // Get the number format index key of the default 
currency
                     // format,
                     // note the empty locale for default locale
                     com.sun.star.lang.Locale aLocale = new 
com.sun.star.lang.Locale();
                     int nCurrencyKey = 
xNumberFormatTypes.getStandardFormat(com.sun.star.util.NumberFormat.CURRENCY, 
aLocale);

                     XPropertySet fieldProperties = (XPropertySet) 
UnoRuntime.queryInterface(XPropertySet.class, userField);
                     fieldProperties.setPropertyValue("NumberFormat", 
new Integer(nCurrencyKey));

                 }
             }
             else
             {
                 masterPropSet = (XPropertySet) 
UnoRuntime.queryInterface(XPropertySet.class, 
xNamedFieldMasters.getByName("com.sun.star.text.FieldMaster.User." + 
fieldName));
             }

             // Attach the fieldmaster to the field...
             userField.attachTextFieldMaster(masterPropSet);
         }
         catch (java.lang.Exception e)
         {
              logger.error(e);
         }
         return userField;
     }

Kind regrads
Carsten



Re: [API] Problem with currency formatter in text field

Posted by Carsten Demmrich <c....@demmtop.de>.
Hi Fernand,

the refresh don´t have a effect.

// Attach the fieldmaster to the field...
userField.attachTextFieldMaster(masterPropSet);
((XRefreshable) UnoRuntime.queryInterface(XRefreshable.class, 
xTextFieldsSupplier.getTextFields())).refresh();

Am 27.08.2012 11:48, schrieb Fernand Vanrie:
> Carsten ,
>
> you need a "refresch" off the field ?
>
> hope it helps
>
> Fernand
>> Hello, i have a problem with formatting of a text field. I create a 
>> text field in Java and insert this in a document.
>> The content is 0.0 and the format is the default currency. But the 
>> content is not formatted. The document show me 0.0 and not 0,00 €.
>> Why?
>>
>> private void setTextField(Object[] value)
>> {
>> try
>> {
>> XTextDocument xTextDocument = (XTextDocument) 
>> UnoRuntime.queryInterface(XTextDocument.class, oBean.getDocument());
>> XController xController = xTextDocument.getCurrentController();
>> XTextViewCursorSupplier xTextViewCursorSupplier = 
>> (XTextViewCursorSupplier) 
>> UnoRuntime.queryInterface(XTextViewCursorSupplier.class, xController);
>> XTextViewCursor xDocTextCursor = 
>> xTextViewCursorSupplier.getViewCursor();
>>
>> XText xText = xDocTextCursor.getText();
>>
>> xText.insertTextContent(xDocTextCursor, 
>> createTextField(xTextDocument, (String) value[2], (String) value[1]), 
>> false);
>> }
>> catch (Exception e)
>> {
>> logger.error(e);
>> }
>> }
>>
>> private XDependentTextField createTextField(XTextDocument 
>> xTextDocument, String fieldName, String fieldValue)
>> {
>> XMultiServiceFactory xMultiServiceFactory = (XMultiServiceFactory) 
>> UnoRuntime.queryInterface(XMultiServiceFactory.class, xTextDocument);
>> XTextFieldsSupplier xTextFieldsSupplier = (XTextFieldsSupplier) 
>> UnoRuntime.queryInterface(XTextFieldsSupplier.class, xTextDocument);
>> XNameAccess xNamedFieldMasters = 
>> xTextFieldsSupplier.getTextFieldMasters();
>> XDependentTextField userField = null;
>> XPropertySet masterPropSet = null;
>>
>> try
>> {
>> // Create the field...
>> userField = (XDependentTextField) 
>> UnoRuntime.queryInterface(XDependentTextField.class, 
>> xMultiServiceFactory.createInstance("com.sun.star.text.TextField.User"));
>>
>> if 
>> (!xNamedFieldMasters.hasByName("com.sun.star.text.FieldMaster.User." 
>> + fieldName))
>> {
>> // Create the field master...
>> masterPropSet = (XPropertySet) 
>> UnoRuntime.queryInterface(XPropertySet.class, 
>> xMultiServiceFactory.createInstance("com.sun.star.text.FieldMaster.User"));
>>
>> // Set the field name and content...
>> masterPropSet.setPropertyValue("Name", fieldName);
>> masterPropSet.setPropertyValue("Content", fieldValue);
>>
>> if (fieldValue.equals("0.0"))
>> {
>> // Query the number formats supplier of the document
>> com.sun.star.util.XNumberFormatsSupplier xNumberFormatsSupplier = 
>> (com.sun.star.util.XNumberFormatsSupplier) 
>> UnoRuntime.queryInterface(com.sun.star.util.XNumberFormatsSupplier.class, 
>> xTextDocument);
>>
>> // Get the number formats from the supplier
>> com.sun.star.util.XNumberFormats xNumberFormats = 
>> xNumberFormatsSupplier.getNumberFormats();
>>
>> // Query the XNumberFormatTypes interface
>> com.sun.star.util.XNumberFormatTypes xNumberFormatTypes = 
>> (com.sun.star.util.XNumberFormatTypes) 
>> UnoRuntime.queryInterface(com.sun.star.util.XNumberFormatTypes.class, 
>> xNumberFormats);
>>
>> // Get the number format index key of the default currency
>> // format,
>> // note the empty locale for default locale
>> com.sun.star.lang.Locale aLocale = new com.sun.star.lang.Locale();
>> int nCurrencyKey = 
>> xNumberFormatTypes.getStandardFormat(com.sun.star.util.NumberFormat.CURRENCY, 
>> aLocale);
>>
>> XPropertySet fieldProperties = (XPropertySet) 
>> UnoRuntime.queryInterface(XPropertySet.class, userField);
>> fieldProperties.setPropertyValue("NumberFormat", new 
>> Integer(nCurrencyKey));
>>
>> }
>> }
>> else
>> {
>> masterPropSet = (XPropertySet) 
>> UnoRuntime.queryInterface(XPropertySet.class, 
>> xNamedFieldMasters.getByName("com.sun.star.text.FieldMaster.User." + 
>> fieldName));
>> }
>>
>> // Attach the fieldmaster to the field...
>> userField.attachTextFieldMaster(masterPropSet);
>> }
>> catch (java.lang.Exception e)
>> {
>> logger.error(e);
>> }
>> return userField;
>> }
>>
>> Kind regrads
>> Carsten
>>
>>
>>


Re: [API] Problem with currency formatter in text field

Posted by Fernand Vanrie <so...@pmgroup.be>.
  Carsten ,

you need a "refresch" off the field ?

hope it helps

Fernand
> Hello, i have a problem with formatting of a text field. I create a 
> text field in Java and insert this in a document.
> The content is 0.0 and the format is the default currency. But the 
> content is not formatted. The document show me 0.0 and not 0,00 €.
> Why?
>
>     private void setTextField(Object[] value)
>     {
>         try
>         {
>             XTextDocument xTextDocument = (XTextDocument) 
> UnoRuntime.queryInterface(XTextDocument.class, oBean.getDocument());
>             XController xController = 
> xTextDocument.getCurrentController();
>             XTextViewCursorSupplier xTextViewCursorSupplier = 
> (XTextViewCursorSupplier) 
> UnoRuntime.queryInterface(XTextViewCursorSupplier.class, xController);
>             XTextViewCursor xDocTextCursor = 
> xTextViewCursorSupplier.getViewCursor();
>
>             XText xText = xDocTextCursor.getText();
>
>             xText.insertTextContent(xDocTextCursor, 
> createTextField(xTextDocument, (String) value[2], (String) value[1]), 
> false);
>         }
>         catch (Exception e)
>         {
>             logger.error(e);
>         }
>     }
>
> private XDependentTextField createTextField(XTextDocument 
> xTextDocument, String fieldName, String fieldValue)
>     {
>         XMultiServiceFactory xMultiServiceFactory = 
> (XMultiServiceFactory) 
> UnoRuntime.queryInterface(XMultiServiceFactory.class, xTextDocument);
>         XTextFieldsSupplier xTextFieldsSupplier = 
> (XTextFieldsSupplier) 
> UnoRuntime.queryInterface(XTextFieldsSupplier.class, xTextDocument);
>         XNameAccess xNamedFieldMasters = 
> xTextFieldsSupplier.getTextFieldMasters();
>         XDependentTextField userField = null;
>         XPropertySet masterPropSet = null;
>
>         try
>         {
>             // Create the field...
>             userField = (XDependentTextField) 
> UnoRuntime.queryInterface(XDependentTextField.class, 
> xMultiServiceFactory.createInstance("com.sun.star.text.TextField.User"));
>
>             if 
> (!xNamedFieldMasters.hasByName("com.sun.star.text.FieldMaster.User." + 
> fieldName))
>             {
>                 // Create the field master...
>                 masterPropSet = (XPropertySet) 
> UnoRuntime.queryInterface(XPropertySet.class, 
> xMultiServiceFactory.createInstance("com.sun.star.text.FieldMaster.User"));
>
>                 // Set the field name and content...
>                 masterPropSet.setPropertyValue("Name", fieldName);
>                 masterPropSet.setPropertyValue("Content", fieldValue);
>
>                 if (fieldValue.equals("0.0"))
>                 {
>                     // Query the number formats supplier of the document
>                     com.sun.star.util.XNumberFormatsSupplier 
> xNumberFormatsSupplier = (com.sun.star.util.XNumberFormatsSupplier) 
> UnoRuntime.queryInterface(com.sun.star.util.XNumberFormatsSupplier.class, 
> xTextDocument);
>
>                     // Get the number formats from the supplier
>                     com.sun.star.util.XNumberFormats xNumberFormats = 
> xNumberFormatsSupplier.getNumberFormats();
>
>                     // Query the XNumberFormatTypes interface
>                     com.sun.star.util.XNumberFormatTypes 
> xNumberFormatTypes = (com.sun.star.util.XNumberFormatTypes) 
> UnoRuntime.queryInterface(com.sun.star.util.XNumberFormatTypes.class, 
> xNumberFormats);
>
>                     // Get the number format index key of the default 
> currency
>                     // format,
>                     // note the empty locale for default locale
>                     com.sun.star.lang.Locale aLocale = new 
> com.sun.star.lang.Locale();
>                     int nCurrencyKey = 
> xNumberFormatTypes.getStandardFormat(com.sun.star.util.NumberFormat.CURRENCY, 
> aLocale);
>
>                     XPropertySet fieldProperties = (XPropertySet) 
> UnoRuntime.queryInterface(XPropertySet.class, userField);
> fieldProperties.setPropertyValue("NumberFormat", new 
> Integer(nCurrencyKey));
>
>                 }
>             }
>             else
>             {
>                 masterPropSet = (XPropertySet) 
> UnoRuntime.queryInterface(XPropertySet.class, 
> xNamedFieldMasters.getByName("com.sun.star.text.FieldMaster.User." + 
> fieldName));
>             }
>
>             // Attach the fieldmaster to the field...
>             userField.attachTextFieldMaster(masterPropSet);
>         }
>         catch (java.lang.Exception e)
>         {
>              logger.error(e);
>         }
>         return userField;
>     }
>
> Kind regrads
> Carsten
>
>
>