/* * Copyright (c) 2009, 2010, 2011 Daniel Rendall * This file is part of FractDim. * * FractDim 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. * * FractDim 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 FractDim. If not, see <http://www.gnu.org/licenses/> */ package uk.co.danielrendall.fractdim.app.gui; import net.miginfocom.layout.AC; import net.miginfocom.layout.LC; import net.miginfocom.swing.MigLayout; import javax.swing.*; import java.awt.*; /** * Created by IntelliJ IDEA. * User: daniel * Date: 28-Apr-2010 * Time: 08:13:52 * To change this template use File | Settings | File Templates. */ public class SettingsPanel extends JPanel { private final JSlider minimumSquareSizeSlider; private final JSlider maximumSquareSizeSlider; private final JSlider angleSlider; private final JSlider resolutionSlider; private final JSlider displacementSlider; private final JComboBox resolutionIteratorList; private final JList resolutionList; SettingsPanel() { this.setLayout(new MigLayout("fill", "[grow, fill][grow, fill][grow, fill]", "[min][min][min][grow, fill]")); angleSlider = new JSlider(); JPanel anglePanel = new JPanel(new BorderLayout()); anglePanel.setBorder(BorderFactory.createTitledBorder("Angles")); angleSlider.setLabelTable(angleSlider.createStandardLabels(5)); angleSlider.setPaintLabels(true); angleSlider.setMinorTickSpacing(1); angleSlider.setPaintTicks(true); angleSlider.setSnapToTicks(true); anglePanel.add(angleSlider, BorderLayout.CENTER); add(anglePanel, "cell 0 0 3 1, growx"); resolutionSlider = new JSlider(); resolutionIteratorList = new JComboBox(); JPanel resolutionPanel = new JPanel(new BorderLayout()); resolutionPanel.setBorder(BorderFactory.createTitledBorder("Resolutions")); resolutionSlider.setLabelTable(resolutionSlider.createStandardLabels(5)); resolutionSlider.setPaintLabels(true); resolutionSlider.setMinorTickSpacing(1); resolutionSlider.setPaintTicks(true); resolutionSlider.setSnapToTicks(true); resolutionPanel.add(resolutionSlider, BorderLayout.CENTER); resolutionPanel.add(resolutionIteratorList, BorderLayout.SOUTH); add(resolutionPanel, "cell 0 1 3 1, growx"); displacementSlider = new JSlider(); JPanel displacementPanel = new JPanel(new BorderLayout()); displacementPanel.setBorder(BorderFactory.createTitledBorder("Displacements")); displacementSlider.setLabelTable(angleSlider.createStandardLabels(1)); displacementSlider.setPaintLabels(true); displacementSlider.setMinorTickSpacing(1); displacementSlider.setPaintTicks(true); displacementSlider.setSnapToTicks(true); displacementPanel.add(displacementSlider, BorderLayout.CENTER); add(displacementPanel, "cell 0 2 3 1, growx"); minimumSquareSizeSlider = new JSlider(); minimumSquareSizeSlider.setOrientation(JSlider.VERTICAL); minimumSquareSizeSlider.setBorder(BorderFactory.createTitledBorder("Min")); add(minimumSquareSizeSlider, "cell 0 3 1 1"); maximumSquareSizeSlider = new JSlider(); maximumSquareSizeSlider.setOrientation(JSlider.VERTICAL); maximumSquareSizeSlider.setBorder(BorderFactory.createTitledBorder("Max")); add(maximumSquareSizeSlider, "cell 1 3 1 1"); resolutionList = new JList(); resolutionList.setBorder(BorderFactory.createTitledBorder("Grid sizes")); final ListCellRenderer existingRenderer = resolutionList.getCellRenderer(); resolutionList.setCellRenderer(new ListCellRenderer() { public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { String toDisplay = String.format("%5.1f", (Double) value); return existingRenderer.getListCellRendererComponent(list, toDisplay, index, isSelected,cellHasFocus); } }); add(resolutionList, "cell 2 3 1 1"); } void disableAllControls() { setAllEnabled(false); } void enableAllControls() { setAllEnabled(true); } public void setAllEnabled(boolean state) { minimumSquareSizeSlider.setEnabled(state); maximumSquareSizeSlider.setEnabled(state); angleSlider.setEnabled(state); resolutionSlider.setEnabled(state); resolutionIteratorList.setEnabled(state); displacementSlider.setEnabled(state); resolutionList.setEnabled(state); } JSlider getMinimumSquareSizeSlider() { return minimumSquareSizeSlider; } JSlider getMaximumSquareSizeSlider() { return maximumSquareSizeSlider; } JSlider getAngleSlider() { return angleSlider; } JSlider getResolutionSlider() { return resolutionSlider; } JSlider getDisplacementSlider() { return displacementSlider; } JComboBox getResolutionIteratorList() { return resolutionIteratorList; } JList getResolutionList() { return resolutionList; } }