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