distanceToEndPointChangeListener);
}
});
// Left side color and texture buttons bound to left side controller properties
this.leftSideColorRadioButton = new JRadioButton(SwingTools.getLocalizedLabelText(preferences,
WallPanel.class, "leftSideColorRadioButton.text"));
this.leftSideColorRadioButton.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent ev) {
if (leftSideColorRadioButton.isSelected()) {
controller.setLeftSidePaint(WallController.WallPaint.COLORED);
}
}
});
controller.addPropertyChangeListener(WallController.Property.LEFT_SIDE_PAINT,
new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent ev) {
updateLeftSideColorRadioButtons(controller);
}
});
this.leftSideColorButton = new ColorButton();
this.leftSideColorButton.setColorDialogTitle(preferences.getLocalizedString(
WallPanel.class, "leftSideColorDialog.title"));
this.leftSideColorButton.setColor(controller.getLeftSideColor());
this.leftSideColorButton.addPropertyChangeListener(ColorButton.COLOR_PROPERTY,
new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent ev) {
controller.setLeftSideColor(leftSideColorButton.getColor());
controller.setLeftSidePaint(WallController.WallPaint.COLORED);
}
});
controller.addPropertyChangeListener(WallController.Property.LEFT_SIDE_COLOR,
new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent ev) {
leftSideColorButton.setColor(controller.getLeftSideColor());
}
});
this.leftSideTextureRadioButton = new JRadioButton(SwingTools.getLocalizedLabelText(preferences,
WallPanel.class, "leftSideTextureRadioButton.text"));
this.leftSideTextureRadioButton.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent ev) {
if (leftSideTextureRadioButton.isSelected()) {
controller.setLeftSidePaint(WallController.WallPaint.TEXTURED);
}
}
});
this.leftSideTextureComponent = (JComponent)controller.getLeftSideTextureController().getView();
ButtonGroup leftSideColorButtonGroup = new ButtonGroup();
leftSideColorButtonGroup.add(this.leftSideColorRadioButton);
leftSideColorButtonGroup.add(this.leftSideTextureRadioButton);
updateLeftSideColorRadioButtons(controller);
// Left side shininess radio buttons bound to LEFT_SIDE_SHININESS controller property
this.leftSideMattRadioButton = new JRadioButton(SwingTools.getLocalizedLabelText(preferences,
WallPanel.class, "leftSideMattRadioButton.text"));
this.leftSideMattRadioButton.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent ev) {
if (leftSideMattRadioButton.isSelected()) {
controller.setLeftSideShininess(0f);
}
}
});
PropertyChangeListener leftSideShininessListener = new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent ev) {
updateLeftSideShininessRadioButtons(controller);
}
};
controller.addPropertyChangeListener(WallController.Property.LEFT_SIDE_SHININESS,
leftSideShininessListener);
this.leftSideShinyRadioButton = new JRadioButton(SwingTools.getLocalizedLabelText(preferences,
WallPanel.class, "leftSideShinyRadioButton.text"));
this.leftSideShinyRadioButton.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent ev) {
if (leftSideShinyRadioButton.isSelected()) {
controller.setLeftSideShininess(0.25f);
}
}
});
controller.addPropertyChangeListener(WallController.Property.LEFT_SIDE_SHININESS,
leftSideShininessListener);
ButtonGroup leftSideShininessButtonGroup = new ButtonGroup();
leftSideShininessButtonGroup.add(this.leftSideMattRadioButton);
leftSideShininessButtonGroup.add(this.leftSideShinyRadioButton);
updateLeftSideShininessRadioButtons(controller);
// Right side color and texture buttons bound to right side controller properties
this.rightSideColorRadioButton = new JRadioButton(SwingTools.getLocalizedLabelText(preferences,
WallPanel.class, "rightSideColorRadioButton.text"));
this.rightSideColorRadioButton.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
if (rightSideColorRadioButton.isSelected()) {
controller.setRightSidePaint(WallController.WallPaint.COLORED);
}
}
});
controller.addPropertyChangeListener(WallController.Property.RIGHT_SIDE_PAINT,
new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent ev) {
updateRightSideColorRadioButtons(controller);
}
});
this.rightSideColorButton = new ColorButton();
this.rightSideColorButton.setColor(controller.getRightSideColor());
this.rightSideColorButton.setColorDialogTitle(preferences.getLocalizedString(
WallPanel.class, "rightSideColorDialog.title"));
this.rightSideColorButton.addPropertyChangeListener(ColorButton.COLOR_PROPERTY,
new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent ev) {
controller.setRightSideColor(rightSideColorButton.getColor());
controller.setRightSidePaint(WallController.WallPaint.COLORED);
}
});
controller.addPropertyChangeListener(WallController.Property.RIGHT_SIDE_COLOR,
new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent ev) {
rightSideColorButton.setColor(controller.getRightSideColor());
}
});
this.rightSideTextureRadioButton = new JRadioButton(SwingTools.getLocalizedLabelText(preferences,
WallPanel.class, "rightSideTextureRadioButton.text"));
this.rightSideTextureRadioButton.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
if (rightSideTextureRadioButton.isSelected()) {
controller.setRightSidePaint(WallController.WallPaint.TEXTURED);
}
}
});
this.rightSideTextureComponent = (JComponent)controller.getRightSideTextureController().getView();
ButtonGroup rightSideColorButtonGroup = new ButtonGroup();
rightSideColorButtonGroup.add(this.rightSideColorRadioButton);
rightSideColorButtonGroup.add(this.rightSideTextureRadioButton);
updateRightSideColorRadioButtons(controller);
// Right side shininess radio buttons bound to LEFT_SIDE_SHININESS controller property
this.rightSideMattRadioButton = new JRadioButton(SwingTools.getLocalizedLabelText(preferences,
WallPanel.class, "rightSideMattRadioButton.text"));
this.rightSideMattRadioButton.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent ev) {
if (rightSideMattRadioButton.isSelected()) {
controller.setRightSideShininess(0f);
}
}
});
PropertyChangeListener rightSideShininessListener = new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent ev) {
updateRightSideShininessRadioButtons(controller);
}
};
controller.addPropertyChangeListener(WallController.Property.RIGHT_SIDE_SHININESS,
rightSideShininessListener);
this.rightSideShinyRadioButton = new JRadioButton(SwingTools.getLocalizedLabelText(preferences,
WallPanel.class, "rightSideShinyRadioButton.text"));
this.rightSideShinyRadioButton.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent ev) {
if (rightSideShinyRadioButton.isSelected()) {
controller.setRightSideShininess(0.25f);
}
}
});
controller.addPropertyChangeListener(WallController.Property.RIGHT_SIDE_SHININESS,
rightSideShininessListener);
ButtonGroup rightSideShininessButtonGroup = new ButtonGroup();
rightSideShininessButtonGroup.add(this.rightSideMattRadioButton);
rightSideShininessButtonGroup.add(this.rightSideShinyRadioButton);
updateRightSideShininessRadioButtons(controller);
this.rectangularWallRadioButton = new JRadioButton(SwingTools.getLocalizedLabelText(preferences,
WallPanel.class, "rectangularWallRadioButton.text"));
this.rectangularWallRadioButton.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent ev) {
if (rectangularWallRadioButton.isSelected()) {
controller.setShape(WallController.WallShape.RECTANGULAR_WALL);
}
}
});
controller.addPropertyChangeListener(WallController.Property.SHAPE,
new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent ev) {
updateWallShapeRadioButtons(controller);
}
});
// Create height label and its spinner bound to RECTANGULAR_WALL_HEIGHT controller property
this.rectangularWallHeightLabel = new JLabel(SwingTools.getLocalizedLabelText(preferences,
WallPanel.class, "rectangularWallHeightLabel.text", unitName));
final NullableSpinner.NullableSpinnerLengthModel rectangularWallHeightSpinnerModel =
new NullableSpinner.NullableSpinnerLengthModel(preferences, minimumLength, 10000f);
this.rectangularWallHeightSpinner = new NullableSpinner(rectangularWallHeightSpinnerModel);
rectangularWallHeightSpinnerModel.setNullable(controller.getRectangularWallHeight() == null);
rectangularWallHeightSpinnerModel.setLength(controller.getRectangularWallHeight());
final PropertyChangeListener rectangularWallHeightChangeListener = new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent ev) {
rectangularWallHeightSpinnerModel.setNullable(ev.getNewValue() == null);
rectangularWallHeightSpinnerModel.setLength((Float)ev.getNewValue());
}
};
controller.addPropertyChangeListener(WallController.Property.RECTANGULAR_WALL_HEIGHT,
rectangularWallHeightChangeListener);
rectangularWallHeightSpinnerModel.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent ev) {
controller.removePropertyChangeListener(WallController.Property.RECTANGULAR_WALL_HEIGHT,
rectangularWallHeightChangeListener);
controller.setRectangularWallHeight(rectangularWallHeightSpinnerModel.getLength());
controller.addPropertyChangeListener(WallController.Property.RECTANGULAR_WALL_HEIGHT,
rectangularWallHeightChangeListener);
}
});
this.slopingWallRadioButton = new JRadioButton(SwingTools.getLocalizedLabelText(preferences,
WallPanel.class, "slopingWallRadioButton.text"));
this.slopingWallRadioButton.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent ev) {
if (slopingWallRadioButton.isSelected()) {
controller.setShape(WallController.WallShape.SLOPING_WALL);