PhaseDiagramPanel.java

package org.hammer;

import java.awt.BorderLayout;
import java.util.logging.Logger;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import org.hammer.audio.AudioCaptureService;

/**
 * Panel containing the phase diagram visualization.
 *
 * <p>Refactored to inject AudioCaptureService into the canvas.
 *
 * @author chammer
 */
public class PhaseDiagramPanel extends JPanel {

  private static final Logger LOGGER = Logger.getLogger(PhaseDiagramPanel.class.getName());

  private final PhaseDiagramCanvas canvas;

  public PhaseDiagramPanel() {
    super();
    LOGGER.info("PhaseDiagramPanel created");
    setLayout(new BorderLayout(0, 0));
    setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));

    canvas = new PhaseDiagramCanvas();
    add(canvas, BorderLayout.CENTER);
  }

  /**
   * Set the audio capture service for the phase diagram.
   *
   * @param service the AudioCaptureService
   */
  public void setAudioCaptureService(AudioCaptureService service) {
    LOGGER.info("AudioCaptureService set: " + (service != null));
    canvas.setAudioCaptureService(service);
  }
}