Author: echatellier
Date: 2010-02-26 17:37:18 +0100 (Fri, 26 Feb 2010)
New Revision: 2790
Added:
trunk/lima-main/src/main/java/org/chorem/lima/LimaSplash.java
trunk/lima-main/src/main/resources/images/
trunk/lima-main/src/main/resources/images/splash.png
Modified:
trunk/lima-main/pom.xml
trunk/lima-main/src/main/java/org/chorem/lima/DataManager.java
trunk/lima-main/src/main/java/org/chorem/lima/Main.java
trunk/lima-main/src/main/java/org/chorem/lima/ui/ProgressBarImpl.java
Log:
Replace progress bar by a splash screen (image is not final).
Modified: trunk/lima-main/pom.xml
===================================================================
--- trunk/lima-main/pom.xml 2010-02-26 16:36:36 UTC (rev 2789)
+++ trunk/lima-main/pom.xml 2010-02-26 16:37:18 UTC (rev 2790)
@@ -224,6 +224,9 @@
<addClasspath>true</addClasspath>
<classpathPrefix>./lib/</classpathPrefix>
</manifest>
+ <manifestEntries>
+ <SplashScreen-Image>images/splash.png</SplashScreen-Image>
+ </manifestEntries>
</archive>
</configuration>
</plugin>
Modified: trunk/lima-main/src/main/java/org/chorem/lima/DataManager.java
===================================================================
--- trunk/lima-main/src/main/java/org/chorem/lima/DataManager.java 2010-02-26 16:36:36 UTC (rev 2789)
+++ trunk/lima-main/src/main/java/org/chorem/lima/DataManager.java 2010-02-26 16:37:18 UTC (rev 2790)
@@ -19,16 +19,21 @@
package org.chorem.lima;
-import org.chorem.lima.dto.*;
+import java.util.List;
+
+import org.chorem.lima.dto.AccountDTO;
+import org.chorem.lima.dto.JournalDTO;
+import org.chorem.lima.dto.PeriodDTO;
+import org.chorem.lima.dto.StatusDTO;
+import org.chorem.lima.dto.TransactionDTO;
+import org.chorem.lima.service.PeriodService;
+import org.chorem.lima.service.ServiceFactory;
+import org.chorem.lima.service.util.ProgressListener;
import org.chorem.lima.service.util.ServiceHelper;
import org.chorem.lima.table.model.ClosureTableModel;
import org.chorem.lima.table.model.JournalTableModel;
import org.chorem.lima.table.model.TransactionDataTableModel;
import org.chorem.lima.tree.model.AccountTreeTableModel;
-import javax.swing.JProgressBar;
-import java.util.List;
-import org.chorem.lima.service.PeriodService;
-import org.chorem.lima.service.ServiceFactory;
/**
* Cette classe permet de gérer les données de Lima. Chaque type de données
@@ -130,13 +135,13 @@
getPeriodes()),
getJournalModel().getData(),
ServiceHelper.getAllFlatAccount(getAccountModel().getData()),
- getStatus());
+ getStatus(), null);
transactionModel = new TransactionDataTableModel(data);
}
return transactionModel;
}
- public TransactionDataTableModel getTransactionModel(JProgressBar barre) {
+ public TransactionDataTableModel getTransactionModel(ProgressListener progressListener) {
if (transactionModel == null) {
@@ -146,7 +151,7 @@
getPeriodes()),
getJournalModel().getData(),
ServiceHelper.getAllFlatAccount(getAccountModel().getData()),
- getStatus(),barre);
+ getStatus(), progressListener);
transactionModel = new TransactionDataTableModel(data);
}
return transactionModel;
Added: trunk/lima-main/src/main/java/org/chorem/lima/LimaSplash.java
===================================================================
--- trunk/lima-main/src/main/java/org/chorem/lima/LimaSplash.java (rev 0)
+++ trunk/lima-main/src/main/java/org/chorem/lima/LimaSplash.java 2010-02-26 16:37:18 UTC (rev 2790)
@@ -0,0 +1,99 @@
+package org.chorem.lima;
+
+import java.awt.AlphaComposite;
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.SplashScreen;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.chorem.lima.service.util.ProgressListener;
+
+/**
+ * Utility class used to manage information on slash screen.
+ *
+ * Currently display:
+ * <ul>
+ * <li>Version
+ * <li>Loading information
+ * </ul>
+ *
+ * @since 0.3.2
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class LimaSplash implements ProgressListener {
+
+ /** Log. */
+ static private Log log = LogFactory.getLog(LimaSplash.class);
+
+ /** Splash screen instance. */
+ protected SplashScreen splash;
+
+ /** Splash screen graphics. */
+ protected Graphics2D splashGraphics;
+
+ public LimaSplash() {
+
+ splash = SplashScreen.getSplashScreen();
+ if (splash != null) {
+ splashGraphics = splash.createGraphics();
+ }
+ }
+
+ /**
+ * Init splash (add version).
+ *
+ * @param version version to display on splash screen
+ */
+ public void initSplash(String version) {
+ if (splashGraphics != null) {
+ splashGraphics.setColor(Color.BLACK);
+ splashGraphics.drawString("Version : " + version, 300, 90);
+ }
+ else {
+ if (log.isWarnEnabled()) {
+ log.warn("Can't find splash screen");
+ log.warn("Make sure that lima is launched with -splash:image.png VM argument");
+ log.warn("or SplashScreen-Image is present in jar manifest.");
+ }
+ }
+ }
+
+ /**
+ * Update progression.
+ *
+ * @param progress progress (between 0.0 and 1.0)
+ * @param message message can be {@code null}
+ */
+ public void updateProgression(double progress, String message) {
+ if (splashGraphics != null) {
+
+ splashGraphics.setColor(Color.BLACK);
+ splashGraphics.drawRect(50, 130, 300, 10);
+ splashGraphics.fillRect(50, 130, (int)(300.0 * progress), 10);
+
+ if (message != null) {
+ splashGraphics.setComposite(AlphaComposite.Clear);
+ splashGraphics.fillRect(50,150, 200, 40);
+ splashGraphics.setPaintMode();
+ splashGraphics.setColor(Color.BLACK);
+ splashGraphics.drawString(message + "...", 50, 160);
+ }
+
+ splash.update();
+ }
+ }
+
+ /**
+ * Close splash screen (if needed).
+ */
+ public void closeSplash() {
+ if (splash != null) {
+ splash.close();
+ }
+ }
+}
Property changes on: trunk/lima-main/src/main/java/org/chorem/lima/LimaSplash.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: trunk/lima-main/src/main/java/org/chorem/lima/Main.java
===================================================================
--- trunk/lima-main/src/main/java/org/chorem/lima/Main.java 2010-02-26 16:36:36 UTC (rev 2789)
+++ trunk/lima-main/src/main/java/org/chorem/lima/Main.java 2010-02-26 16:37:18 UTC (rev 2790)
@@ -23,12 +23,17 @@
import org.chorem.lima.ui.MainView;
import org.chorem.lima.ui.MainViewHandler;
-import org.chorem.lima.ui.ProgressBarImpl;
+import org.chorem.lima.dto.AccountDTO;
+import org.chorem.lima.imports.XMLImport;
import org.chorem.lima.service.ServiceFactory;
import static org.nuiton.i18n.I18n._;
+import java.io.IOException;
+import java.net.URL;
import java.util.Locale;
+
+import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import jaxx.runtime.SwingUtil;
@@ -158,69 +163,81 @@
// do init ui
final MainView ui = uiHandler.initUI(context, context.getConfig().isFullScreen());
- log.info(_("lima.init.ui.done"));
+ if (log.isInfoEnabled()) {
+ log.info(_("lima.init.ui.done"));
+ }
- final ProgressBarImpl b = new ProgressBarImpl(ui, ui);
+ final LimaSplash splash = new LimaSplash();
+ splash.initSplash(context.getConfig().getVersion());
- // show ui
- SwingUtilities.invokeLater(new Runnable() {
-
- @Override
- public void run() {
- ui.setVisible(true);
- b.setVisible(true);
- }
- });
-
- Thread.sleep(100);
/**
* Lancement de la barre de chargement
* L'application va charger en mémoire les données
*/
- new Thread() {
+ Thread t = new Thread() {
@Override
public void run() {
-// ProgressBarImpl b = new ProgressBarImpl(ui, ui);
+ // ProgressBarImpl b = new ProgressBarImpl(ui, ui);
// Chargement des journaux
- b.getProgressBar().setString("5% : " + _("lima.progressBar.load.etape1"));
- b.getProgressBar().setValue(5);
+ //b.getProgressBar().setString("5% : " + _("lima.progressBar.load.etape1"));
+ //b.getProgressBar().setValue(5);
+ splash.updateProgression(0.05, _("lima.progressBar.load.etape1"));
DataManager dataManager = context.getDataManager();
dataManager.getJournalModel();
// Chargement des comptes
- b.getProgressBar().setString("30% : " + _("lima.progressBar.load.etape2"));
- b.getProgressBar().setValue(30);
+ //b.getProgressBar().setString("30% : " + _("lima.progressBar.load.etape2"));
+ //b.getProgressBar().setValue(30);
+ splash.updateProgression(0.30, _("lima.progressBar.load.etape2"));
AccountTreeTableModel accountModel = dataManager.getAccountModel();
- b.loadDefaultAccount(accountModel.getData());
+ loadDefaultAccount(accountModel.getData());
// Chargement des status
- b.getProgressBar().setString("50% : " + _("lima.progressBar.load.etape3"));
- b.getProgressBar().setValue(50);
+ //b.getProgressBar().setString("50% : " + _("lima.progressBar.load.etape3"));
+ //b.getProgressBar().setValue(50);
+ splash.updateProgression(0.50, _("lima.progressBar.load.etape3"));
+ try {
+ Thread.sleep(2000);
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
dataManager.getStatus();
// Chargement des periodes
- b.getProgressBar().setString("60% : " + _("lima.progressBar.load.etape4"));
- b.getProgressBar().setValue(60);
+ //b.getProgressBar().setString("60% : " + _("lima.progressBar.load.etape4"));
+ //b.getProgressBar().setValue(60);
+ try {
+ Thread.sleep(2000);
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ splash.updateProgression(0.60, _("lima.progressBar.load.etape4"));
dataManager.getPeriodes();
// Chargement des transactions
- b.getProgressBar().setString("70% : " + _("lima.progressBar.load.etape5"));
- b.getProgressBar().setValue(70);
- dataManager.getTransactionModel(b.getProgressBar());
- b.dispose();
+ //b.getProgressBar().setString("70% : " + _("lima.progressBar.load.etape5"));
+ //b.getProgressBar().setValue(70);
+ splash.updateProgression(0.70, _("lima.progressBar.load.etape5"));
+ dataManager.getTransactionModel(splash);
+ //b.dispose();
+
+ //splash.closeSplash();
}
- }.start();
+ };
+ t.start();
+ t.join();
-// // show ui
-// SwingUtilities.invokeLater(new Runnable() {
-//
-// @Override
-// public void run() {
-// ui.setVisible(true);
-// }
-// });
+ // show ui
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ ui.setVisible(true);
+ }
+ });
}
public static class ShutdownHook extends Thread {
@@ -245,4 +262,41 @@
}
}
}
+
+ /**
+ * This method ask for user to laod a default account plan.
+ *
+ * @param accountRoot database accounts
+ */
+ public static void loadDefaultAccount(AccountDTO accountRoot) {
+ if (log.isDebugEnabled()) {
+ log.debug("Account root : " + accountRoot);
+ }
+ if (accountRoot.getChildren().isEmpty()) {
+ if (log.isDebugEnabled()) {
+ log.debug("No existing accounts");
+ }
+
+ String[] response = {_("lima.response.yes"), _("lima.response.no")};
+ int n = JOptionPane.showOptionDialog(null,
+ _("lima.question.load.accounts"),
+ _("lima.question"),
+ JOptionPane.YES_NO_OPTION,
+ JOptionPane.QUESTION_MESSAGE,
+ null, //do not use a custom Icon
+ response, //the titles of buttons
+ response[1]); //default button title
+ if (n == JOptionPane.YES_OPTION) {
+ XMLImport imports = new XMLImport();
+ URL urlFile = Main.class.getResource("/import/default_pcg.xml");
+ try {
+ imports.importAccount(urlFile.openStream());
+ } catch (IOException eee) {
+ log.error("Erreur chargement du fichier 'default_pcg.xml'", eee);
+ }
+ } else {
+ LimaContext.getContext().getDataManager().resetAccountModel();
+ }
+ }
+ }
}
Modified: trunk/lima-main/src/main/java/org/chorem/lima/ui/ProgressBarImpl.java
===================================================================
--- trunk/lima-main/src/main/java/org/chorem/lima/ui/ProgressBarImpl.java 2010-02-26 16:36:36 UTC (rev 2789)
+++ trunk/lima-main/src/main/java/org/chorem/lima/ui/ProgressBarImpl.java 2010-02-26 16:37:18 UTC (rev 2790)
@@ -19,16 +19,20 @@
package org.chorem.lima.ui;
-import java.awt.*;
+import static org.nuiton.i18n.I18n._;
+
+import java.awt.Window;
import java.io.IOException;
import java.net.URL;
+
import javax.swing.JOptionPane;
import jaxx.runtime.JAXXContext;
-import org.chorem.lima.LimaContext;
-import static org.nuiton.i18n.I18n._;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.chorem.lima.LimaContext;
+import org.chorem.lima.LimaSplash;
import org.chorem.lima.dto.AccountDTO;
import org.chorem.lima.imports.XMLImport;
@@ -36,6 +40,7 @@
* Barre de progression
*
* @author Rémi Chapelet
+ * @deprecated since 0.3.2 (replaced by {@link LimaSplash})
*/
public class ProgressBarImpl extends ProgressBar {
Added: trunk/lima-main/src/main/resources/images/splash.png
===================================================================
(Binary files differ)
Property changes on: trunk/lima-main/src/main/resources/images/splash.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream