diff --git a/src/main/java/kieker/gui/mainview/Controller.java b/src/main/java/kieker/gui/mainview/Controller.java index 0b0a927983a1985a96e6c1917cfa392b3d4a0a06..0026df57effe5b28a298f771e0ba60b8509f712a 100644 --- a/src/main/java/kieker/gui/mainview/Controller.java +++ b/src/main/java/kieker/gui/mainview/Controller.java @@ -16,9 +16,11 @@ package kieker.gui.mainview; +import java.util.HashMap; +import java.util.Map; + import kieker.gui.common.model.DataModel; import kieker.gui.common.model.PropertiesModel; -import kieker.gui.mainview.Model.SubView; import kieker.gui.subview.ISubController; import kieker.gui.subview.ISubView; @@ -53,17 +55,18 @@ public final class Controller implements SelectionListener { final ISubController subViewController7 = new kieker.gui.subview.aggregatedtraces.FailureController(this.dataModel, this.propertiesModel); // Get the sub-views from the controllers - final ISubView subView1 = subViewController1.getView(); - final ISubView subView2 = subViewController2.getView(); - final ISubView subView3 = subViewController3.getView(); - final ISubView subView4 = subViewController4.getView(); - final ISubView subView5 = subViewController5.getView(); - final ISubView subView6 = subViewController6.getView(); - final ISubView subView7 = subViewController7.getView(); + final Map<String, ISubView> subViews = new HashMap<>(); + subViews.put(SubView.RECORDS_SUB_VIEW.name(), subViewController1.getView()); + subViews.put(SubView.AGGREGATED_TRACES_SUB_VIEW.name(), subViewController2.getView()); + subViews.put(SubView.FAILED_TRACES_SUB_VIEW.name(), subViewController3.getView()); + subViews.put(SubView.TRACES_SUB_VIEW.name(), subViewController4.getView()); + subViews.put(SubView.FAILURE_CONTAINING_TRACES_SUB_VIEW.name(), subViewController5.getView()); + subViews.put(SubView.FAILED_AGGREGATED_TRACES_SUB_VIEW.name(), subViewController6.getView()); + subViews.put(SubView.FAILURE_CONTAINING_AGGREGATED_TRACES_SUB_VIEW.name(), subViewController7.getView()); // Create the main model and the main view this.mainViewModel = new Model(); - this.mainView = new View(this.dataModel, this.mainViewModel, this, subView1, subView2, subView3, subView4, subView5, subView6, subView7); + this.mainView = new View(this.dataModel, this.mainViewModel, this, subViews); } public void showView() { @@ -108,28 +111,28 @@ public final class Controller implements SelectionListener { private void handlePotentialTreeSelection(final SelectionEvent e) { if (e.item == this.mainView.getTrtmExplorer()) { - this.mainViewModel.setCurrentActiveSubView(SubView.NONE); + this.mainViewModel.setCurrentActiveSubView(SubView.NONE.name()); } if (e.item == this.mainView.getTrtmRecords()) { - this.mainViewModel.setCurrentActiveSubView(SubView.RECORDS_SUB_VIEW); + this.mainViewModel.setCurrentActiveSubView(SubView.RECORDS_SUB_VIEW.name()); } if (e.item == this.mainView.getTrtmTraces()) { - this.mainViewModel.setCurrentActiveSubView(SubView.TRACES_SUB_VIEW); + this.mainViewModel.setCurrentActiveSubView(SubView.TRACES_SUB_VIEW.name()); } if (e.item == this.mainView.getTrtmAggregatedTraces()) { - this.mainViewModel.setCurrentActiveSubView(SubView.AGGREGATED_TRACES_SUB_VIEW); + this.mainViewModel.setCurrentActiveSubView(SubView.AGGREGATED_TRACES_SUB_VIEW.name()); } if (e.item == this.mainView.getTrtmJustFailedTraces()) { - this.mainViewModel.setCurrentActiveSubView(SubView.FAILED_TRACES_SUB_VIEW); + this.mainViewModel.setCurrentActiveSubView(SubView.FAILED_TRACES_SUB_VIEW.name()); } if (e.item == this.mainView.getTrtmJustTracesContaining()) { - this.mainViewModel.setCurrentActiveSubView(SubView.FAILURE_CONTAINING_TRACES_SUB_VIEW); + this.mainViewModel.setCurrentActiveSubView(SubView.FAILURE_CONTAINING_TRACES_SUB_VIEW.name()); } if (e.item == this.mainView.getTrtmJustFailedAggTraces()) { - this.mainViewModel.setCurrentActiveSubView(SubView.FAILED_AGGREGATED_TRACES_SUB_VIEW); + this.mainViewModel.setCurrentActiveSubView(SubView.FAILED_AGGREGATED_TRACES_SUB_VIEW.name()); } if (e.item == this.mainView.getTrtmJustAggTracesContaining()) { - this.mainViewModel.setCurrentActiveSubView(SubView.FAILURE_CONTAINING_AGGREGATED_TRACES_SUB_VIEW); + this.mainViewModel.setCurrentActiveSubView(SubView.FAILURE_CONTAINING_AGGREGATED_TRACES_SUB_VIEW.name()); } } @@ -138,4 +141,8 @@ public final class Controller implements SelectionListener { // Nothing to do here. This method is just required by the interface. } + public enum SubView { + RECORDS_SUB_VIEW, TRACES_SUB_VIEW, FAILED_TRACES_SUB_VIEW, AGGREGATED_TRACES_SUB_VIEW, NONE, FAILURE_CONTAINING_TRACES_SUB_VIEW, FAILED_AGGREGATED_TRACES_SUB_VIEW, FAILURE_CONTAINING_AGGREGATED_TRACES_SUB_VIEW + } + } diff --git a/src/main/java/kieker/gui/mainview/Model.java b/src/main/java/kieker/gui/mainview/Model.java index 9d9751d0ce5b88a626a0ea9198921e2a673ac114..a3d5a3485d599cc111ee5e580aae2d41bf0142a1 100644 --- a/src/main/java/kieker/gui/mainview/Model.java +++ b/src/main/java/kieker/gui/mainview/Model.java @@ -20,21 +20,17 @@ import java.util.Observable; public final class Model extends Observable { - private SubView currentActiveSubView = SubView.NONE; + private String currentActiveSubViewKey = ""; - public SubView getCurrentActiveSubView() { - return this.currentActiveSubView; + public String getCurrentActiveSubViewKey() { + return this.currentActiveSubViewKey; } - public void setCurrentActiveSubView(final SubView currentActiveSubView) { - this.currentActiveSubView = currentActiveSubView; + public void setCurrentActiveSubView(final String currentActiveSubViewKey) { + this.currentActiveSubViewKey = currentActiveSubViewKey; this.setChanged(); this.notifyObservers(); } - public enum SubView { - RECORDS_SUB_VIEW, TRACES_SUB_VIEW, FAILED_TRACES_SUB_VIEW, AGGREGATED_TRACES_SUB_VIEW, NONE, FAILURE_CONTAINING_TRACES_SUB_VIEW, FAILED_AGGREGATED_TRACES_SUB_VIEW, FAILURE_CONTAINING_AGGREGATED_TRACES_SUB_VIEW - } - } diff --git a/src/main/java/kieker/gui/mainview/View.java b/src/main/java/kieker/gui/mainview/View.java index b8aa552a0d8f35a6ddcab10ed683de601c8387dd..13e09a6e489160ee4544dfcfdad33a23562e9538 100644 --- a/src/main/java/kieker/gui/mainview/View.java +++ b/src/main/java/kieker/gui/mainview/View.java @@ -16,6 +16,7 @@ package kieker.gui.mainview; +import java.util.Map; import java.util.Observable; import java.util.Observer; @@ -39,14 +40,8 @@ public class View implements Observer { private final DataModel dataModel; private final Model mainViewModel; - private final ISubView recordsSubView; - private final ISubView tracesSubView; - private final ISubView failedTracesSubView; - private final ISubView aggregatedTracesSubView; - private final ISubView failureContainingTracesSubView; - private final ISubView subView6; - private final ISubView subView7; private final Controller controller; + private final Map<String, ISubView> subViews; private Shell shell; private Composite subViewComposite; @@ -69,18 +64,10 @@ public class View implements Observer { private TreeItem trtmJustFailedAggTraces; private TreeItem trtmJustAggTracesContaining; - public View(final DataModel dataModel, final Model mainViewModel, final Controller controller, final ISubView recordsSubView, final ISubView tracesSubView, - final ISubView failedTracesSubView, final ISubView aggregatedTracesSubView, final ISubView failureContainingTracesSubView, final ISubView subView6, - final ISubView subView7) { + public View(final DataModel dataModel, final Model mainViewModel, final Controller controller, final Map<String, ISubView> subViews) { this.dataModel = dataModel; this.mainViewModel = mainViewModel; - this.recordsSubView = recordsSubView; - this.tracesSubView = tracesSubView; - this.failureContainingTracesSubView = failureContainingTracesSubView; - this.failedTracesSubView = failedTracesSubView; - this.aggregatedTracesSubView = aggregatedTracesSubView; - this.subView6 = subView6; - this.subView7 = subView7; + this.subViews = subViews; this.controller = controller; } @@ -214,13 +201,9 @@ public class View implements Observer { this.subViewComposite.setLayout(this.subViewLayout); sashForm.setWeights(new int[] { 1, 4 }); - this.recordsSubView.createComposite(this.subViewComposite); - this.tracesSubView.createComposite(this.subViewComposite); - this.failedTracesSubView.createComposite(this.subViewComposite); - this.aggregatedTracesSubView.createComposite(this.subViewComposite); - this.failureContainingTracesSubView.createComposite(this.subViewComposite); - this.subView6.createComposite(this.subViewComposite); - this.subView7.createComposite(this.subViewComposite); + for (final ISubView subview : this.subViews.values()) { + subview.createComposite(this.subViewComposite); + } final Menu menu = new Menu(this.shell, SWT.BAR); this.shell.setMenuBar(menu); @@ -288,38 +271,12 @@ public class View implements Observer { } private void handleChangedSubView() { - final Composite subViewToShow; - switch (this.mainViewModel.getCurrentActiveSubView()) { - case NONE: - subViewToShow = null; - break; - case RECORDS_SUB_VIEW: - subViewToShow = this.recordsSubView.getComposite(); - break; - case TRACES_SUB_VIEW: - subViewToShow = this.tracesSubView.getComposite(); - break; - case AGGREGATED_TRACES_SUB_VIEW: - subViewToShow = this.aggregatedTracesSubView.getComposite(); - break; - case FAILED_TRACES_SUB_VIEW: - subViewToShow = this.failedTracesSubView.getComposite(); - break; - case FAILURE_CONTAINING_TRACES_SUB_VIEW: - subViewToShow = this.failureContainingTracesSubView.getComposite(); - break; - case FAILED_AGGREGATED_TRACES_SUB_VIEW: - subViewToShow = this.subView6.getComposite(); - break; - case FAILURE_CONTAINING_AGGREGATED_TRACES_SUB_VIEW: - subViewToShow = this.subView7.getComposite(); - break; - default: - subViewToShow = null; - break; - } + final String subViewKey = this.mainViewModel.getCurrentActiveSubViewKey(); + + final ISubView subViewToShow = this.subViews.get(subViewKey); + final Composite compositeToShow = (subViewToShow != null) ? subViewToShow.getComposite() : null; - this.subViewLayout.topControl = subViewToShow; + this.subViewLayout.topControl = compositeToShow; this.subViewComposite.layout(); } }