// This file is part of PleoCommand: // Interactively control Pleo with psychobiological parameters // // Copyright (C) 2010 Oliver Hoffmann - Hoffmann_Oliver@gmx.de // // 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, Boston, USA. package pleocmd.pipe; import pleocmd.cfg.ConfigBounds; import pleocmd.cfg.ConfigDouble; import pleocmd.cfg.ConfigEnum; import pleocmd.cfg.Group; import pleocmd.exc.ConfigurationException; import pleocmd.itfc.gui.dgr.Diagram; import pleocmd.itfc.gui.dgr.DiagramAxis.AxisScale; import pleocmd.itfc.gui.dgr.PipeVisualizationDialog; final class PipePartVisualizationConfig { private final PipePart part; private final ConfigBounds cfgPosition; private final ConfigDouble cfgXAxisMin; private final ConfigDouble cfgXAxisMax; private final ConfigEnum<AxisScale> cfgXAxisScale; private final ConfigDouble cfgYAxisMin; private final ConfigDouble cfgYAxisMax; private final ConfigEnum<AxisScale> cfgYAxisScale; public PipePartVisualizationConfig(final PipePart part, final Group group) { this.part = part; group.add(cfgPosition = new ConfigBounds("Visualization-Position")); group.add(cfgXAxisMin = new ConfigDouble("Visualization-X-Axis-Min", -Double.MAX_VALUE)); group.add(cfgXAxisMax = new ConfigDouble("Visualization-X-Axis-Max", Double.MAX_VALUE)); group.add(cfgXAxisScale = new ConfigEnum<AxisScale>( "Visualization-X-Axis-Scale", AxisScale.LinearScale)); group.add(cfgYAxisMin = new ConfigDouble("Visualization-Y-Axis-Min", -Double.MAX_VALUE)); group.add(cfgYAxisMax = new ConfigDouble("Visualization-Y-Axis-Max", Double.MAX_VALUE)); group.add(cfgYAxisScale = new ConfigEnum<AxisScale>( "Visualization-Y-Axis-Scale", AxisScale.LinearScale)); } public void writeback() throws ConfigurationException { final PipeVisualizationDialog dlg = part.getVisualizationDialog(); if (dlg == null) return; final Diagram dgr = dlg.getDiagram(); cfgPosition.setContent(dlg.getBounds()); cfgXAxisMin.setContent(dgr.getXAxis().getMin()); cfgXAxisMax.setContent(dgr.getXAxis().getMax()); cfgXAxisScale.setEnum(dgr.getXAxis().getScale()); cfgYAxisMin.setContent(dgr.getYAxis().getMin()); cfgYAxisMax.setContent(dgr.getYAxis().getMax()); cfgYAxisScale.setEnum(dgr.getYAxis().getScale()); } public void assignConfig() { final PipeVisualizationDialog dlg = part.getVisualizationDialog(); if (dlg == null) return; final Diagram dgr = dlg.getDiagram(); cfgPosition.assignContent(dlg); dgr.getXAxis().setMin(cfgXAxisMin.getContent()); dgr.getXAxis().setMax(cfgXAxisMax.getContent()); dgr.getXAxis().setScale(cfgXAxisScale.getEnum()); dgr.getYAxis().setMin(cfgYAxisMin.getContent()); dgr.getYAxis().setMax(cfgYAxisMax.getContent()); dgr.getYAxis().setScale(cfgYAxisScale.getEnum()); } }