public ObstacleSettings(final Scene scene, final SceneRenderer renderer) { PropertyLayout layout = new PropertyLayout(); // color ColorPanel colorPanel = new ColorPanel("Obstacle Color", scene.view.obstacle.color); colorPanel.addListener( new ColorPanel.Listener() { public void colorChanged(ColorPanel panel, Vec3f newColor) { scene.view.obstacle.color.set(newColor); } }); layout.add("Color", colorPanel); // edge width final SpinnerNumberModel widthModel = new SpinnerNumberModel(scene.view.obstacle.edgeWidth, 0, 100, 0.01); JSpinner widthSpinner = new JSpinner(widthModel); widthSpinner.addChangeListener( new ChangeListener() { public void stateChanged(ChangeEvent e) { scene.view.obstacle.edgeWidth = widthModel.getNumber().floatValue(); renderer.get2D().getObstacleRenderer().markDirty(); } }); layout.add("Edge Width", widthSpinner); // visibility VisibilityWidget visibility = new VisibilityWidget(scene.view.obstacle.visible2d, scene.view.obstacle.visible3d); visibility.visible3d.setEnabled(false); visibility.addListener( new VisibilityWidget.Listener() { public void visibilityChanged(boolean visible2d, boolean visible3d) { scene.view.obstacle.visible2d = visible2d; } }); layout.add(visibility); // draw origin final JCheckBox originCheckBox = new JCheckBox("Draw Origin"); originCheckBox.setSelected(scene.view.obstacle.originVisible); originCheckBox.addItemListener( new ItemListener() { public void itemStateChanged(ItemEvent e) { scene.view.obstacle.originVisible = originCheckBox.isSelected(); renderer.get2D().getObstacleRenderer().markDirty(); } }); layout.add(originCheckBox); layout.apply(this); }