package app; import com.google.inject.Inject; import com.google.inject.Provider; import domain.image.processing.complex.ComplexMatrix; import ui.abstractions.AbstractView; import ui.implementation.views.DoubleMatrix; import ui.implementation.views.fitering.global.IdealFilteringView; import ui.implementation.views.fitering.global.NonIdealFilteringView; import ui.implementation.views.ViewInitializer; import ui.implementation.views.fitering.local.LocalFilteringView; import ui.implementation.views.morphology.BasicMorphologyView; import ui.implementation.views.morphology.ComplexMorphologyView; import ui.implementation.views.outline.LinearOutlineView; import ui.implementation.views.outline.NonLinearOutlineView; import ui.implementation.views.threshold.ThresholdingView; /** * Concrete implement of the INavigator interface. * Implements abstract endpoints to displays views in a Swing way * @author Laurent Crema */ public class SwingNavigator implements INavigator { private final Provider doubleMatrixProvider; private final Provider filteringProvider; private final Provider nonIdealFilteringProvider; private final Provider convolutionFilteringProvider; private final Provider basicMorphologyProvider; private final Provider complexMorphologyProvider; private final Provider linearOutlineProvider; private final Provider nonLinearOutlineProvider; private final Provider thresholdingProvider; @Inject public SwingNavigator( Provider doubleMatrixProvider, Provider filteringProvider, Provider nonIdealFilteringProvider, Provider convolutionFilterProvider, Provider basicMorphologyProvider, Provider complexMorphologyProvider, Provider linearOutlineProvider, Provider nonLinearOutlineProvider, Provider thresholdingProvider ) { this.doubleMatrixProvider = doubleMatrixProvider; this.filteringProvider = filteringProvider; this.nonIdealFilteringProvider = nonIdealFilteringProvider; this.convolutionFilteringProvider = convolutionFilterProvider; this.basicMorphologyProvider = basicMorphologyProvider; this.complexMorphologyProvider = complexMorphologyProvider; this.linearOutlineProvider = linearOutlineProvider; this.nonLinearOutlineProvider = nonLinearOutlineProvider; this.thresholdingProvider = thresholdingProvider; } @Override public void showFourier() { DoubleMatrix view = doubleMatrixProvider.get(); runView(view); } @Override public void showIdealFiltering() { IdealFilteringView view = filteringProvider.get(); runView(view); } @Override public void showButterworth() { NonIdealFilteringView view = nonIdealFilteringProvider.get(); runView(view); } @Override public void showConvolutionFiltering() { LocalFilteringView view = convolutionFilteringProvider.get(); runView(view); } @Override public void showBasicMorphology() { BasicMorphologyView view = basicMorphologyProvider.get(); runView(view); } @Override public void showComplexMorphology() { ComplexMorphologyView view = complexMorphologyProvider.get(); runView(view); } @Override public void showLinearOutline() { LinearOutlineView view = linearOutlineProvider.get(); runView(view); } @Override public void showNonLinearOutline() { NonLinearOutlineView view = nonLinearOutlineProvider.get(); runView(view); } @Override public void showThresholding() { ThresholdingView view = thresholdingProvider.get(); runView(view); } private void runView(AbstractView view) { ViewInitializer.Initialize(view); view.setVisible(true); } }