Files
MASI4-signal-processing/src/main/java/app/SwingNavigator.java
2026-09-29 12:35:26 +02:00

117 lines
4.2 KiB
Java

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<DoubleMatrix> doubleMatrixProvider;
private final Provider<IdealFilteringView> filteringProvider;
private final Provider<NonIdealFilteringView> nonIdealFilteringProvider;
private final Provider<LocalFilteringView> convolutionFilteringProvider;
private final Provider<BasicMorphologyView> basicMorphologyProvider;
private final Provider<ComplexMorphologyView> complexMorphologyProvider;
private final Provider<LinearOutlineView> linearOutlineProvider;
private final Provider<NonLinearOutlineView> nonLinearOutlineProvider;
private final Provider<ThresholdingView> thresholdingProvider;
@Inject
public SwingNavigator(
Provider<DoubleMatrix> doubleMatrixProvider,
Provider<IdealFilteringView> filteringProvider,
Provider<NonIdealFilteringView> nonIdealFilteringProvider,
Provider<LocalFilteringView> convolutionFilterProvider,
Provider<BasicMorphologyView> basicMorphologyProvider,
Provider<ComplexMorphologyView> complexMorphologyProvider,
Provider<LinearOutlineView> linearOutlineProvider,
Provider<NonLinearOutlineView> nonLinearOutlineProvider,
Provider<ThresholdingView> 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);
}
}