/* *------------------------------------------------------------------------------ * Copyright (C) 2006-2013 University of Dundee. All rights reserved. * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * *------------------------------------------------------------------------------ */ package org.openmicroscopy.shoola.agents.imviewer.view; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import org.openmicroscopy.shoola.agents.imviewer.IconManager; import org.openmicroscopy.shoola.agents.util.EditorUtil; import org.openmicroscopy.shoola.util.ui.UIUtilities; import omero.gateway.model.ImageData; /** * Displays plane information. * * @author Jean-Marie Burel      * <a href="mailto:j.burel@dundee.ac.uk">j.burel@dundee.ac.uk</a> * @author Andrea Falconi      * <a href="mailto:a.falconi@dundee.ac.uk">a.falconi@dundee.ac.uk</a> * @author Donald MacDonald      * <a href="mailto:donald@lifesci.dundee.ac.uk">donald@lifesci.dundee.ac.uk</a> * @version 3.0 * <small> * (<b>Internal version:</b> $Revision: $ $Date: $) * </small> * @since OME2.2 */ class StatusBar extends JPanel { /** Displays the status message displayed on the left hand side. */ private JLabel leftStatus; /** Displays the status message displayed on the right side. */ private JLabel rightStatus; /** Displays some of the plane information. */ private JComponent centerStatus; /** Button to display plane info. */ private JButton statusButton; /** Reference to the model. */ private ImViewerModel model; /** Reference to the model.*/ private ImViewerUI view; /** Initializes the components. */ private void initComponents() { IconManager icons = IconManager.getInstance(); statusButton = new JButton(icons.getIcon(IconManager.STATUS_INFO)); statusButton.setContentAreaFilled(false); statusButton.setBorder(null); statusButton.setToolTipText("Load the planes information."); formatToolTip(); statusButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //model.firePlaneInfoRetrieval(); JLabel label = new JLabel(); label.setText(statusButton.getToolTipText()); view.showImageInfo(label); } }); UIUtilities.unifiedButtonLookAndFeel(statusButton); leftStatus = new JLabel(); rightStatus = new JLabel(); centerStatus = new JPanel(); } /** Build and lay out the UI. */ private void buildUI() { setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); setBorder(BorderFactory.createEtchedBorder()); add(statusButton); add(Box.createHorizontalStrut(10)); add(leftStatus); add(Box.createHorizontalStrut(15)); add(centerStatus); add(UIUtilities.buildComponentPanelRight(rightStatus)); add(Box.createRigidArea(new Dimension(20, 5))); } /** * Creates a new instance. * * @param model Reference to the model. Mustn't be <code>null</code>. * @param view Reference to the view. Mustn't be <code>null</code>. */ StatusBar(ImViewerModel model, ImViewerUI view) { if (model == null) throw new IllegalArgumentException("No model."); if (view == null) throw new IllegalArgumentException("No view."); this.model = model; this.view = view; initComponents(); buildUI(); } /** Formats the tool tip of the button.*/ void formatToolTip() { ImageData image = model.getImage(); if (image == null) return; List<String> l = null; String s = ""; l = EditorUtil.formatObjectTooltip(image); s = UIUtilities.formatString(image.getName(), -1); List<String> ll = new ArrayList<String>(); ll.add(s); if (l != null) ll.addAll(l); statusButton.setToolTipText(UIUtilities.formatToolTipText(ll)); } /** * Returns the text of the right status. * * @return See above. */ String getRightStatus() { return rightStatus.getText(); } /** * Sets the status message. * * @param s The message to display. */ void setLeftStatus(String s) { leftStatus.setText(s); } /** * Sets the status message. * * @param s The message to display. */ void setRightStatus(String s) { rightStatus.setText(s); } /** * Sets the component displaying the plane information. * * @param comp The message to display. */ void setCenterStatus(JComponent comp) { centerStatus.removeAll(); if (comp != null) { centerStatus.add(comp); revalidate(); repaint(); } } }