/* * SleepArchiver - cross-platform data manager for Sleeptracker-series watches. * Copyright (C) 2009-2011 Pavel Fatin <http://pavelfatin.com> * * 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 3 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, see <http://www.gnu.org/licenses/>. */ package com.pavelfatin.sleeparchiver.gui.main; import com.pavelfatin.sleeparchiver.gui.main.render.Transform; import com.pavelfatin.sleeparchiver.gui.main.render.Zoom; import com.pavelfatin.sleeparchiver.swing.NamedRenderer; import org.jdesktop.application.ApplicationActionMap; import org.jdesktop.application.ResourceMap; import javax.swing.*; import javax.swing.border.EmptyBorder; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.List; class ToolBar extends JToolBar { private JComboBox _zooms; private JComboBox _transforms; ToolBar(ResourceMap resources, ApplicationActionMap actions) { add(actions.get("blank")); add(actions.get("open")); add(actions.get("save")); addSeparator(); add(actions.get("undo")); add(actions.get("redo")); addSeparator(); add(actions.get("download")); addSeparator(); add(actions.get("add")); add(actions.get("edit")); add(actions.get("remove")); addSeparator(); add(actions.get("conditions")); setFloatable(false); setBorderPainted(false); add(Box.createHorizontalGlue()); NamedRenderer namedRenderer = new NamedRenderer(); namedRenderer.setHorizontalAlignment(SwingConstants.CENTER); add(actions.get("zoomOut")); _zooms = new JComboBox(new DefaultComboBoxModel()); _zooms.setRenderer(namedRenderer); _zooms.addItemListener(new ZoomListener()); add(_zooms); add(actions.get("zoomIn")); add(Box.createHorizontalStrut(5)); _transforms = new JComboBox(new DefaultComboBoxModel()); _transforms.setRenderer(namedRenderer); _transforms.addItemListener(new TransformListener()); add(_transforms); setBorder(new EmptyBorder(2, 0, 0, 0)); } public void setZooms(List<Zoom> zooms) { _zooms.setModel(new DefaultComboBoxModel()); for (Zoom zoom : zooms) { addZoom(zoom); } } public void addZoom(Zoom zoom) { ((DefaultComboBoxModel) _zooms.getModel()).addElement(zoom); } public Zoom getZoom() { return (Zoom) (_zooms.getSelectedItem()); } public void setZoom(Zoom zoom) { _zooms.setSelectedItem(zoom); } public void increaseZoom() { int index = _zooms.getSelectedIndex(); if (index < _zooms.getItemCount() - 1) { _zooms.setSelectedIndex(index + 1); } } public void decreaseZoom() { int index = _zooms.getSelectedIndex(); if (index > 0) { _zooms.setSelectedIndex(index - 1); } } public void resetZoom() { _zooms.setSelectedIndex(_zooms.getItemCount() / 2); } public Transform getTransform() { return (Transform) _transforms.getSelectedItem(); } public void setTransforms(List<Transform> transforms) { _transforms.setModel(new DefaultComboBoxModel()); for (Transform transform : transforms) { addTransform(transform); } } public void addTransform(Transform transform) { ((DefaultComboBoxModel) _transforms.getModel()).addElement(transform); } public void setTransform(Transform transform) { _transforms.setSelectedItem(transform); } private class ZoomListener implements ItemListener { public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { firePropertyChange("zoom", null, getZoom()); } } } private class TransformListener implements ItemListener { public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { firePropertyChange("transform", null, getTransform()); } } } }