public void OpenScreen(IScreenSubject subject) { if (subject.Matches(_screens.Active)) { return; } var screen = findScreenMatchingSubject(subject); if (screen == null) { screen = createNewActiveScreen(subject); } else { activate(screen); } _screens.Show(screen); }
public virtual void OpenScreen(IScreenLocator locator) { // What if that screen is already open and active? if (locator.Matches(_screens.Active)) { return; } // Is the requested screen one of the inactive tabs? IScreen screen = findScreenMatchingSubject(locator); if (screen == null) { screen = createNewActiveScreen(locator); } else { activate(screen); } _screens.Show(screen); }