/* * Copyright 2010-2015 Institut Pasteur. * * This file is part of Icy. * * Icy 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 3 of the License, or * (at your option) any later version. * * Icy 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 Icy. If not, see <http://www.gnu.org/licenses/>. */ package icy.swimmingPool; import icy.gui.frame.IcyFrame; import icy.gui.util.ComponentUtil; import icy.main.Icy; import icy.system.thread.ThreadUtil; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Box; import javax.swing.JPanel; public class SwimmingPoolViewer implements SwimmingPoolListener, ActionListener { IcyFrame mainFrame = new IcyFrame("Swimming Pool Viewer", true, true, true, true); SwimmingPoolViewerPanel spvp = new SwimmingPoolViewerPanel(); public SwimmingPoolViewer() { mainFrame.getContentPane().setLayout(new BorderLayout()); mainFrame.getContentPane().add(spvp, BorderLayout.CENTER); mainFrame.setVisible(true); mainFrame.setPreferredSize(new Dimension(400, 400)); mainFrame.addToDesktopPane(); mainFrame.center(); mainFrame.pack(); Icy.getMainInterface().getSwimmingPool().addListener(this); spvp.getDeleteAllButton().addActionListener(this); refreshGUI(); mainFrame.requestFocus(); } private void refreshGUI() { spvp.getScrollPanel().removeAll(); for (SwimmingObject result : Icy.getMainInterface().getSwimmingPool().getObjects()) { JPanel panel = new SwimmingPoolObjectPanel(result); ComponentUtil.setFixedHeight(panel, 40); spvp.getScrollPanel().add(panel); } spvp.getScrollPanel().add(Box.createVerticalGlue()); String text = "No object in swimming pool."; int numberOfSwimmingObject = Icy.getMainInterface().getSwimmingPool().getObjects().size(); if (numberOfSwimmingObject > 0) { text = "" + numberOfSwimmingObject + " objects in swimming pool."; } spvp.getNumberOfSwimmingObjectLabel().setText(text); spvp.getScrollPane().invalidate(); spvp.getScrollPane().repaint(); } @Override public void swimmingPoolChangeEvent(final SwimmingPoolEvent swimmingPoolEvent) { if (swimmingPoolEvent.getType() == SwimmingPoolEventType.ELEMENT_ADDED) { ThreadUtil.invokeLater(new Runnable() { @Override public void run() { refreshGUI(); } }); } if (swimmingPoolEvent.getType() == SwimmingPoolEventType.ELEMENT_REMOVED) { ThreadUtil.invokeLater(new Runnable() { @Override public void run() { refreshGUI(); } }); } } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == spvp.getDeleteAllButton()) { Icy.getMainInterface().getSwimmingPool().removeAll(); } } }