🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[erledigt]Java bootstrap Mauszeiger verändern

Alles zur Programmierung im LibreOffice.
Antworten
gerderich
Beiträge: 25
Registriert: Sa 17. Mai 2014, 16:59

[erledigt]Java bootstrap Mauszeiger verändern

Beitrag von gerderich » Do 21. Mai 2015, 09:40

Moin,

mit Java habe ich eine Datenbankaplikation geschrieben. Es werden u.A. Daten aus einer Postgresql Datenbank geholt und so aufbereitet, das in einem SWriter Dokument Reports und in einem SCalc Dokument Charts dargestellt werden. Das funktioniert alles ganz wunderbar.
Es gibt ein User Problem. Wird z.B. ein Report erstellt, und es gibt noch keine LO Instance, dann wird diese mit

Code: Alles auswählen

private XMultiComponentFactory getRemoteServiceManager()
            throws java.lang.Exception
    {
        if (mxRemoteContext == null && mxRemoteServiceManager == null){
            // get the remote office context. If necessary a new office
            // process is startet
            mxRemoteContext = com.sun.star.comp.helper.Bootstrap.bootstrap();
            if (bDebug){
                Logger.log("Connected to a running office ...");
            }
            mxRemoteServiceManager = mxRemoteContext.getServiceManager();
        }
        return mxRemoteServiceManager;
    }

public XTextDocument newDocFromTemplateComponent(String _name)
            throws java.lang.Exception
    {
        String loadUrl = "private:factory/swriter";
        mxRemoteServiceManager = this.getRemoteServiceManager();
        Object oDesktop;
        oDesktop = mxRemoteServiceManager.createInstanceWithContext
                ("com.sun.star.frame.Desktop", mxRemoteContext);
        XComponentLoader xComponentLoader;
        xComponentLoader = UnoRuntime.queryInterface
                        (XComponentLoader.class, oDesktop);
        PropertyValue[] loadProps = new PropertyValue[1];
        loadProps[0]= new PropertyValue();
        loadProps[0].Name="AsTemplate";
        loadProps[0].Value= true;
        final XComponent xTextComponent = xComponentLoader.loadComponentFromURL
               (getPath("Template_writable")+"/"+ _name,"_blank", 0, loadProps);

        final XTextDocument xTextDocument =
                (XTextDocument) UnoRuntime.queryInterface
                (XTextDocument.class, xTextComponent);
        
        return xTextDocument;
    }
erstellt. Soweit. Das Problem ist: Zwischen dem Anstossen des Methode und dem Sehen des Ergebnisses vergeht auf einem der Rechner ein wenig Zeit. In dieser Zeit kommt es leider vor, das der User den Vorgang ein weiteres mal anstösst. Dabei hilft die Ansage "Bitte nur einmal auf Report erstellen klicken " nichts.

Meine Frage: Wie kann ich den Mauszeiger so verändern, das der Anwender sieht: Halt, hier passiert etwas, ich muss warten.

Gruß
Gerd
Zuletzt geändert von gerderich am Fr 22. Mai 2015, 10:48, insgesamt 2-mal geändert.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

Re: Java bootstrap Mauszeiger verändern

Beitrag von karolus » Do 21. Mai 2015, 10:38

Du solltest den Code nicht in

Code: Alles auswählen

[quote][/quote]tags packen
sondern

Code: Alles auswählen

[code]
-tags[/code]

Code: Alles auswählen

private XMultiComponentFactory getRemoteServiceManager()
throws java.lang.Exception
{
if (mxRemoteContext == null && mxRemoteServiceManager == null){
// get the remote office context. If necessary a new office
// process is startet
mxRemoteContext = com.sun.star.comp.helper.Bootstrap.bootstrap();
if (bDebug){
Logger.log("Connected to a running office ...");
}
mxRemoteServiceManager = mxRemoteContext.getServiceManager();
}
return mxRemoteServiceManager;
}

public XTextDocument newDocFromTemplateComponent(String _name)
throws java.lang.Exception
{
String loadUrl = "private:factory/swriter";
mxRemoteServiceManager = this.getRemoteServiceManager();
Object oDesktop;
oDesktop = mxRemoteServiceManager.createInstanceWithContext
("com.sun.star.frame.Desktop", mxRemoteContext);
XComponentLoader xComponentLoader;
xComponentLoader = UnoRuntime.queryInterface
(XComponentLoader.class, oDesktop);
PropertyValue[] loadProps = new PropertyValue[1];
loadProps[0]= new PropertyValue();
loadProps[0].Name="AsTemplate";
loadProps[0].Value= true;
final XComponent xTextComponent = xComponentLoader.loadComponentFromURL
(getPath("Template_writable")+"/"+ _name,"_blank", 0, loadProps);

final XTextDocument xTextDocument =
(XTextDocument) UnoRuntime.queryInterface
(XTextDocument.class, xTextComponent);

return xTextDocument;
} 
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

gerderich
Beiträge: 25
Registriert: Sa 17. Mai 2014, 16:59

Re: Java bootstrap Mauszeiger verändern

Beitrag von gerderich » Do 21. Mai 2015, 10:51

Moin Karolus,

danke für den Hinweis. Nun denn, habe ich geändert.

[edit]P.S. Wie dem auch sei, irgendetwas habe ich an deinem Code Fragment nicht verstanden? Wie hilft mir das jetzt weiter? Es ist doch der gleiche Code, wie der, den ich eingestellt habe, oder ?[/edit]
Gruß
Gerd

gerderich
Beiträge: 25
Registriert: Sa 17. Mai 2014, 16:59

Re: Java bootstrap Mauszeiger verändern

Beitrag von gerderich » Fr 22. Mai 2015, 10:47

Moin,
schade das außer Formalien niemand etwas zu dem Thema sagen kann. Ich setze den Thread hier jetzt auf erledigt und frage in einem anderen Forum.
Gruß
Gerd

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

Re: [erledigt]Java bootstrap Mauszeiger verändern

Beitrag von karolus » Fr 22. Mai 2015, 12:17

Hallo
[edit]P.S. Wie dem auch sei, irgendetwas habe ich an deinem Code Fragment nicht verstanden? Wie hilft mir das jetzt weiter? Es ist doch der gleiche Code, wie der, den ich eingestellt habe, oder ?[/edit]
Ja, das ist er, aber in "besser lesbar" wie ursprünglich gepostet...( und mehr als lesen kann ich in dem Fall auch nicht ) -- wer beschäftigt sich schon freiwillig mit Java :?:
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: [erledigt]Java bootstrap Mauszeiger verändern

Beitrag von gogo » Fr 22. Mai 2015, 18:08

gerderich hat geschrieben:... Das Problem ist: Zwischen dem Anstossen des Methode und dem Sehen des Ergebnisses vergeht auf einem der Rechner ein wenig Zeit. In dieser Zeit kommt es leider vor, das der User den Vorgang ein weiteres mal anstösst. ...
A) Setze eine globale Variable, OeffnenDesBerichtsLaeuft=true und kontrolliere sie bevor die Methode läuft. (... und setze die Variable später zurück)
oder
B) Deaktiviere den Button mit der Methode bevor Du den Report startest, dann kann das Ereignis kein 2. mal angestoßen werden.

Ich würde A bevorzugen, Du kannst aber auch beide Methoden kombinieren.

... und Java können hier die wenigsten - ich auch nicht ;)
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten