private void addSelectionBorder() {
if (selectionBorder == null) {
VisuShape3DImpl selectionBorderShape = new VisuShape3DImpl(this);
Appearance appearSt = new Appearance();
LineAttributes lineSt = new LineAttributes(3.0f,
LineAttributes.PATTERN_SOLID, true);
appearSt.setLineAttributes(lineSt);
TransparencyAttributes ta = new TransparencyAttributes();
ta.setTransparencyMode(TransparencyAttributes.BLENDED);
ta.setTransparency(0.0f);
appearSt.setTransparencyAttributes(ta);
LineArray border = new LineArray(48, LineArray.COORDINATES
| LineArray.COLOR_3);
Point3d lowerPoint = new Point3d();
Point3d upperPoint = new Point3d();
getSelectionBorderBounds().getLower(lowerPoint);
getSelectionBorderBounds().getUpper(upperPoint);
border.setCoordinate(0, new Point3d(lowerPoint.x, lowerPoint.y,
lowerPoint.z));
border.setCoordinate(1, new Point3d(lowerPoint.x + 0.2,
lowerPoint.y, lowerPoint.z));
border.setCoordinate(2, new Point3d(lowerPoint.x, lowerPoint.y,
lowerPoint.z));
border.setCoordinate(3, new Point3d(lowerPoint.x,
lowerPoint.y + 0.2, lowerPoint.z));
border.setCoordinate(4, new Point3d(lowerPoint.x, lowerPoint.y,
lowerPoint.z));
border.setCoordinate(5, new Point3d(lowerPoint.x, lowerPoint.y,
lowerPoint.z + 0.2));
border.setCoordinate(6, new Point3d(lowerPoint.x, lowerPoint.y,
upperPoint.z));
border.setCoordinate(7, new Point3d(lowerPoint.x + 0.2,
lowerPoint.y, upperPoint.z));
border.setCoordinate(8, new Point3d(lowerPoint.x, lowerPoint.y,
upperPoint.z));
border.setCoordinate(9, new Point3d(lowerPoint.x,
lowerPoint.y + 0.2, upperPoint.z));
border.setCoordinate(10, new Point3d(lowerPoint.x, lowerPoint.y,
upperPoint.z));
border.setCoordinate(11, new Point3d(lowerPoint.x, lowerPoint.y,
upperPoint.z - 0.2));
border.setCoordinate(12, new Point3d(upperPoint.x, lowerPoint.y,
lowerPoint.z));
border.setCoordinate(13, new Point3d(upperPoint.x - 0.2,
lowerPoint.y, lowerPoint.z));
border.setCoordinate(14, new Point3d(upperPoint.x, lowerPoint.y,
lowerPoint.z));
border.setCoordinate(15, new Point3d(upperPoint.x,
lowerPoint.y + 0.2, lowerPoint.z));
border.setCoordinate(16, new Point3d(upperPoint.x, lowerPoint.y,
lowerPoint.z));
border.setCoordinate(17, new Point3d(upperPoint.x, lowerPoint.y,
lowerPoint.z + 0.2));
border.setCoordinate(18, new Point3d(upperPoint.x, lowerPoint.y,
upperPoint.z));
border.setCoordinate(19, new Point3d(upperPoint.x - 0.2,
lowerPoint.y, upperPoint.z));
border.setCoordinate(20, new Point3d(upperPoint.x, lowerPoint.y,
upperPoint.z));
border.setCoordinate(21, new Point3d(upperPoint.x,
lowerPoint.y + 0.2, upperPoint.z));
border.setCoordinate(22, new Point3d(upperPoint.x, lowerPoint.y,
upperPoint.z));
border.setCoordinate(23, new Point3d(upperPoint.x, lowerPoint.y,
upperPoint.z - 0.2));
border.setCoordinate(24, new Point3d(lowerPoint.x, upperPoint.y,
lowerPoint.z));
border.setCoordinate(25, new Point3d(lowerPoint.x + 0.2,
upperPoint.y, lowerPoint.z));
border.setCoordinate(26, new Point3d(lowerPoint.x, upperPoint.y,
lowerPoint.z));
border.setCoordinate(27, new Point3d(lowerPoint.x,
upperPoint.y - 0.2, lowerPoint.z));
border.setCoordinate(28, new Point3d(lowerPoint.x, upperPoint.y,
lowerPoint.z));
border.setCoordinate(29, new Point3d(lowerPoint.x, upperPoint.y,
lowerPoint.z + 0.2));
border.setCoordinate(30, new Point3d(lowerPoint.x, upperPoint.y,
upperPoint.z));
border.setCoordinate(31, new Point3d(lowerPoint.x + 0.2,
upperPoint.y, upperPoint.z));
border.setCoordinate(32, new Point3d(lowerPoint.x, upperPoint.y,
upperPoint.z));
border.setCoordinate(33, new Point3d(lowerPoint.x,
upperPoint.y - 0.2, upperPoint.z));
border.setCoordinate(34, new Point3d(lowerPoint.x, upperPoint.y,
upperPoint.z));
border.setCoordinate(35, new Point3d(lowerPoint.x, upperPoint.y,
upperPoint.z - 0.2));
border.setCoordinate(36, new Point3d(upperPoint.x, upperPoint.y,
lowerPoint.z));
border.setCoordinate(37, new Point3d(upperPoint.x - 0.2,
upperPoint.y, lowerPoint.z));
border.setCoordinate(38, new Point3d(upperPoint.x, upperPoint.y,
lowerPoint.z));
border.setCoordinate(39, new Point3d(upperPoint.x,
upperPoint.y - 0.2, lowerPoint.z));
border.setCoordinate(40, new Point3d(upperPoint.x, upperPoint.y,
lowerPoint.z));
border.setCoordinate(41, new Point3d(upperPoint.x, upperPoint.y,
lowerPoint.z + 0.2));
border.setCoordinate(42, new Point3d(upperPoint.x, upperPoint.y,
upperPoint.z));
border.setCoordinate(43, new Point3d(upperPoint.x - 0.2,
upperPoint.y, upperPoint.z));
border.setCoordinate(44, new Point3d(upperPoint.x, upperPoint.y,
upperPoint.z));
border.setCoordinate(45, new Point3d(upperPoint.x,
upperPoint.y - 0.2, upperPoint.z));
border.setCoordinate(46, new Point3d(upperPoint.x, upperPoint.y,
upperPoint.z));
border.setCoordinate(47, new Point3d(upperPoint.x, upperPoint.y,
upperPoint.z - 0.2));
border.setColor(0, new Color3f(1f, 1f, 1f));
border.setColor(1, new Color3f(1f, 1f, 1f));
border.setColor(2, new Color3f(1f, 1f, 1f));
border.setColor(3, new Color3f(1f, 1f, 1f));
border.setColor(4, new Color3f(1f, 1f, 1f));
border.setColor(5, new Color3f(1f, 1f, 1f));
border.setColor(6, new Color3f(1f, 1f, 1f));
border.setColor(7, new Color3f(1f, 1f, 1f));
border.setColor(8, new Color3f(1f, 1f, 1f));
border.setColor(9, new Color3f(1f, 1f, 1f));
border.setColor(10, new Color3f(1f, 1f, 1f));
border.setColor(11, new Color3f(1f, 1f, 1f));
border.setColor(12, new Color3f(1f, 1f, 1f));
border.setColor(13, new Color3f(1f, 1f, 1f));
border.setColor(14, new Color3f(1f, 1f, 1f));
border.setColor(15, new Color3f(1f, 1f, 1f));
border.setColor(16, new Color3f(1f, 1f, 1f));
border.setColor(17, new Color3f(1f, 1f, 1f));
border.setColor(18, new Color3f(1f, 1f, 1f));
border.setColor(19, new Color3f(1f, 1f, 1f));
border.setColor(20, new Color3f(1f, 1f, 1f));
border.setColor(21, new Color3f(1f, 1f, 1f));
border.setColor(22, new Color3f(1f, 1f, 1f));
border.setColor(23, new Color3f(1f, 1f, 1f));
border.setColor(24, new Color3f(1f, 1f, 1f));
border.setColor(25, new Color3f(1f, 1f, 1f));
border.setColor(26, new Color3f(1f, 1f, 1f));
border.setColor(27, new Color3f(1f, 1f, 1f));
border.setColor(28, new Color3f(1f, 1f, 1f));
border.setColor(29, new Color3f(1f, 1f, 1f));
border.setColor(30, new Color3f(1f, 1f, 1f));
border.setColor(31, new Color3f(1f, 1f, 1f));
border.setColor(32, new Color3f(1f, 1f, 1f));
border.setColor(33, new Color3f(1f, 1f, 1f));
border.setColor(34, new Color3f(1f, 1f, 1f));
border.setColor(35, new Color3f(1f, 1f, 1f));
border.setColor(36, new Color3f(1f, 1f, 1f));
border.setColor(37, new Color3f(1f, 1f, 1f));
border.setColor(38, new Color3f(1f, 1f, 1f));
border.setColor(39, new Color3f(1f, 1f, 1f));
border.setColor(40, new Color3f(1f, 1f, 1f));
border.setColor(41, new Color3f(1f, 1f, 1f));
border.setColor(42, new Color3f(1f, 1f, 1f));
border.setColor(43, new Color3f(1f, 1f, 1f));
border.setColor(44, new Color3f(1f, 1f, 1f));
border.setColor(45, new Color3f(1f, 1f, 1f));
border.setColor(46, new Color3f(1f, 1f, 1f));
border.setColor(47, new Color3f(1f, 1f, 1f));
selectionBorderShape.setAppearance(appearSt);
selectionBorderShape.addGeometry(border);
selectionBorder = new BranchGroup();
selectionBorder.setCapability(BranchGroup.ALLOW_DETACH);
selectionBorder.addChild(selectionBorderShape);
}
getTransform().addChild(selectionBorder);
}