import Cocoa
-private extension Selector {
-
- static let showHideHistory = #selector(WindowManager.showHideHistory(_:))
- static let showHideSlotItemWindow = #selector(WindowManager.showHideSlotItemWindow(_:))
- static let showHideUpgradableShipWindow = #selector(WindowManager.showHideUpgradableShipWindow(_:))
- static let showHideScreenshotListWindow = #selector(WindowManager.showHideScreenshotListWindow(_:))
- static let showHideAirBaseInfoWindow = #selector(WindowManager.showHideAirBaseInfoWindow(_:))
- static let showHidePreferencePanle = #selector(WindowManager.showHidePreferencePanle(_:))
- static let openNewBrowser = #selector(WindowManager.openNewBrowser(_:))
- static let selectBookmark = #selector(WindowManager.selectBookmark(_:))
- static let showWindowAduster = #selector(WindowManager.showWindowAduster(_:))
-
- static let showShipWindow = #selector(WindowManager.showShipWindow(_:))
- static let showEquipmentWindow = #selector(WindowManager.showEquipmentWindow(_:))
- static let showMapWindow = #selector(WindowManager.showMapWindow(_:))
- static let showOwnershipShipWindow = #selector(WindowManager.showOwnershipShipWindow(_:))
-
- static let saveDocument = #selector(WindowManager.saveDocument(_:))
- static let openDocument = #selector(WindowManager.openDocument(_:))
-}
-
final class WindowManager {
private let browserWindowController = BroserWindowController()
let vc = JSONViewWindowController()
vc.showWindow(nil)
+
return vc
}()
#else
let vc = UITestWindowController()
vc.showWindow(nil)
+
return vc
}()
#else
private lazy var shipMDWindowController: ShipMasterDetailWindowController = {
ShipMasterDetailWindowController()
- } ()
+ }()
private lazy var equipmentWindowController: EquipmentWindowController = {
}()
private var browserWindowControllers: [ExternalBrowserWindowController] = []
- private var updaters: [() -> Void] = []
private var logedJSONViewWindowController: JSONViewWindowController?
var canSaveLog: Bool {
var isMainWindowMostFront: Bool {
- guard let window = browserWindowController.window else { return false }
+ guard let window = browserWindowController.window else {
+
+ return false
+ }
return isFrontMostWindow(window)
}
func prepair() {
- _ = BookmarkManager.shared()
+ _ = BookmarkManager.shared
_ = screenshotListWindowController
browserWindowController.showWindow(nil)
browserWindowControllers.append(browser)
browser.window?.makeKeyAndOrderFront(nil)
- var token: NSObjectProtocol! = nil
-
- token = NotificationCenter.default
- .addObserver(forName: NSWindow.willCloseNotification,
- object: browser.window,
- queue: nil) { [unowned self] notification in
-
- NotificationCenter.default.removeObserver(token)
- if let obj = notification.object as? NSWindow,
- let index = self.browserWindowControllers.index(where: { $0.window == obj }) {
-
- self.browserWindowControllers.remove(at: index)
- }
+ NotificationCenter.default
+ .addObserverOnce(forName: NSWindow.willCloseNotification, object: browser.window, queue: nil) { [unowned self] notification in
+
+ if let obj = notification.object as? NSWindow,
+ let index = self.browserWindowControllers.index(where: { $0.window == obj }) {
+
+ self.browserWindowControllers.remove(at: index)
+ }
}
return browser
}
-
- func registerScreenshot(_ image: NSBitmapImageRep, fromOnScreen: NSRect) {
-
- screenshotListWindowController.registerScreenshot(image, fromOnScreen: fromOnScreen)
- }
}
// MARK: - IBActions
private func makeFrontOrOrderOut(_ window: NSWindow?) {
- guard let window = window else { return }
+ guard let window = window else {
+
+ return
+ }
isFrontMostWindow(window) ? window.orderOut(nil) : window.makeKeyAndOrderFront(nil)
}
panel.begin {
- guard $0 == .OK,
- let url = panel.url,
- let array = self.jsonViewWindowController?.commands
- else { return }
+ guard $0 == .OK else {
+
+ return
+ }
+ guard let url = panel.url else {
+
+ return
+ }
+ guard let array = self.jsonViewWindowController?.commands else {
+
+ return
+ }
let data = NSKeyedArchiver.archivedData(withRootObject: array)
try data.write(to: url)
} catch {
- print("Can not write to \(url)")
+
+ Logger.shared.log("Can not write to \(url)")
}
}
}
panel.begin {
- guard $0 == .OK,
- let url = panel.url
- else { return }
+ guard $0 == .OK else {
+
+ return
+ }
+ guard let url = panel.url else {
+
+ return
+ }
do {
let data = try Data(contentsOf: url)
let array = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data)
- guard let commands = array as? [[String: Any]]
- else { return }
+ guard let commands = array as? [[String: Any]] else {
+
+ return
+ }
self.logedJSONViewWindowController = JSONViewWindowController()
self.logedJSONViewWindowController?.commands = commands
} catch {
- print("Can not load \(url)")
+ Logger.shared.log("Can not load \(url)")
}
}
}
- private func setTitle(_ menuItem: NSMenuItem, _ window: NSWindow?, _ showLabel: String, _ hideLabel: String) {
+ private func setTitle(to menuItem: NSMenuItem, frontWindow window: NSWindow?, show showLabel: String, hide hideLabel: String) {
- guard let window = window else { return }
+ guard let window = window else {
+
+ return
+ }
if isFrontMostWindow(window) {
func validateMenuItem(_ menuItem: NSMenuItem) -> Bool {
- guard let action = menuItem.action else { return false }
+ guard let action = menuItem.action else {
+
+ return false
+ }
switch action {
- case Selector.showHideHistory:
- setTitle(menuItem,
- historyWindowController.window,
- NSLocalizedString("Show History", comment: "Show History"),
- NSLocalizedString("Hide History", comment: "Hide History"))
+
+ case #selector(WindowManager.showHideHistory(_:)):
+
+ setTitle(to: menuItem,
+ frontWindow: historyWindowController.window,
+ show: LocalizedStrings.showHistory.string,
+ hide: LocalizedStrings.hideHistory.string)
+
return true
- case Selector.showHideSlotItemWindow:
- setTitle(menuItem,
- slotItemWindowController.window,
- NSLocalizedString("Show Slot Item", comment: "Show Slot Item"),
- NSLocalizedString("Hide Slot Item", comment: "Hide Slot Item"))
+ case #selector(WindowManager.showHideSlotItemWindow(_:)):
+
+ setTitle(to: menuItem,
+ frontWindow: slotItemWindowController.window,
+ show: LocalizedStrings.showSlotItem.string,
+ hide: LocalizedStrings.hideSlotItem.string)
+
return true
- case Selector.showHideUpgradableShipWindow:
- setTitle(menuItem,
- upgradableShipWindowController.window,
- NSLocalizedString("Show Upgradable Ships", comment: "Show Upgradable Ships"),
- NSLocalizedString("Hide Upgradable Ships", comment: "Hide Upgradable Ships"))
+ case #selector(WindowManager.showHideUpgradableShipWindow(_:)):
+
+ setTitle(to: menuItem,
+ frontWindow: upgradableShipWindowController.window,
+ show: LocalizedStrings.showUpgradableShips.string,
+ hide: LocalizedStrings.hideUpgradableShips.string)
+
return true
- case Selector.showHideScreenshotListWindow:
- setTitle(menuItem,
- screenshotListWindowController.window,
- NSLocalizedString("Show Screenshot List", comment: "Show Screenshot List"),
- NSLocalizedString("Hide Screenshot List", comment: "Hide Screenshot List"))
+ case #selector(WindowManager.showHideScreenshotListWindow(_:)):
+
+ setTitle(to: menuItem,
+ frontWindow: screenshotListWindowController.window,
+ show: LocalizedStrings.showScreenshotList.string,
+ hide: LocalizedStrings.hideScreenshotList.string)
+
return true
- case Selector.showHideAirBaseInfoWindow:
- setTitle(menuItem,
- airBaseWindowController.window,
- NSLocalizedString("Show Air Base Info", comment: "Show Air Base Info"),
- NSLocalizedString("Hide Air Base Info", comment: "Hide Air Base Info"))
+ case #selector(WindowManager.showHideAirBaseInfoWindow(_:)):
+
+ setTitle(to: menuItem,
+ frontWindow: airBaseWindowController.window,
+ show: LocalizedStrings.showAirbaseInfo.string,
+ hide: LocalizedStrings.hideAirbaseInfo.string)
+
return true
- case Selector.showHidePreferencePanle:
+ case #selector(WindowManager.showHidePreferencePanle(_:)):
+
return true
- case Selector.openNewBrowser:
+ case #selector(WindowManager.openNewBrowser(_:)):
+
return true
- case Selector.selectBookmark:
+ case #selector(WindowManager.selectBookmark(_:)):
+
return true
- case Selector.showWindowAduster:
+ case #selector(WindowManager.showWindowAduster(_:)):
+
return true
- case Selector.showShipWindow, Selector.showEquipmentWindow,
- Selector.showMapWindow, Selector.showOwnershipShipWindow:
+ case #selector(WindowManager.showShipWindow(_:)),
+ #selector(WindowManager.showEquipmentWindow(_:)),
+ #selector(WindowManager.showMapWindow(_:)),
+ #selector(WindowManager.showOwnershipShipWindow(_:)):
+
return true
- case Selector.saveDocument, Selector.openDocument:
+ case #selector(WindowManager.saveDocument(_:)),
+ #selector(WindowManager.openDocument(_:)):
+
return canSaveLog
default:
+
return false
}
}