package org.wiztools.restclient.ui; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Calendar; import javax.annotation.PostConstruct; import javax.swing.*; import org.wiztools.restclient.RCConstants; /** * * @author subwiz */ public class StatusBarPanelImpl extends JPanel implements StatusBarPanel { private final JLabel jl_status = new JLabel(" " + RCConstants.TITLE); private final JProgressBar jpb_status = new JProgressBar(); private Calendar statusLastUpdated; @PostConstruct protected void init() { // Status clear timer: // Start status clear timer: statusLastUpdated = Calendar.getInstance(); new Timer(5*1000, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Calendar c = (Calendar)statusLastUpdated.clone(); c.add(Calendar.SECOND, 20); if(Calendar.getInstance().after(c)){ setStatus(RCConstants.TITLE); } } }).start(); // Label setBorder(BorderFactory.createBevelBorder(1)); setLayout(new BorderLayout()); jl_status.setFont(UIUtil.FONT_DIALOG_PLAIN); add(jl_status, BorderLayout.CENTER); // Progress bar Dimension d = jpb_status.getPreferredSize(); d.height = d.height - 4; jpb_status.setPreferredSize(d); jpb_status.setIndeterminate(true); jpb_status.setVisible(false); add(jpb_status, BorderLayout.EAST); } @Override public void setStatus(String status) { jl_status.setText(" " + status); jl_status.setToolTipText(status); statusLastUpdated = Calendar.getInstance(); } @Override public void showProgressBar() { jpb_status.setVisible(true); } @Override public void hideProgressBar() { jpb_status.setVisible(false); } @Override public Component getComponent() { return this; } @Override public void clear() { setStatus("Cleared!"); } }