PointHeaterDialog(final MDModel model) {

		super(new BorderLayout());

		setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),
				"Increasing selection zone >>>>>>"));

		sizeButton = new JRadioButton[5];

		JPanel panel = new JPanel(new GridLayout(1, sizeButton.length, 10, 10)) {
			public Insets getInsets() {
				return new Insets(10, 10, 10, 10);
			}
		};
		add(panel, BorderLayout.CENTER);

		ButtonGroup buttonGroup = new ButtonGroup();

		for (int i = 0; i < sizeButton.length; i++) {

			final int ii = i;
			sizeButton[i] = new JRadioButton(new Icon() {

				private GeneralPath path;

				private void drawSine(Graphics2D g) {
					int x = getIconWidth() / 2;
					int y = getIconHeight() / 2;
					int n = 40;
					if (path == null)
						path = new GeneralPath();
					else path.reset();
					path.moveTo(x, y);
					for (int i = 0; i < n; i += 2) {
						x++;
						path.lineTo(x, (int) (y + 4.0 * Math.sin(i * 0.1 * Math.PI)));
					}
					g.draw(path);
				}

				public int getIconWidth() {
					return 48;
				}

				public int getIconHeight() {
					return 48;
				}

				public void paintIcon(Component c, Graphics g, int x, int y) {
					Graphics2D g2 = (Graphics2D) g;
					g2.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
					g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
					g2.setColor(Color.white);
					g2.fillRect(2, 2, getIconWidth() - 5, getIconHeight() - 5);
					int d = (ii + 1) * 6;
					int xc = getIconWidth() / 2;
					int yc = getIconHeight() / 2;
					int action = ((MDView) model.getView()).getAction();
					Color color = Color.lightGray;
					if (action == UserAction.COOL_ID)
						color = Color.blue;
					else if (action == UserAction.HEAT_ID)
						color = Color.red;
					g2.setColor(color);
					g2.fillOval(xc - d / 2, yc - d / 2, d, d);
					g2.setColor(Color.gray);
					g2.drawOval(xc - d / 2, yc - d / 2, d, d);
					g2.drawRect(2, 2, getIconWidth() - 5, getIconHeight() - 5);
					g2.setColor(Color.black);
					if (((JRadioButton) c).isSelected()) {
						g2.drawRect(0, 0, getIconWidth() - 1, getIconHeight() - 1);
					}
					drawSine(g2);
					g2.rotate(0.66666667 * Math.PI, xc, yc);
					drawSine(g2);
					g2.rotate(0.66666667 * Math.PI, xc, yc);
					drawSine(g2);
					g2.dispose();
				}

			}) {
				public Insets getInsets() {
					return new Insets(10, 5, 5, 5);
				}
			};
			sizeButton[i].addItemListener(new ItemListener() {
				public void itemStateChanged(ItemEvent e) {
					if (e.getStateChange() == ItemEvent.SELECTED)
						((MDView) model.getView()).getPointHeater().setSize((ii + 1) * PointHeater.MIN_DIAMETER);
				}
			});
			sizeButton[i].setToolTipText("Diameter " + (i + 1) * PointHeater.MIN_DIAMETER / 10 + " angstroms ("
					+ (i + 1) * PointHeater.MIN_DIAMETER + " pixels)");
			sizeButton[i].setPreferredSize(new Dimension(48, 48));
			buttonGroup.add(sizeButton[i]);
			panel.add(sizeButton[i]);
		}

		sizeButton[2].setSelected(true);

	}