Path: blob/master/src/demo/share/jfc/J2Ddemo/java2d/GlobalControls.java
41154 views
/*1*2* Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.3*4* Redistribution and use in source and binary forms, with or without5* modification, are permitted provided that the following conditions6* are met:7*8* - Redistributions of source code must retain the above copyright9* notice, this list of conditions and the following disclaimer.10*11* - Redistributions in binary form must reproduce the above copyright12* notice, this list of conditions and the following disclaimer in the13* documentation and/or other materials provided with the distribution.14*15* - Neither the name of Oracle nor the names of its16* contributors may be used to endorse or promote products derived17* from this software without specific prior written permission.18*19* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS20* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,21* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR22* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR23* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,24* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,25* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR26* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF27* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING28* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS29* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.30*/31package java2d;323334import java.awt.Dimension;35import java.awt.Font;36import java.awt.GridBagLayout;37import java.awt.event.ItemEvent;38import java.awt.event.ItemListener;39import javax.swing.JCheckBox;40import javax.swing.JComboBox;41import javax.swing.JPanel;42import javax.swing.JSlider;43import javax.swing.SwingConstants;44import javax.swing.border.EtchedBorder;45import javax.swing.border.TitledBorder;46import javax.swing.event.ChangeEvent;47import javax.swing.event.ChangeListener;484950/**51* Global Controls panel for changing graphic attributes of52* the demo surface.53*/54@SuppressWarnings("serial")55public class GlobalControls extends JPanel implements ItemListener,56ChangeListener {57private final DemoInstVarsAccessor demoInstVars;58public static final String[] screenNames = {59"Auto Screen", "On Screen", "Off Screen",60"INT_xRGB", "INT_ARGB", "INT_ARGB_PRE", "INT_BGR",61"3BYTE_BGR", "4BYTE_ABGR", "4BYTE_ABGR_PRE", "USHORT_565_RGB",62"USHORT_x555_RGB", "BYTE_GRAY", "USHORT_GRAY",63"BYTE_BINARY", "BYTE_INDEXED", "BYTE_BINARY 2 bit", "BYTE_BINARY 4 bit",64"INT_RGBx", "USHORT_555x_RGB" };65public final JComboBox<String> screenCombo;66public TextureChooser texturechooser;67public JCheckBox aliasCB, renderCB, toolBarCB;68public JCheckBox compositeCB, textureCB;69public JSlider slider;70public Object obj;71private Font font = new Font(Font.SERIF, Font.PLAIN, 12);7273@SuppressWarnings("LeakingThisInConstructor")74public GlobalControls(DemoInstVarsAccessor demoInstVars) {75this.demoInstVars = demoInstVars;7677setLayout(new GridBagLayout());78setBorder(new TitledBorder(new EtchedBorder(), "Global Controls"));7980aliasCB = createCheckBox("Anti-Aliasing", true, 0);81renderCB = createCheckBox("Rendering Quality", false, 1);82textureCB = createCheckBox("Texture", false, 2);83compositeCB = createCheckBox("AlphaComposite", false, 3);8485screenCombo = new JComboBox<>();86screenCombo.setPreferredSize(new Dimension(120, 18));87screenCombo.setLightWeightPopupEnabled(true);88screenCombo.setFont(font);89for (int i = 0; i < screenNames.length; i++) {90screenCombo.addItem(screenNames[i]);91}92screenCombo.addItemListener(this);93J2Ddemo.addToGridBag(this, screenCombo, 0, 4, 1, 1, 0.0, 0.0);9495toolBarCB = createCheckBox("Tools", false, 5);9697slider = new JSlider(SwingConstants.HORIZONTAL, 0, 200, 30);98slider.addChangeListener(this);99TitledBorder tb = new TitledBorder(new EtchedBorder());100tb.setTitleFont(font);101tb.setTitle("Anim delay = 30 ms");102slider.setBorder(tb);103slider.setMinimumSize(new Dimension(80, 46));104J2Ddemo.addToGridBag(this, slider, 0, 6, 1, 1, 1.0, 1.0);105106texturechooser = new TextureChooser(0, demoInstVars);107J2Ddemo.addToGridBag(this, texturechooser, 0, 7, 1, 1, 1.0, 1.0);108}109110private JCheckBox createCheckBox(String s, boolean b, int y) {111JCheckBox cb = new JCheckBox(s, b);112cb.setFont(font);113cb.setHorizontalAlignment(SwingConstants.LEFT);114cb.addItemListener(this);115J2Ddemo.addToGridBag(this, cb, 0, y, 1, 1, 1.0, 1.0);116return cb;117}118119@Override120public void stateChanged(ChangeEvent e) {121int value = slider.getValue();122TitledBorder tb = (TitledBorder) slider.getBorder();123tb.setTitle("Anim delay = " + String.valueOf(value) + " ms");124int index = demoInstVars.getTabbedPane().getSelectedIndex() - 1;125DemoGroup dg = demoInstVars.getGroup()[index];126JPanel p = dg.getPanel();127for (int i = 0; i < p.getComponentCount(); i++) {128DemoPanel dp = (DemoPanel) p.getComponent(i);129if (dp.tools != null && dp.tools.slider != null) {130dp.tools.slider.setValue(value);131}132}133slider.repaint();134}135136@Override137public void itemStateChanged(ItemEvent e) {138if (demoInstVars.getTabbedPane().getSelectedIndex() != 0) {139obj = e.getSource();140int index = demoInstVars.getTabbedPane().getSelectedIndex() - 1;141demoInstVars.getGroup()[index].setup(true);142obj = null;143}144}145146@Override147public Dimension getPreferredSize() {148return new Dimension(135, 260);149}150}151152153