Author: tchemit Date: 2010-03-12 01:24:04 +0100 (Fri, 12 Mar 2010) New Revision: 1774 Log: improve StatusMessagePanel (add a busy scroll bar) Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/StatusMessagePanel.jaxx trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/StatusMessagePanelHandler.java Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/StatusMessagePanel.jaxx =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/StatusMessagePanel.jaxx 2010-03-12 00:23:15 UTC (rev 1773) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/StatusMessagePanel.jaxx 2010-03-12 00:24:04 UTC (rev 1774) @@ -21,16 +21,10 @@ --> -<Table border='{BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED)}' +<Table border='{BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED)}' insets='0' implements='java.awt.event.ActionListener'> - <Boolean id='showMemoryStatus' javaBean='Boolean.TRUE'/> - <Boolean id='showClock' javaBean='Boolean.TRUE'/> - <Boolean id='showI18n' javaBean='Boolean.FALSE'/> - - <StatusMessagePanelHandler id='handler' /> - <script><![CDATA[ // To ensure status bar constant height, no matter what font are in use... @@ -39,12 +33,38 @@ public void clearStatus() { handler.stopStatusFader(this); getStatusLabel().setText(EMPTY_STATUS); + //getStatusLabel().setString(EMPTY_STATUS); } +public void startProgress() { + startProgress(null); +} + +public void startProgress(final String status) { + setBusy(true); + setStatus(status); +} + +public void stopProgress() { + stopProgress(null); +} + +public void stopProgress(String finalStatus) { + setBusy(false); + setStatus(finalStatus); +} + public void setStatus(String status) { - handler.stopStatusFader(this); - getStatusLabel().setText(status); - handler.startStatusFader(this); + + if (status != null) { + handler.stopStatusFader(this); + getStatusLabel().setText(status); + //getStatusLabel().setString(status); + } + + if (!isBusy()) { + handler.startStatusFader(this); + } } @Override @@ -68,16 +88,63 @@ public void addWidget(Component w, int index) { box.add(w, index); } + +public void init() { + if (isShowBusy()) { + Dimension dim = new Dimension(30, 15); + //Dimension dim = new Dimension(30, (int) statusLabel.getPreferredSize().getHeight()); + //log.info("dimension of busy = "+ dim); + //busyWidget.setPreferredSize(dim); + busyWidget.setMaximumSize(dim); + busyWidget.setMinimumSize(dim); + } +} + +void $afterCompleteSetup() { + init(); +} ]]> </script> + + <Boolean id='showMemoryStatus' javaBean='Boolean.TRUE'/> + <Boolean id='showClock' javaBean='Boolean.TRUE'/> + <Boolean id='showI18n' javaBean='Boolean.FALSE'/> + <Boolean id='showBusy' javaBean='Boolean.FALSE'/> + <Boolean id='busy' javaBean='Boolean.FALSE'/> + + <StatusMessagePanelHandler id='handler'/> + <row> - <cell anchor='west' weightx='1' insets='2'> - <JLabel id='statusLabel'/> + <cell anchor='west' fill='both' weightx='1'> + <Box constructorParams='0'> + <JProgressBar id='busyWidget' + visible='{isShowBusy()}' + enabled='{isBusy()}' + indeterminate='{isBusy()}' + stringPainted='false' + borderPainted='true'/> + <!--visible='{isBusy() && isShowBusy()}'--> + + <JLabel id='statusLabel'/> + + </Box> + </cell> <cell anchor='east'> <Box id='box' constructorParams='0'> + + <!--JProgressBar id='busyWidget' + visible='{isBusy() && isShowBusy()}' + indeterminate='{isBusy()}' + stringPainted='false' + borderPainted='true'/--> + <!-- + minimumSize='{new Dimension(30,1)}' + maximumSize='{new Dimension(30,30)}' + preferredSize='{new Dimension(30,30)}' + --> <MemoryStatusWidget/> - <ClockWidget/> + <ClockWidget/> </Box> </cell> </row> Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/StatusMessagePanelHandler.java =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/StatusMessagePanelHandler.java 2010-03-12 00:23:15 UTC (rev 1773) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/StatusMessagePanelHandler.java 2010-03-12 00:24:04 UTC (rev 1774) @@ -20,31 +20,33 @@ */ package jaxx.runtime.swing; -import java.awt.Color; -import java.awt.event.ActionListener; -import javax.swing.Timer; +import javax.swing.*; +import java.awt.*; /** - * * @author chemit * @since 1.6.0 */ public class StatusMessagePanelHandler { - protected Color statusForeground = null; - protected String statusReferenceContent = null; - protected javax.swing.Timer timer = null; + protected Color statusForeground; + protected String statusReferenceContent; + + protected Timer timer; + protected void fadeStatus(StatusMessagePanel ui) { for (int i = 0; i < 8; i++) { // synchronized (this) { if (!statusReferenceContent.equals(ui.getStatusLabel().getText())) { +// if (!statusReferenceContent.equals(ui.getStatusLabel().getString())) { return; } Color currentForeground = ui.getStatusLabel().getForeground(); Color newColor = new Color(currentForeground.getRed(), - currentForeground.getGreen(), currentForeground.getBlue(), - currentForeground.getAlpha() - 25); + currentForeground.getGreen(), + currentForeground.getBlue(), + currentForeground.getAlpha() - 25); ui.getStatusLabel().setForeground(newColor); ui.getStatusLabel().repaint(); // } @@ -60,11 +62,14 @@ protected void startStatusFader(StatusMessagePanel ui) { statusReferenceContent = ui.getStatusLabel().getText(); +// statusReferenceContent = ui.getStatusLabel().getString(); int millisecondsPerMinute = 5000; - timer = new Timer(millisecondsPerMinute, (ActionListener) ui); + timer = new Timer(millisecondsPerMinute, ui); timer.setRepeats(false); - timer.setInitialDelay((int) ((long) millisecondsPerMinute - System.currentTimeMillis() % (long) millisecondsPerMinute) + 500); + timer.setInitialDelay((int) ((long) millisecondsPerMinute - + System.currentTimeMillis() % + (long) millisecondsPerMinute) + 500); timer.start(); }