/* * © 2008 3kraft * $Id: DataFrameController.java,v 1.33 2010-12-17 10:11:41 illetsch Exp $ */ package com.dreikraft.axbo.controller; import com.dreikraft.events.ApplicationEventDispatcher; import com.dreikraft.events.ApplicationEventEnabled; import com.dreikraft.axbo.data.SleepData; import com.dreikraft.axbo.events.DiagramCopy; import com.dreikraft.axbo.events.DiagramPrint; import com.dreikraft.axbo.events.DiagramSaveAsPNG; import com.dreikraft.axbo.events.DiagramStatsUpdate; import com.dreikraft.axbo.events.DiagramUpdate; import com.dreikraft.axbo.events.DiagramZoom; import com.dreikraft.axbo.events.DiagramClose; import com.dreikraft.axbo.events.DiagramClosed; import com.dreikraft.axbo.events.SleepDataSave; import com.dreikraft.axbo.gui.AxboFrame; import com.dreikraft.axbo.gui.DataFrame; import java.awt.print.PageFormat; import org.apache.commons.logging.*; /** * $Id: DataFrameController.java,v 1.33 2010-12-17 10:11:41 illetsch Exp $ * * @author 3kraft - $Author: illetsch $ * @version $Revision: 1.33 $ */ public class DataFrameController implements ApplicationEventEnabled { public static final Log log = LogFactory.getLog(DataFrameController.class); private final DataFrame view; private final SleepData sleepData; public DataFrameController(final SleepData sleepData) { this.view = new DataFrame(); this.sleepData = sleepData; } public void init() { // register events ApplicationEventDispatcher.getInstance().registerApplicationEventHandler( DiagramCopy.class, this); ApplicationEventDispatcher.getInstance().registerApplicationEventHandler( DiagramPrint.class, this); ApplicationEventDispatcher.getInstance().registerApplicationEventHandler( DiagramSaveAsPNG.class, this); ApplicationEventDispatcher.getInstance().registerApplicationEventHandler( DiagramStatsUpdate.class, this); ApplicationEventDispatcher.getInstance().registerApplicationEventHandler( DiagramUpdate.class, this); ApplicationEventDispatcher.getInstance().registerApplicationEventHandler( DiagramZoom.class, this); ApplicationEventDispatcher.getInstance().registerApplicationEventHandler( DiagramClose.class, this); ApplicationEventDispatcher.getInstance().registerApplicationEventHandler( SleepDataSave.class, this); view.init(); view.createChartPanel(sleepData); ApplicationEventDispatcher.getInstance().dispatchGUIEvent(new DiagramStatsUpdate( this)); } public void handle(final DiagramClose evt) { if (view.equals(evt.getDataView())) { view.close(); ApplicationEventDispatcher.getInstance().deregisterApplicationEventHandler( DiagramCopy.class, this); ApplicationEventDispatcher.getInstance().deregisterApplicationEventHandler( DiagramPrint.class, this); ApplicationEventDispatcher.getInstance().deregisterApplicationEventHandler( DiagramSaveAsPNG.class, this); ApplicationEventDispatcher.getInstance().deregisterApplicationEventHandler( DiagramStatsUpdate.class, this); ApplicationEventDispatcher.getInstance().deregisterApplicationEventHandler( DiagramUpdate.class, this); ApplicationEventDispatcher.getInstance().deregisterApplicationEventHandler( DiagramZoom.class, this); ApplicationEventDispatcher.getInstance().dispatchGUIEvent(new DiagramClosed( this, this)); } } public DataFrame getView() { return view; } public SleepData getSleepData() { return sleepData; } public void handle(final DiagramCopy evt) { if (evt.getSource().equals(this.view)) { view.doCopy(); } } public void handle(final DiagramPrint evt) { if (evt.getSource().equals(this.view) || evt.getSource() instanceof AxboFrame) { final PageFormat pf = evt.getPrintJob().defaultPage(); pf.setOrientation(PageFormat.LANDSCAPE); evt.getBook().append(view, pf); } } public void handle(final DiagramSaveAsPNG evt) { if (evt.getSource().equals(this.view)) { view.doSaveAsPNG(); } } public void handle(final DiagramStatsUpdate evt) { view.updateStats(sleepData); } public void handle(final DiagramUpdate evt) { view.updateChart(); } public void handle(final DiagramZoom evt) { view.zoom(sleepData, evt.getZoomStart(), evt.getZoomDuration(), evt.getZoomRange()); } public void handle(final SleepDataSave evt) { if (evt.getSleepData().equals(sleepData)) { view.updateStats(evt.getSleepData()); } } }