/* ActionFocusManager.java created 2007-10-15 * */ package org.signalml.app.action.selector; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.apache.log4j.Logger; import org.signalml.app.config.preset.PresetManagerAdapter; import org.signalml.app.config.preset.PresetManagerEvent; import org.signalml.app.config.preset.PresetManagerListener; import org.signalml.app.document.BookDocument; import org.signalml.app.document.TagDocument; import org.signalml.app.document.signal.SignalDocument; import org.signalml.app.model.montage.MontagePresetManager; import org.signalml.app.view.signal.PositionedTag; import org.signalml.app.view.signal.SignalPlot; import org.signalml.app.view.signal.SignalView; import org.signalml.app.view.workspace.ViewerDocumentTabbedPane; import org.signalml.domain.montage.Montage; import org.signalml.plugin.export.signal.Document; import org.signalml.plugin.export.signal.TagStyle; /** ActionFocusManager * * * @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o. */ public class ActionFocusManager implements ChangeListener, DocumentFocusSelector, TagFocusSelector, TagStyleFocusSelector, SignalPlotFocusSelector, MontageFocusSelector, BookDocumentFocusSelector, PropertyChangeListener { protected static final Logger logger = Logger.getLogger(ActionFocusManager.class); private ActionFocusSupport afSupport = new ActionFocusSupport(this); private Document activeDocument = null; private MontagePresetManager montagePresetManager; private PresetManagerListener presetManagerListener; public MontagePresetManager getMontagePresetManager() { return montagePresetManager; } public void setMontagePresetManager(MontagePresetManager montagePresetManager) { if (this.montagePresetManager != montagePresetManager) { if (this.montagePresetManager != null) { this.montagePresetManager.removePresetManagerListener(presetManagerListener); } this.montagePresetManager = montagePresetManager; if (montagePresetManager != null) { if (presetManagerListener == null) { presetManagerListener = new PresetManagerAdapter() { @Override public void defaultPresetChanged(PresetManagerEvent ev) { afSupport.fireActionFocusChanged(); } }; } montagePresetManager.addPresetManagerListener(presetManagerListener); } } } @Override public Document getActiveDocument() { return activeDocument; } public void setActiveDocument(Document document) { if (document != activeDocument) { if (activeDocument != null) { activeDocument.setActive(false); activeDocument.removePropertyChangeListener(this); } activeDocument = document; if (document != null) { document.setActive(true); document.addPropertyChangeListener(this); } afSupport.fireActionFocusChanged(); } } @Override public PositionedTag getActiveTag() { logger.warn("WARNING: active tag not updated"); /* if( activeDocument instanceof SignalDocument ) { SignalView signalView = (SignalView) ( activeDocument.getDocumentView() ); return signalView.getTagSelection(); } */ return null; } @Override public TagStyle getActiveTagStyle() { logger.warn("WARNING: active tag style not updated"); return null; } @Override public TagDocument getActiveTagDocument() { if (activeDocument instanceof SignalDocument) { return ((SignalDocument) activeDocument).getActiveTag(); } return null; } @Override public SignalDocument getActiveSignalDocument() { if (activeDocument instanceof SignalDocument) { return (SignalDocument) activeDocument; } return null; } @Override public BookDocument getActiveBookDocument() { if (activeDocument instanceof BookDocument) { return (BookDocument) activeDocument; } return null; } @Override public SignalPlot getActiveSignalPlot() { if (activeDocument instanceof SignalDocument) { SignalView signalView = (SignalView)(activeDocument.getDocumentView()); return signalView.getActiveSignalPlot(); } return null; } @Override public Montage getActiveMontage() { if (montagePresetManager == null) { return null; } return (Montage) montagePresetManager.getDefaultPreset(); } @Override public void stateChanged(ChangeEvent e) { Object src = e.getSource(); if (src instanceof ViewerDocumentTabbedPane) { ViewerDocumentTabbedPane documentTabbedPane = (ViewerDocumentTabbedPane) src; int index = documentTabbedPane.getSelectedIndex(); if (index >= 0) { setActiveDocument(documentTabbedPane.getDocumentInTab(index)); } else { setActiveDocument(null); } } } @Override public void propertyChange(PropertyChangeEvent evt) { if (evt.getSource() == activeDocument) { if (activeDocument instanceof SignalDocument) { if (SignalDocument.ACTIVE_TAG_PROPERTY.equals(evt.getPropertyName())) { afSupport.fireActionFocusChanged(); } } } } @Override public void addActionFocusListener(ActionFocusListener listener) { afSupport.addActionFocusListener(listener); } @Override public void removeActionFocusListener(ActionFocusListener listener) { afSupport.removeActionFocusListener(listener); } }