Hi Carsten,

On 7/14/06, Carsten Driesner <[EMAIL PROTECTED]> wrote:
You can see that the configuration set "Factories" contains nodes for
every appplication module, in the example
"com.sun.star.frame.StartModule" and "com.sun.star.text.TextDocument".
The property called "ooSetupFactoryWindowAttributes" stores the left,top
position and the width and height in pixel. You can use the
configuration API to change these values programmatically.

thanks. this works!

if you are interested in the solution, just have a look at example code below.

I am not sure if the current implementation reads the values for every
new window or if it just uses internal values. So it's possible that the
values are only read once  from the configuration at startup time. Be
aware that these values will be overwritten when a user changes the
position or size of an application window.

it seems that the current implementation reads the attribue for every
new window and doesn't use internal values!

here the example code:

   /**
    * Diese Hilfsmethode liest das Attribut ooSetupFactoryWindowAttributes aus
    * dem Konfigurationsknoten
    * "/org.openoffice.Setup/Office/Factories/com.sun.star.text.TextDocument"
    * der OOo-Konfiguration, welches die Standard-FensterAttribute enthält, mit
    * denen neue Fenster für TextDokumente erzeugt werden.
    *
    * @return
    */
   private static String getDefaultWindowAttributes(XComponentContext ctx) {
       try {
           Object cp = ctx.getServiceManager().createInstanceWithContext(
               "com.sun.star.configuration.ConfigurationProvider", ctx);

           // creation arguments: nodepath
           com.sun.star.beans.PropertyValue aPathArgument = new
com.sun.star.beans.PropertyValue();
           aPathArgument.Name = "nodepath";
           aPathArgument.Value =
"/org.openoffice.Setup/Office/Factories/com.sun.star.text.TextDocument";
           Object[] aArguments = new Object[1];
           aArguments[0] = aPathArgument;

           XMultiServiceFactory xmsf = (XMultiServiceFactory) UnoRuntime
               .queryInterface(XMultiServiceFactory.class, cp);
           Object ca = xmsf.createInstanceWithArguments(
               "com.sun.star.configuration.ConfigurationUpdateAccess",
               aArguments);

           XPropertySet prop = (XPropertySet) UnoRuntime.queryInterface(
               XPropertySet.class, ca);
           return prop
               .getPropertyValue("ooSetupFactoryWindowAttributes").toString();
       } catch (java.lang.Exception e) {
       }
       return null;
   }

   /**
    * Diese Hilfsmethode setzt das Attribut ooSetupFactoryWindowAttributes aus
    * dem Konfigurationsknoten
    * "/org.openoffice.Setup/Office/Factories/com.sun.star.text.TextDocument"
    * der OOo-Konfiguration auf den neuen Wert value, der (am besten) über
    * einen vorhergehenden Aufruf von getDefaultWindowAttributes() gewonnen
    * wird.
    *
    * @param value
    */
   private static void setDefaultWindowAttributes(XComponentContext ctx,
           String value) {
       try {
           Object cp = ctx.getServiceManager().createInstanceWithContext(
               "com.sun.star.configuration.ConfigurationProvider", ctx);

           // creation arguments: nodepath
           com.sun.star.beans.PropertyValue aPathArgument = new
com.sun.star.beans.PropertyValue();
           aPathArgument.Name = "nodepath";
           aPathArgument.Value =
"/org.openoffice.Setup/Office/Factories/com.sun.star.text.TextDocument";
           Object[] aArguments = new Object[1];
           aArguments[0] = aPathArgument;

           XMultiServiceFactory xmsf = (XMultiServiceFactory) UnoRuntime
               .queryInterface(XMultiServiceFactory.class, cp);
           Object ca = xmsf.createInstanceWithArguments(
               "com.sun.star.configuration.ConfigurationUpdateAccess",
               aArguments);

           XPropertySet prop = (XPropertySet) UnoRuntime.queryInterface(
               XPropertySet.class, ca);
           prop.setPropertyValue("ooSetupFactoryWindowAttributes", value);

           XChangesBatch committer = (XChangesBatch) UnoRuntime
               .queryInterface(XChangesBatch.class, ca);
           committer.commitChanges();
       } catch (java.lang.Exception e) {
       }
   }

regards,
Christoph

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to