/*
* GLCapabilityPanel.java
*
* Created on 19. Juni 2007, 18:51
*/
package net.java.nboglpack.glcapabilities;
import java.awt.Canvas;
import java.awt.Dimension;
import javax.media.nativewindow.Capabilities;
import javax.media.opengl.GLAutoDrawable;
import javax.swing.BorderFactory;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JLabel;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.LayoutStyle.ComponentPlacement;
import net.java.nboglpack.glcapabilities.demo.JOGLGearsDemo;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.event.HierarchyEvent;
import java.awt.event.HierarchyListener;
import java.util.Comparator;
import java.util.ResourceBundle;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.media.opengl.DefaultGLCapabilitiesChooser;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GLCapabilitiesChooser;
import javax.media.opengl.GLProfile;
import javax.media.opengl.awt.GLCanvas;
import javax.swing.JPanel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
import org.jdesktop.beansbinding.AutoBinding.UpdateStrategy;
import org.jdesktop.beansbinding.BeanProperty;
import org.jdesktop.beansbinding.Binding;
import org.jdesktop.beansbinding.BindingGroup;
import org.jdesktop.beansbinding.Bindings;
import org.jdesktop.beansbinding.ELProperty;
import org.jdesktop.beansbinding.ObjectProperty;
import org.jdesktop.swingbinding.JTableBinding;
import org.jdesktop.swingbinding.SwingBindings;
import org.openide.util.NbBundle;
/**
*
* @author Michael Bien
*/
public class GLCapabilitiesPanel extends JPanel {
@SuppressWarnings("unchecked")
public GLCapabilitiesPanel() {
initComponents();
ResourceBundle bundle = NbBundle.getBundle(GLCapabilitiesPanel.class);
// bind capabilities table to model
JTableBinding tableBinding = SwingBindings.createJTableBinding(UpdateStrategy.READ, capabilitiesModel.getCapabilities(), capabilitiesJPanel.getTable());
tableBinding.setEditable(false);
tableBinding.addColumnBinding(BeanProperty.create("name")).setColumnName(bundle.getString("GLCapabilitiesPanel.tablecolumn.Name"));
tableBinding.addColumnBinding(BeanProperty.create("value")).setColumnName(bundle.getString("GLCapabilitiesPanel.tablecolumn.Value"));
bindingGroup.addBinding(tableBinding);
// bind extensions table to model
tableBinding = SwingBindings.createJTableBinding(UpdateStrategy.READ, capabilitiesModel.getExtensions(), extensionsJPanel.getTable());
tableBinding.setEditable(false);
tableBinding.addColumnBinding(ObjectProperty.create()).setColumnName(bundle.getString("GLCapabilitiesPanel.tablecolumn.Name"));
bindingGroup.addBinding(tableBinding);
// bind display modes table
tableBinding = SwingBindings.createJTableBinding(UpdateStrategy.READ, capabilitiesModel.getDisplayModes(), displayModesJPanel.getTable());
tableBinding.setEditable(false);
tableBinding.addColumnBinding(BeanProperty.create("hardwareAccelerated")).setColumnClass(Boolean.class).setColumnName(bundle.getString("GLCapabilitiesPanel.tablecolumn.HWAccel"));
tableBinding.addColumnBinding(BeanProperty.create("doubleBuffered")).setColumnClass(Boolean.class).setColumnName(bundle.getString("GLCapabilitiesPanel.tablecolumn.DoubleBuff"));
tableBinding.addColumnBinding(BeanProperty.create("stereo")).setColumnClass(Boolean.class).setColumnName(bundle.getString("GLCapabilitiesPanel.tablecolumn.Stereo"));
tableBinding.addColumnBinding(BeanProperty.create("sampleBuffers")).setColumnClass(Boolean.class).setColumnName(bundle.getString("GLCapabilitiesPanel.tablecolumn.sampleBuffers"));
tableBinding.addColumnBinding(BeanProperty.create("numSamples")).setColumnClass(Integer.class).setColumnName(bundle.getString("GLCapabilitiesPanel.tablecolumn.NumSamples"));
tableBinding.addColumnBinding(BeanProperty.create("depthBits")).setColumnClass(Integer.class).setColumnName(bundle.getString("GLCapabilitiesPanel.tablecolumn.Depth_bits"));
tableBinding.addColumnBinding(BeanProperty.create("redBits")).setColumnClass(Integer.class).setColumnName(bundle.getString("GLCapabilitiesPanel.tablecolumn.R_bits"));
tableBinding.addColumnBinding(BeanProperty.create("greenBits")).setColumnClass(Integer.class).setColumnName(bundle.getString("GLCapabilitiesPanel.tablecolumn.G_bits"));
tableBinding.addColumnBinding(BeanProperty.create("blueBits")).setColumnClass(Integer.class).setColumnName(bundle.getString("GLCapabilitiesPanel.tablecolumn.B_bits"));
tableBinding.addColumnBinding(BeanProperty.create("alphaBits")).setColumnClass(Integer.class).setColumnName(bundle.getString("GLCapabilitiesPanel.tablecolumn.A_bits"));
tableBinding.addColumnBinding(BeanProperty.create("accumRedBits")).setColumnClass(Integer.class).setColumnName(bundle.getString("GLCapabilitiesPanel.tablecolumn.AccumR_bits"));
tableBinding.addColumnBinding(BeanProperty.create("accumGreenBits")).setColumnClass(Integer.class).setColumnName(bundle.getString("GLCapabilitiesPanel.tablecolumn.AccumG_bits"));
tableBinding.addColumnBinding(BeanProperty.create("accumBlueBits")).setColumnClass(Integer.class).setColumnName(bundle.getString("GLCapabilitiesPanel.tablecolumn.AccumB_bits"));
tableBinding.addColumnBinding(BeanProperty.create("accumAlphaBits")).setColumnClass(Integer.class).setColumnName(bundle.getString("GLCapabilitiesPanel.tablecolumn.AccumA_bits"));
bindingGroup.addBinding(tableBinding);
final JOGLGearsDemo demo = new JOGLGearsDemo((GLAutoDrawable) gLCanvas);
gLCanvas.addHierarchyListener(new HierarchyListener() {
public void hierarchyChanged(HierarchyEvent e) {
if(e.getChangeFlags() == HierarchyEvent.SHOWING_CHANGED) {
if(e.getComponent().isShowing()) {
demo.start();
}else{
// stop animator outside EDT to prevent deadlocks
new Thread(){
@Override
public void run() {
demo.stop();
}
}.start();
}
}
}
});
}
@SuppressWarnings("unchecked")
public void updateFromModel() {
bindingGroup.unbind();
bindingGroup.bind();
TableRowSorter<TableModel> sorter = (TableRowSorter<TableModel>)extensionsJPanel.getTable().getRowSorter();
sorter.setModel(extensionsJPanel.getTable().getModel());
sorter = (TableRowSorter)displayModesJPanel.getTable().getRowSorter();
sorter.setModel(displayModesJPanel.getTable().getModel());
sorter = (TableRowSorter)capabilitiesJPanel.getTable().getRowSorter();
sorter.setModel(capabilitiesJPanel.getTable().getModel());
sorter.setComparator(1, new Comparator<String>() {
public int compare(String str1, String str2) {
int i1;
int i2;
if(str1.contains(","))
i1 = Integer.parseInt(str1.substring(0, str1.indexOf(",")));
else
i1 = Integer.parseInt(str1);
if(str2.contains(","))
i2 = Integer.parseInt(str2.substring(0, str2.indexOf(",")));
else
i2 = Integer.parseInt(str2);
return i1-i2;
}
});
capabilitiesJPanel.getTable().getColumnModel().getColumn(1).setMaxWidth(80);
}
private Canvas createGLDemoCanvas() {
GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
GLCapabilitiesChooser chooser = new DefaultGLCapabilitiesChooser(){
@Override
public int chooseCapabilities(Capabilities desired, Capabilities[] available, int arg2) {
int max = 0;
for (Capabilities c : available) {
GLCapabilities elem = (GLCapabilities)c;
if(elem == null)
continue;
capabilitiesModel.getDisplayModes().add(elem);
if(elem.getHardwareAccelerated() && max < elem.getNumSamples())
max = elem.getNumSamples();
}
capabilitiesModel.setMaxSampleBuffers(max+"x");
// updateFromModel();
return super.chooseCapabilities(desired, available, arg2);
}
};
GLProfile profile = GLProfile.get(GLProfile.GL2);
try{
GLCapabilities caps = new GLCapabilities(profile);
caps.setNumSamples(2);
caps.setSampleBuffers(true);
return new GLCanvas(caps, chooser, null, device);
}catch(RuntimeException ex) {
Logger.getLogger(getClass().getName()).log(
Level.INFO, "unable to create GLContext with multisample support -> retry without multisamples", ex);
GLCapabilities caps = new GLCapabilities(profile);
return new GLCanvas(caps, chooser, null, device);
}
}
public GLCapabilitiesModel getModel() {
return capabilitiesModel;
}
void setModel(GLCapabilitiesModel model) {
this.capabilitiesModel = model;
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
bindingGroup = new BindingGroup();
capabilitiesModel = new GLCapabilitiesModel();
JTabbedPane tabbedPane = new JTabbedPane();
JPanel overviewPanel = new JPanel();
JPanel basicCapsPanel = new JPanel();
glField = new JTextField();
glslField = new JTextField();
joglField = new JTextField();
rendererField = new JTextField();
vendorField = new JTextField();
JLabel gl = new JLabel();
JLabel glsl = new JLabel();
JLabel jogl = new JLabel();
JLabel renderer = new JLabel();
JLabel vendor = new JLabel();
JPanel wrapperPanel = new JPanel();
gLCanvas = createGLDemoCanvas();
JPanel overviewCapsPanel = new JPanel();
viewportField = new JTextField();
textureSizeField = new JTextField();
textureUnitsField = new JTextField();
textureUnitsVSField = new JTextField();
lightsField = new JTextField();
anisotropicFilteringField = new JTextField();
fsaaField = new JTextField();
textureUnitsFSField = new JTextField();
textureUnitsGSField = new JTextField();
renderBuffersField = new JTextField();
JLabel viewportSizeLabel = new JLabel();
JLabel textureSizeLabel = new JLabel();
JLabel textureUnitsLabel = new JLabel();
JLabel textureUnitsVSLabel = new JLabel();
JLabel dynamicLightsLabel = new JLabel();
JLabel anisotropicFilteringLabel = new JLabel();
JLabel fsaaSamplesLabel = new JLabel();
JLabel textureUnitsFSLabel = new JLabel();
JLabel textureUnitsGSLabel = new JLabel();
JLabel renderBuffersLabel = new JLabel();
capabilitiesJPanel = new FilteredTable();
extensionsJPanel = new FilteredTable();
displayModesJPanel = new DisplayModesPanel();
basicCapsPanel.setBorder(BorderFactory.createTitledBorder(NbBundle.getMessage(GLCapabilitiesPanel.class, "GLCapabilitiesPanel.basicCapsPanel.border.title"))); // NOI18N
glField.setEditable(false);
glField.setHorizontalAlignment(JTextField.CENTER);
Binding binding = Bindings.createAutoBinding(UpdateStrategy.READ, capabilitiesModel, ELProperty.create("${glVersion}"), glField, BeanProperty.create("text"));
bindingGroup.addBinding(binding);
glslField.setEditable(false);
glslField.setHorizontalAlignment(JTextField.CENTER);
binding = Bindings.createAutoBinding(UpdateStrategy.READ, capabilitiesModel, ELProperty.create("${glslVersion}"), glslField, BeanProperty.create("text"));
bindingGroup.addBinding(binding);
joglField.setEditable(false);
joglField.setHorizontalAlignment(JTextField.CENTER);
binding = Bindings.createAutoBinding(UpdateStrategy.READ, capabilitiesModel, ELProperty.create("${implVersion}"), joglField, BeanProperty.create("text"));
bindingGroup.addBinding(binding);
rendererField.setEditable(false);
rendererField.setHorizontalAlignment(JTextField.CENTER);
binding = Bindings.createAutoBinding(UpdateStrategy.READ, capabilitiesModel, ELProperty.create("${renderer}"), rendererField, BeanProperty.create("text"));
bindingGroup.addBinding(binding);
vendorField.setEditable(false);
vendorField.setHorizontalAlignment(JTextField.CENTER);
binding = Bindings.createAutoBinding(UpdateStrategy.READ, capabilitiesModel, ELProperty.create("${vendor}"), vendorField, BeanProperty.create("text"));
bindingGroup.addBinding(binding);
gl.setText(NbBundle.getMessage(GLCapabilitiesPanel.class, "GLCapabilitiesPanel.gl.text")); // NOI18N
glsl.setText(NbBundle.getMessage(GLCapabilitiesPanel.class, "GLCapabilitiesPanel.glsl.text")); // NOI18N
jogl.setText(NbBundle.getMessage(GLCapabilitiesPanel.class, "GLCapabilitiesPanel.jogl.text")); // NOI18N
renderer.setText(NbBundle.getMessage(GLCapabilitiesPanel.class, "GLCapabilitiesPanel.renderer.text")); // NOI18N
vendor.setText(NbBundle.getMessage(GLCapabilitiesPanel.class, "GLCapabilitiesPanel.vendor.text")); // NOI18N
GroupLayout wrapperPanelLayout = new GroupLayout(wrapperPanel);
wrapperPanel.setLayout(wrapperPanelLayout);
wrapperPanelLayout.setHorizontalGroup(
wrapperPanelLayout.createParallelGroup(Alignment.LEADING)
.addComponent(gLCanvas, GroupLayout.DEFAULT_SIZE, 82, Short.MAX_VALUE)
);
wrapperPanelLayout.setVerticalGroup(
wrapperPanelLayout.createParallelGroup(Alignment.LEADING)
.addComponent(gLCanvas, GroupLayout.DEFAULT_SIZE, 111, Short.MAX_VALUE)
);
GroupLayout basicCapsPanelLayout = new GroupLayout(basicCapsPanel);
basicCapsPanel.setLayout(basicCapsPanelLayout);
basicCapsPanelLayout.setHorizontalGroup(
basicCapsPanelLayout.createParallelGroup(Alignment.LEADING)
.addGroup(basicCapsPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(basicCapsPanelLayout.createParallelGroup(Alignment.LEADING)
.addGroup(basicCapsPanelLayout.createSequentialGroup()
.addGroup(basicCapsPanelLayout.createParallelGroup(Alignment.LEADING)
.addComponent(vendor)
.addComponent(renderer))
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(basicCapsPanelLayout.createParallelGroup(Alignment.LEADING)
.addGroup(basicCapsPanelLayout.createSequentialGroup()
.addGroup(basicCapsPanelLayout.createParallelGroup(Alignment.LEADING)
.addComponent(glslField, GroupLayout.DEFAULT_SIZE, 254, Short.MAX_VALUE)
.addComponent(joglField, GroupLayout.DEFAULT_SIZE, 254, Short.MAX_VALUE)
.addComponent(glField, GroupLayout.DEFAULT_SIZE, 254, Short.MAX_VALUE))
.addPreferredGap(ComponentPlacement.UNRELATED)
.addComponent(wrapperPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addComponent(vendorField, GroupLayout.DEFAULT_SIZE, 348, Short.MAX_VALUE)
.addComponent(rendererField, GroupLayout.DEFAULT_SIZE, 348, Short.MAX_VALUE)))
.addComponent(jogl)
.addComponent(glsl)
.addComponent(gl))
.addContainerGap())
);
basicCapsPanelLayout.setVerticalGroup(
basicCapsPanelLayout.createParallelGroup(Alignment.LEADING)
.addGroup(basicCapsPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(basicCapsPanelLayout.createParallelGroup(Alignment.LEADING)
.addGroup(basicCapsPanelLayout.createSequentialGroup()
.addGroup(basicCapsPanelLayout.createParallelGroup(Alignment.BASELINE)
.addComponent(gl)
.addComponent(glField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(ComponentPlacement.UNRELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(basicCapsPanelLayout.createParallelGroup(Alignment.BASELINE)
.addComponent(glsl)
.addComponent(glslField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(ComponentPlacement.UNRELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(basicCapsPanelLayout.createParallelGroup(Alignment.BASELINE)
.addComponent(jogl)
.addComponent(joglField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)))
.addComponent(wrapperPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(18, 18, 18)
.addGroup(basicCapsPanelLayout.createParallelGroup(Alignment.BASELINE)
.addComponent(renderer)
.addComponent(rendererField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(ComponentPlacement.UNRELATED)
.addGroup(basicCapsPanelLayout.createParallelGroup(Alignment.BASELINE)
.addComponent(vendor)
.addComponent(vendorField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
overviewCapsPanel.setBorder(BorderFactory.createTitledBorder(NbBundle.getMessage(GLCapabilitiesPanel.class, "GLCapabilitiesPanel.overviewCapsPanel.border.title"))); // NOI18N
viewportField.setEditable(false);
viewportField.setHorizontalAlignment(JTextField.CENTER);
viewportField.setMinimumSize(new Dimension(75, 0));
binding = Bindings.createAutoBinding(UpdateStrategy.READ, capabilitiesModel, ELProperty.create("${maxViewPortSize}"), viewportField, BeanProperty.create("text"));
bindingGroup.addBinding(binding);
textureSizeField.setEditable(false);
textureSizeField.setHorizontalAlignment(JTextField.CENTER);
textureSizeField.setMinimumSize(new Dimension(75, 0));
binding = Bindings.createAutoBinding(UpdateStrategy.READ, capabilitiesModel, ELProperty.create("${maxTextureSize}"), textureSizeField, BeanProperty.create("text"));
bindingGroup.addBinding(binding);
textureUnitsField.setEditable(false);
textureUnitsField.setHorizontalAlignment(JTextField.CENTER);
textureUnitsField.setMinimumSize(new Dimension(75, 0));
binding = Bindings.createAutoBinding(UpdateStrategy.READ, capabilitiesModel, ELProperty.create("${maxTextureUnits}"), textureUnitsField, BeanProperty.create("text"));
bindingGroup.addBinding(binding);
textureUnitsVSField.setEditable(false);
textureUnitsVSField.setHorizontalAlignment(JTextField.CENTER);
textureUnitsVSField.setMinimumSize(new Dimension(75, 0));
binding = Bindings.createAutoBinding(UpdateStrategy.READ, capabilitiesModel, ELProperty.create("${maxVertexTextureImageUnits}"), textureUnitsVSField, BeanProperty.create("text"));
bindingGroup.addBinding(binding);
lightsField.setEditable(false);
lightsField.setHorizontalAlignment(JTextField.CENTER);
lightsField.setMinimumSize(new Dimension(75, 0));
binding = Bindings.createAutoBinding(UpdateStrategy.READ, capabilitiesModel, ELProperty.create("${maxLights}"), lightsField, BeanProperty.create("text"));
bindingGroup.addBinding(binding);
anisotropicFilteringField.setEditable(false);
anisotropicFilteringField.setHorizontalAlignment(JTextField.CENTER);
anisotropicFilteringField.setMinimumSize(new Dimension(75, 0));
binding = Bindings.createAutoBinding(UpdateStrategy.READ, capabilitiesModel, ELProperty.create("${maxAnisotropy}"), anisotropicFilteringField, BeanProperty.create("text"));
bindingGroup.addBinding(binding);
fsaaField.setEditable(false);
fsaaField.setHorizontalAlignment(JTextField.CENTER);
fsaaField.setMinimumSize(new Dimension(75, 0));
binding = Bindings.createAutoBinding(UpdateStrategy.READ, capabilitiesModel, ELProperty.create("${maxSampleBuffers}"), fsaaField, BeanProperty.create("text"));
bindingGroup.addBinding(binding);
textureUnitsFSField.setEditable(false);
textureUnitsFSField.setHorizontalAlignment(JTextField.CENTER);
textureUnitsFSField.setMinimumSize(new Dimension(75, 0));
binding = Bindings.createAutoBinding(UpdateStrategy.READ, capabilitiesModel, ELProperty.create("${maxTextureImageUnits}"), textureUnitsFSField, BeanProperty.create("text"));
bindingGroup.addBinding(binding);
textureUnitsGSField.setEditable(false);
textureUnitsGSField.setHorizontalAlignment(JTextField.CENTER);
textureUnitsGSField.setMinimumSize(new Dimension(75, 0));
binding = Bindings.createAutoBinding(UpdateStrategy.READ, capabilitiesModel, ELProperty.create("${maxGeometryTextureImageUnits}"), textureUnitsGSField, BeanProperty.create("text"));
bindingGroup.addBinding(binding);
renderBuffersField.setEditable(false);
renderBuffersField.setHorizontalAlignment(JTextField.CENTER);
renderBuffersField.setMinimumSize(new Dimension(75, 0));
binding = Bindings.createAutoBinding(UpdateStrategy.READ, capabilitiesModel, ELProperty.create("${maxDrawBuffers}"), renderBuffersField, BeanProperty.create("text"));
bindingGroup.addBinding(binding);
viewportSizeLabel.setText(NbBundle.getMessage(GLCapabilitiesPanel.class, "GLCapabilitiesPanel.viewportSizeLabel.text")); // NOI18N
textureSizeLabel.setText(NbBundle.getMessage(GLCapabilitiesPanel.class, "GLCapabilitiesPanel.textureSizeLabel.text")); // NOI18N
textureUnitsLabel.setText(NbBundle.getMessage(GLCapabilitiesPanel.class, "GLCapabilitiesPanel.textureUnitsLabel.text")); // NOI18N
textureUnitsVSLabel.setText(NbBundle.getMessage(GLCapabilitiesPanel.class, "GLCapabilitiesPanel.textureUnitsVSLabel.text")); // NOI18N
dynamicLightsLabel.setText(NbBundle.getMessage(GLCapabilitiesPanel.class, "GLCapabilitiesPanel.dynamicLightsLabel.text")); // NOI18N
anisotropicFilteringLabel.setText(NbBundle.getMessage(GLCapabilitiesPanel.class, "GLCapabilitiesPanel.anisotropicFilteringLabel.text")); // NOI18N
fsaaSamplesLabel.setText(NbBundle.getMessage(GLCapabilitiesPanel.class, "GLCapabilitiesPanel.fsaaSamplesLabel.text")); // NOI18N
textureUnitsFSLabel.setText(NbBundle.getMessage(GLCapabilitiesPanel.class, "GLCapabilitiesPanel.textureUnitsFSLabel.text")); // NOI18N
textureUnitsGSLabel.setText(NbBundle.getMessage(GLCapabilitiesPanel.class, "GLCapabilitiesPanel.textureUnitsGSLabel.text")); // NOI18N
renderBuffersLabel.setText(NbBundle.getMessage(GLCapabilitiesPanel.class, "GLCapabilitiesPanel.renderBuffersLabel.text")); // NOI18N
GroupLayout overviewCapsPanelLayout = new GroupLayout(overviewCapsPanel);
overviewCapsPanel.setLayout(overviewCapsPanelLayout);
overviewCapsPanelLayout.setHorizontalGroup(
overviewCapsPanelLayout.createParallelGroup(Alignment.LEADING)
.addGroup(overviewCapsPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(overviewCapsPanelLayout.createParallelGroup(Alignment.LEADING)
.addComponent(textureSizeLabel)
.addComponent(viewportSizeLabel)
.addComponent(textureUnitsLabel)
.addComponent(textureUnitsVSLabel)
.addComponent(dynamicLightsLabel))
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(overviewCapsPanelLayout.createParallelGroup(Alignment.CENTER)
.addComponent(lightsField, GroupLayout.DEFAULT_SIZE, 75, Short.MAX_VALUE)
.addComponent(viewportField, GroupLayout.DEFAULT_SIZE, 75, Short.MAX_VALUE)
.addComponent(textureSizeField, GroupLayout.DEFAULT_SIZE, 75, Short.MAX_VALUE)
.addComponent(textureUnitsField, GroupLayout.DEFAULT_SIZE, 75, Short.MAX_VALUE)
.addComponent(textureUnitsVSField, GroupLayout.DEFAULT_SIZE, 75, Short.MAX_VALUE))
.addPreferredGap(ComponentPlacement.UNRELATED)
.addGroup(overviewCapsPanelLayout.createParallelGroup(Alignment.LEADING, false)
.addComponent(anisotropicFilteringLabel)
.addComponent(fsaaSamplesLabel)
.addComponent(textureUnitsFSLabel)
.addComponent(textureUnitsGSLabel)
.addComponent(renderBuffersLabel))
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(overviewCapsPanelLayout.createParallelGroup(Alignment.CENTER)
.addComponent(anisotropicFilteringField, GroupLayout.DEFAULT_SIZE, 75, Short.MAX_VALUE)
.addComponent(fsaaField, GroupLayout.DEFAULT_SIZE, 75, Short.MAX_VALUE)
.addComponent(textureUnitsFSField, GroupLayout.DEFAULT_SIZE, 75, Short.MAX_VALUE)
.addComponent(textureUnitsGSField, GroupLayout.DEFAULT_SIZE, 75, Short.MAX_VALUE)
.addComponent(renderBuffersField, GroupLayout.DEFAULT_SIZE, 75, Short.MAX_VALUE))
.addContainerGap())
);
overviewCapsPanelLayout.setVerticalGroup(
overviewCapsPanelLayout.createParallelGroup(Alignment.LEADING)
.addGroup(overviewCapsPanelLayout.createSequentialGroup()
.addGroup(overviewCapsPanelLayout.createParallelGroup(Alignment.LEADING)
.addGroup(overviewCapsPanelLayout.createParallelGroup(Alignment.BASELINE)
.addComponent(viewportSizeLabel)
.addComponent(viewportField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(anisotropicFilteringLabel))
.addComponent(anisotropicFilteringField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(overviewCapsPanelLayout.createParallelGroup(Alignment.LEADING)
.addGroup(overviewCapsPanelLayout.createParallelGroup(Alignment.BASELINE)
.addComponent(textureSizeLabel)
.addComponent(textureSizeField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(fsaaSamplesLabel))
.addComponent(fsaaField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(overviewCapsPanelLayout.createParallelGroup(Alignment.LEADING)
.addGroup(overviewCapsPanelLayout.createParallelGroup(Alignment.BASELINE)
.addComponent(textureUnitsLabel)
.addComponent(textureUnitsField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(textureUnitsFSLabel))
.addComponent(textureUnitsFSField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(overviewCapsPanelLayout.createParallelGroup(Alignment.BASELINE)
.addComponent(textureUnitsVSLabel)
.addComponent(textureUnitsGSField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(textureUnitsVSField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(textureUnitsGSLabel))
.addGap(18, 18, 18)
.addGroup(overviewCapsPanelLayout.createParallelGroup(Alignment.BASELINE)
.addComponent(dynamicLightsLabel)
.addComponent(renderBuffersField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(lightsField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(renderBuffersLabel))
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
GroupLayout overviewPanelLayout = new GroupLayout(overviewPanel);
overviewPanel.setLayout(overviewPanelLayout);
overviewPanelLayout.setHorizontalGroup(
overviewPanelLayout.createParallelGroup(Alignment.LEADING)
.addGroup(Alignment.TRAILING, overviewPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(overviewPanelLayout.createParallelGroup(Alignment.TRAILING)
.addComponent(overviewCapsPanel, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(basicCapsPanel, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
overviewPanelLayout.setVerticalGroup(
overviewPanelLayout.createParallelGroup(Alignment.LEADING)
.addGroup(overviewPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(basicCapsPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(overviewCapsPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
tabbedPane.addTab(NbBundle.getMessage(GLCapabilitiesPanel.class, "GLCapabilitiesPanel.overviewPanel.TabConstraints.tabTitle"), overviewPanel); // NOI18N
tabbedPane.addTab(NbBundle.getMessage(GLCapabilitiesPanel.class, "GLCapabilitiesPanel.capabilitiesJPanel.TabConstraints.tabTitle"), capabilitiesJPanel); // NOI18N
tabbedPane.addTab(NbBundle.getMessage(GLCapabilitiesPanel.class, "GLCapabilitiesPanel.extensionsJPanel.TabConstraints.tabTitle"), extensionsJPanel); // NOI18N
tabbedPane.addTab(NbBundle.getMessage(GLCapabilitiesPanel.class, "GLCapabilitiesPanel.displayModesJPanel.TabConstraints.tabTitle"), displayModesJPanel); // NOI18N
GroupLayout layout = new GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(tabbedPane, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(tabbedPane, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
bindingGroup.bind();
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private JTextField anisotropicFilteringField;
private FilteredTable capabilitiesJPanel;
private GLCapabilitiesModel capabilitiesModel;
private DisplayModesPanel displayModesJPanel;
private FilteredTable extensionsJPanel;
private JTextField fsaaField;
private Canvas gLCanvas;
private JTextField glField;
private JTextField glslField;
private JTextField joglField;
private JTextField lightsField;
private JTextField renderBuffersField;
private JTextField rendererField;
private JTextField textureSizeField;
private JTextField textureUnitsFSField;
private JTextField textureUnitsField;
private JTextField textureUnitsGSField;
private JTextField textureUnitsVSField;
private JTextField vendorField;
private JTextField viewportField;
private BindingGroup bindingGroup;
// End of variables declaration//GEN-END:variables
}