Add use case view
This commit is contained in:
@@ -18,4 +18,5 @@ public interface INavigator {
|
|||||||
void showLinearOutline();
|
void showLinearOutline();
|
||||||
void showNonLinearOutline();
|
void showNonLinearOutline();
|
||||||
void showThresholding();
|
void showThresholding();
|
||||||
|
void showUseCase();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import ui.implementation.views.morphology.ComplexMorphologyView;
|
|||||||
import ui.implementation.views.outline.LinearOutlineView;
|
import ui.implementation.views.outline.LinearOutlineView;
|
||||||
import ui.implementation.views.outline.NonLinearOutlineView;
|
import ui.implementation.views.outline.NonLinearOutlineView;
|
||||||
import ui.implementation.views.threshold.ThresholdingView;
|
import ui.implementation.views.threshold.ThresholdingView;
|
||||||
|
import ui.implementation.views.useCase.UseCaseView;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Concrete implement of the INavigator interface.
|
* Concrete implement of the INavigator interface.
|
||||||
@@ -30,6 +31,7 @@ public class SwingNavigator implements INavigator {
|
|||||||
private final Provider<LinearOutlineView> linearOutlineProvider;
|
private final Provider<LinearOutlineView> linearOutlineProvider;
|
||||||
private final Provider<NonLinearOutlineView> nonLinearOutlineProvider;
|
private final Provider<NonLinearOutlineView> nonLinearOutlineProvider;
|
||||||
private final Provider<ThresholdingView> thresholdingProvider;
|
private final Provider<ThresholdingView> thresholdingProvider;
|
||||||
|
private final Provider<UseCaseView> useCaseProvider;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public SwingNavigator(
|
public SwingNavigator(
|
||||||
@@ -41,7 +43,8 @@ public class SwingNavigator implements INavigator {
|
|||||||
Provider<ComplexMorphologyView> complexMorphologyProvider,
|
Provider<ComplexMorphologyView> complexMorphologyProvider,
|
||||||
Provider<LinearOutlineView> linearOutlineProvider,
|
Provider<LinearOutlineView> linearOutlineProvider,
|
||||||
Provider<NonLinearOutlineView> nonLinearOutlineProvider,
|
Provider<NonLinearOutlineView> nonLinearOutlineProvider,
|
||||||
Provider<ThresholdingView> thresholdingProvider
|
Provider<ThresholdingView> thresholdingProvider,
|
||||||
|
Provider<UseCaseView> useCaseProvider
|
||||||
) {
|
) {
|
||||||
this.doubleMatrixProvider = doubleMatrixProvider;
|
this.doubleMatrixProvider = doubleMatrixProvider;
|
||||||
this.filteringProvider = filteringProvider;
|
this.filteringProvider = filteringProvider;
|
||||||
@@ -52,6 +55,7 @@ public class SwingNavigator implements INavigator {
|
|||||||
this.linearOutlineProvider = linearOutlineProvider;
|
this.linearOutlineProvider = linearOutlineProvider;
|
||||||
this.nonLinearOutlineProvider = nonLinearOutlineProvider;
|
this.nonLinearOutlineProvider = nonLinearOutlineProvider;
|
||||||
this.thresholdingProvider = thresholdingProvider;
|
this.thresholdingProvider = thresholdingProvider;
|
||||||
|
this.useCaseProvider = useCaseProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -108,6 +112,12 @@ public class SwingNavigator implements INavigator {
|
|||||||
runView(view);
|
runView(view);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void showUseCase() {
|
||||||
|
UseCaseView view = useCaseProvider.get();
|
||||||
|
runView(view);
|
||||||
|
}
|
||||||
|
|
||||||
private void runView(AbstractView view) {
|
private void runView(AbstractView view) {
|
||||||
ViewInitializer.Initialize(view);
|
ViewInitializer.Initialize(view);
|
||||||
view.setVisible(true);
|
view.setVisible(true);
|
||||||
|
|||||||
@@ -60,6 +60,8 @@ public class NavPresenter {
|
|||||||
|
|
||||||
public void goToThresholding() { navigator.showThresholding(); }
|
public void goToThresholding() { navigator.showThresholding(); }
|
||||||
|
|
||||||
|
public void goToUseCase() { navigator.showUseCase(); }
|
||||||
|
|
||||||
public GrayScaleMatrix getImageGrayMatrix() { return appState.getImage().toGrayScale(); }
|
public GrayScaleMatrix getImageGrayMatrix() { return appState.getImage().toGrayScale(); }
|
||||||
|
|
||||||
public void setMode(Mode mode) { modeService.setMode(mode); }
|
public void setMode(Mode mode) { modeService.setMode(mode); }
|
||||||
|
|||||||
98
src/main/java/presenters/UseCasePresenter.java
Normal file
98
src/main/java/presenters/UseCasePresenter.java
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
package presenters;
|
||||||
|
|
||||||
|
import com.google.inject.Inject;
|
||||||
|
import domain.image.Image;
|
||||||
|
import infrastructure.image.io.ImageLoader;
|
||||||
|
import services.UseCaseService;
|
||||||
|
import ui.abstractions.IUseCaseView;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.URISyntaxException;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
public class UseCasePresenter {
|
||||||
|
|
||||||
|
private static final String NOISE_1_IMAGE = "/imageBruitee1.png";
|
||||||
|
private static final String NOISE_2_IMAGE = "/imageBruitee2.png";
|
||||||
|
private static final String HISTOGRAM_IMAGE = "/lenaAEgaliser.jpg";
|
||||||
|
private static final String PEAS_IMAGE = "/petitsPois.png";
|
||||||
|
private static final String BARNACLES_IMAGE = "/balanes.png";
|
||||||
|
private static final String TOOLS_IMAGE = "/tools.png";
|
||||||
|
private static final String SPACECRAFT_IMAGE = "/vaisseaux.jpg";
|
||||||
|
private static final String PLANET_IMAGE = "/planete.jpg";
|
||||||
|
private static final String TOAST_IMAGE = "/Tartines.jpg";
|
||||||
|
|
||||||
|
private final UseCaseService service;
|
||||||
|
private IUseCaseView view;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public UseCasePresenter(UseCaseService service) {
|
||||||
|
this.service = service;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setView(IUseCaseView view) {
|
||||||
|
this.view = view;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void computeNoiseReduction() {
|
||||||
|
Image image1 = loadImage(NOISE_1_IMAGE);
|
||||||
|
Image image2 = loadImage(NOISE_2_IMAGE);
|
||||||
|
Image[] results = {service.reduceNoise(image1), service.reduceNoise(image2)};
|
||||||
|
view.updateNoiseReduction(results[0], results[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void computeHistogramEqualization() {
|
||||||
|
Image image = loadImage(HISTOGRAM_IMAGE);
|
||||||
|
Image[] results = service.equalizeHistogram(image);
|
||||||
|
view.updateHistogramEqualization(results[0], results[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void computePeasSegmentation() {
|
||||||
|
Image image = loadImage(PEAS_IMAGE);
|
||||||
|
Image[] results = service.segmentPeas(image);
|
||||||
|
view.updatePeasSegmentation(results[0], results[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void computeBarnacleSegmentation() {
|
||||||
|
Image image = loadImage(BARNACLES_IMAGE);
|
||||||
|
Image[] results = service.segmentBarnacles(image);
|
||||||
|
view.updateBarnacleSegmentation(results[0], results[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void computeToolsSegmentation() {
|
||||||
|
Image image = loadImage(TOOLS_IMAGE);
|
||||||
|
Image result = service.segmentTools(image);
|
||||||
|
view.updateToolsSegmentation(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void computeSpacecraftExtraction() {
|
||||||
|
Image spacecraft = loadImage(SPACECRAFT_IMAGE);
|
||||||
|
Image planet = loadImage(PLANET_IMAGE);
|
||||||
|
Image[] results = service.extractSpacecraft(spacecraft, planet);
|
||||||
|
view.updateSpacecraftExtraction(results[0], results[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void computeToastOutline() {
|
||||||
|
Image image = loadImage(TOAST_IMAGE);
|
||||||
|
Image result = service.detectToastContours(image);
|
||||||
|
view.updateToastContours(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Image loadImage(String resourcePath) {
|
||||||
|
try {
|
||||||
|
File file = new File(
|
||||||
|
Objects.requireNonNull(
|
||||||
|
getClass().getResource("/ImagesFournies/ImagesEtape5/" + resourcePath)
|
||||||
|
).toURI()
|
||||||
|
);
|
||||||
|
return ImageLoader.loadImage(file);
|
||||||
|
} catch (IOException | URISyntaxException e) {
|
||||||
|
throw new IllegalStateException("Unable to load image: " + resourcePath, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void dispose() {
|
||||||
|
view = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
97
src/main/java/services/UseCaseService.java
Normal file
97
src/main/java/services/UseCaseService.java
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
package services;
|
||||||
|
|
||||||
|
import domain.image.GrayScaleMatrix;
|
||||||
|
import domain.image.Image;
|
||||||
|
import domain.image.processing.filtering.GlobalLinearFiltering;
|
||||||
|
import domain.image.processing.morphology.ComplexMorphology;
|
||||||
|
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
public class UseCaseService {
|
||||||
|
|
||||||
|
public Image reduceNoise(Image i0) {
|
||||||
|
GrayScaleMatrix m0 = i0.toGrayScale();
|
||||||
|
GrayScaleMatrix m1 = GlobalLinearFiltering.butterworthLowPassFiltering(m0, 10, 1);
|
||||||
|
Image i1 = m1.toImage();
|
||||||
|
return ComplexMorphology.medianFilter(i1, 9).toImage();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Image[] equalizeHistogram(Image image) {
|
||||||
|
Image rgbEqualized = equalizeRgb(image);
|
||||||
|
Image luminanceEqualized = equalizeLuminance(image);
|
||||||
|
return new Image[]{rgbEqualized, luminanceEqualized};
|
||||||
|
}
|
||||||
|
|
||||||
|
public Image[] segmentPeas(Image image) {
|
||||||
|
Image bluePeas = extractBluePeas(image);
|
||||||
|
Image redPeas = extractRedPeas(image);
|
||||||
|
return new Image[]{bluePeas, redPeas};
|
||||||
|
}
|
||||||
|
|
||||||
|
public Image[] segmentBarnacles(Image image) {
|
||||||
|
Image largeBarnacles = extractLargeBarnacles(image);
|
||||||
|
Image smallBarnacles = extractSmallBarnacles(image);
|
||||||
|
return new Image[]{largeBarnacles, smallBarnacles};
|
||||||
|
}
|
||||||
|
|
||||||
|
public Image segmentTools(Image image) {
|
||||||
|
return extractTools(image);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Image[] extractSpacecraft(Image spacecraftImage, Image planetImage) {
|
||||||
|
Image synthesis = createSynthesis(spacecraftImage, planetImage);
|
||||||
|
Image synthesis2 = addSpacecraftContour(synthesis);
|
||||||
|
return new Image[]{synthesis, synthesis2};
|
||||||
|
}
|
||||||
|
|
||||||
|
public Image detectToastContours(Image image) {
|
||||||
|
return extractToastContours(image);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Image equalizeRgb(Image image) {
|
||||||
|
return image;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Image equalizeLuminance(Image image) {
|
||||||
|
return image;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Image extractBluePeas(Image image) {
|
||||||
|
return image;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Image extractRedPeas(Image image) {
|
||||||
|
return image;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Image extractLargeBarnacles(Image image) {
|
||||||
|
return image;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Image extractSmallBarnacles(Image image) {
|
||||||
|
return image;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Image extractTools(Image image) {
|
||||||
|
return image;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Image createSynthesis(Image spacecraftImage, Image planetImage) {
|
||||||
|
return planetImage;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Image addSpacecraftContour(Image synthesis) {
|
||||||
|
return synthesis;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Image extractToastContours(Image image) {
|
||||||
|
return image;
|
||||||
|
}
|
||||||
|
|
||||||
|
public <T> long measureTime(Supplier<T> operation) {
|
||||||
|
long start = System.nanoTime();
|
||||||
|
operation.get();
|
||||||
|
return (System.nanoTime() - start) / 1_000_000;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
20
src/main/java/ui/abstractions/IUseCaseView.java
Normal file
20
src/main/java/ui/abstractions/IUseCaseView.java
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
package ui.abstractions;
|
||||||
|
|
||||||
|
import domain.image.Image;
|
||||||
|
|
||||||
|
public interface IUseCaseView {
|
||||||
|
|
||||||
|
void updateNoiseReduction(Image image1, Image image2);
|
||||||
|
|
||||||
|
void updateHistogramEqualization(Image rgbEqualized, Image luminanceEqualized);
|
||||||
|
|
||||||
|
void updatePeasSegmentation(Image bluePeas, Image redPeas);
|
||||||
|
|
||||||
|
void updateBarnacleSegmentation(Image largeBarnacles, Image smallBarnacles);
|
||||||
|
|
||||||
|
void updateToolsSegmentation(Image tools);
|
||||||
|
|
||||||
|
void updateSpacecraftExtraction(Image synthesis, Image synthesis2);
|
||||||
|
|
||||||
|
void updateToastContours(Image result);
|
||||||
|
}
|
||||||
@@ -37,6 +37,7 @@ public class NavBar extends JMenuBar implements INavBar {
|
|||||||
private Menu outlineMenu;
|
private Menu outlineMenu;
|
||||||
private Menu thresholdingMenu;
|
private Menu thresholdingMenu;
|
||||||
private JMenu histogramMenu;
|
private JMenu histogramMenu;
|
||||||
|
private JMenu useCaseMenu;
|
||||||
|
|
||||||
private NavPresenter presenter;
|
private NavPresenter presenter;
|
||||||
|
|
||||||
@@ -112,6 +113,10 @@ public class NavBar extends JMenuBar implements INavBar {
|
|||||||
new MenuItem("Afficher", "/report_32_hot.jpg",this::displayHistogram)
|
new MenuItem("Afficher", "/report_32_hot.jpg",this::displayHistogram)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
useCaseMenu = new Menu("Applications","/report_48_hot.jpg",
|
||||||
|
new MenuItem("Afficher", "/report_32_hot.jpg",this::displayUseCase)
|
||||||
|
);
|
||||||
|
|
||||||
this.add(imageMenu);
|
this.add(imageMenu);
|
||||||
this.add(drawingMenu);
|
this.add(drawingMenu);
|
||||||
this.add(fourierMenu);
|
this.add(fourierMenu);
|
||||||
@@ -120,6 +125,7 @@ public class NavBar extends JMenuBar implements INavBar {
|
|||||||
this.add(outlineMenu);
|
this.add(outlineMenu);
|
||||||
this.add(thresholdingMenu);
|
this.add(thresholdingMenu);
|
||||||
this.add(histogramMenu);
|
this.add(histogramMenu);
|
||||||
|
this.add(useCaseMenu);
|
||||||
|
|
||||||
drawingMenu.setEnabled(false);
|
drawingMenu.setEnabled(false);
|
||||||
fourierMenu.setEnabled(false);
|
fourierMenu.setEnabled(false);
|
||||||
@@ -128,6 +134,7 @@ public class NavBar extends JMenuBar implements INavBar {
|
|||||||
outlineMenu.setEnabled(false);
|
outlineMenu.setEnabled(false);
|
||||||
thresholdingMenu.setEnabled(false);
|
thresholdingMenu.setEnabled(false);
|
||||||
histogramMenu.setEnabled(false);
|
histogramMenu.setEnabled(false);
|
||||||
|
useCaseMenu.setEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -274,6 +281,8 @@ public class NavBar extends JMenuBar implements INavBar {
|
|||||||
|
|
||||||
private void displayThresholding(ActionEvent actionEvent) { presenter.goToThresholding(); }
|
private void displayThresholding(ActionEvent actionEvent) { presenter.goToThresholding(); }
|
||||||
|
|
||||||
|
private void displayUseCase(ActionEvent actionEvent) { presenter.goToUseCase(); }
|
||||||
|
|
||||||
private void displayErrorMessage(String title, String message) {
|
private void displayErrorMessage(String title, String message) {
|
||||||
JOptionPane.showMessageDialog(
|
JOptionPane.showMessageDialog(
|
||||||
this,
|
this,
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ public class MainView extends JFrame implements IMainView
|
|||||||
.addContainerGap())
|
.addContainerGap())
|
||||||
);
|
);
|
||||||
|
|
||||||
setSize(new Dimension(850, 550));
|
setSize(new Dimension(1100, 800));
|
||||||
setLocationRelativeTo(null);
|
setLocationRelativeTo(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
166
src/main/java/ui/implementation/views/useCase/UseCaseView.java
Normal file
166
src/main/java/ui/implementation/views/useCase/UseCaseView.java
Normal file
@@ -0,0 +1,166 @@
|
|||||||
|
package ui.implementation.views.useCase;
|
||||||
|
|
||||||
|
import com.google.inject.Inject;
|
||||||
|
import domain.image.Image;
|
||||||
|
import presenters.UseCasePresenter;
|
||||||
|
import ui.abstractions.AbstractView;
|
||||||
|
import ui.abstractions.IUseCaseView;
|
||||||
|
import ui.implementation.components.image.TabbedImagePanel;
|
||||||
|
import ui.implementation.components.image.TabbedPanelFactory;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public class UseCaseView extends AbstractView implements IUseCaseView {
|
||||||
|
|
||||||
|
private static final String NOISE_1_TAB_TITLE = "Bruit 1";
|
||||||
|
private static final String NOISE_2_TAB_TITLE = "Bruit 2";
|
||||||
|
|
||||||
|
private static final String HISTOGRAM_RGB_TAB_TITLE = "Égalisation RGB";
|
||||||
|
private static final String HISTOGRAM_LUMINANCE_TAB_TITLE = "Égalisation luminance";
|
||||||
|
|
||||||
|
private static final String PEAS_BLUE_TAB_TITLE = "Pois bleus";
|
||||||
|
private static final String PEAS_RED_TAB_TITLE = "Pois rouges";
|
||||||
|
|
||||||
|
private static final String BARNACLE_LARGE_TAB_TITLE = "Balanes grandes";
|
||||||
|
private static final String BARNACLE_SMALL_TAB_TITLE = "Balanes petites";
|
||||||
|
|
||||||
|
private static final String TOOLS_TAB_TITLE = "Outils";
|
||||||
|
|
||||||
|
private static final String SPACECRAFT_TAB_TITLE = "Synthèse";
|
||||||
|
private static final String SPACECRAFT_CONTOUR_TAB_TITLE = "Synthèse contour";
|
||||||
|
|
||||||
|
private static final String TOAST_TAB_TITLE = "Tartines";
|
||||||
|
|
||||||
|
private final UseCasePresenter presenter;
|
||||||
|
private final TabbedPanelFactory tabbedPanelFactory;
|
||||||
|
|
||||||
|
private TabbedImagePanel resultPanel;
|
||||||
|
|
||||||
|
private JButton noiseButton;
|
||||||
|
private JButton histogramButton;
|
||||||
|
private JButton peasButton;
|
||||||
|
private JButton barnacleButton;
|
||||||
|
private JButton toolsButton;
|
||||||
|
private JButton spacecraftButton;
|
||||||
|
private JButton toastButton;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public UseCaseView(UseCasePresenter presenter, TabbedPanelFactory tabbedPanelFactory) {
|
||||||
|
this.presenter = presenter;
|
||||||
|
this.tabbedPanelFactory = tabbedPanelFactory;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initComponents() {
|
||||||
|
resultPanel = tabbedPanelFactory.createTabbedImagePanel(
|
||||||
|
NOISE_1_TAB_TITLE,
|
||||||
|
NOISE_2_TAB_TITLE,
|
||||||
|
HISTOGRAM_RGB_TAB_TITLE,
|
||||||
|
HISTOGRAM_LUMINANCE_TAB_TITLE,
|
||||||
|
PEAS_BLUE_TAB_TITLE,
|
||||||
|
PEAS_RED_TAB_TITLE,
|
||||||
|
BARNACLE_LARGE_TAB_TITLE,
|
||||||
|
BARNACLE_SMALL_TAB_TITLE,
|
||||||
|
TOOLS_TAB_TITLE,
|
||||||
|
SPACECRAFT_TAB_TITLE,
|
||||||
|
SPACECRAFT_CONTOUR_TAB_TITLE,
|
||||||
|
TOAST_TAB_TITLE
|
||||||
|
);
|
||||||
|
|
||||||
|
noiseButton = new JButton("Bruit");
|
||||||
|
histogramButton = new JButton("Histogramme");
|
||||||
|
peasButton = new JButton("Petits pois");
|
||||||
|
barnacleButton = new JButton("Balanes");
|
||||||
|
toolsButton = new JButton("Outils");
|
||||||
|
spacecraftButton = new JButton("Vaisseau");
|
||||||
|
toastButton = new JButton("Tartines");
|
||||||
|
|
||||||
|
noiseButton.addActionListener(e -> presenter.computeNoiseReduction());
|
||||||
|
histogramButton.addActionListener(e -> presenter.computeHistogramEqualization());
|
||||||
|
peasButton.addActionListener(e -> presenter.computePeasSegmentation());
|
||||||
|
barnacleButton.addActionListener(e -> presenter.computeBarnacleSegmentation());
|
||||||
|
toolsButton.addActionListener(e -> presenter.computeToolsSegmentation());
|
||||||
|
spacecraftButton.addActionListener(e -> presenter.computeSpacecraftExtraction());
|
||||||
|
toastButton.addActionListener(e -> presenter.computeToastOutline());
|
||||||
|
|
||||||
|
JPanel controlPanel = createControlPanel();
|
||||||
|
|
||||||
|
JPanel mainPanel = new JPanel(new BorderLayout(10, 10));
|
||||||
|
mainPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
|
||||||
|
|
||||||
|
mainPanel.add(resultPanel, BorderLayout.CENTER);
|
||||||
|
mainPanel.add(controlPanel, BorderLayout.SOUTH);
|
||||||
|
|
||||||
|
setContentPane(mainPanel);
|
||||||
|
|
||||||
|
setTitle("Applications");
|
||||||
|
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
|
||||||
|
setSize(1200, 800);
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel createControlPanel() {
|
||||||
|
JPanel panel = new JPanel(new GridLayout(1, 7, 5, 5));
|
||||||
|
|
||||||
|
panel.add(noiseButton);
|
||||||
|
panel.add(histogramButton);
|
||||||
|
panel.add(peasButton);
|
||||||
|
panel.add(barnacleButton);
|
||||||
|
panel.add(toolsButton);
|
||||||
|
panel.add(spacecraftButton);
|
||||||
|
panel.add(toastButton);
|
||||||
|
|
||||||
|
return panel;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initValues() {
|
||||||
|
presenter.setView(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateNoiseReduction(Image image1, Image image2) {
|
||||||
|
resultPanel.loadImage(NOISE_1_TAB_TITLE, image1);
|
||||||
|
resultPanel.loadImage(NOISE_2_TAB_TITLE, image2);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateHistogramEqualization(Image rgbEqualized, Image luminanceEqualized) {
|
||||||
|
resultPanel.loadImage(HISTOGRAM_RGB_TAB_TITLE, rgbEqualized);
|
||||||
|
resultPanel.loadImage(HISTOGRAM_LUMINANCE_TAB_TITLE, luminanceEqualized);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updatePeasSegmentation(Image bluePeas, Image redPeas) {
|
||||||
|
resultPanel.loadImage(PEAS_BLUE_TAB_TITLE, bluePeas);
|
||||||
|
resultPanel.loadImage(PEAS_RED_TAB_TITLE, redPeas);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateBarnacleSegmentation(Image largeBarnacles, Image smallBarnacles) {
|
||||||
|
resultPanel.loadImage(BARNACLE_LARGE_TAB_TITLE, largeBarnacles);
|
||||||
|
resultPanel.loadImage(BARNACLE_SMALL_TAB_TITLE, smallBarnacles);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateToolsSegmentation(Image tools) {
|
||||||
|
resultPanel.loadImage(TOOLS_TAB_TITLE, tools);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateSpacecraftExtraction(Image synthesis, Image synthesis2) {
|
||||||
|
resultPanel.loadImage(SPACECRAFT_TAB_TITLE, synthesis);
|
||||||
|
resultPanel.loadImage(SPACECRAFT_CONTOUR_TAB_TITLE, synthesis2);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateToastContours(Image result) {
|
||||||
|
resultPanel.loadImage(TOAST_TAB_TITLE, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void disposeCore() {
|
||||||
|
presenter.setView(null);
|
||||||
|
presenter.dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user