|
@@ -31,6 +31,9 @@ class KMHFTemplateController: NSViewController {
|
|
|
|
|
|
weak open var delegate: KMHFTemplateControllerDelegate?
|
|
|
|
|
|
+ var groupView: ComponentGroup?
|
|
|
+ var editCell: KMHeaderTemplateItem?
|
|
|
+
|
|
|
var selectedModel: KMHeaderFooterModel?
|
|
|
|
|
|
override func viewDidLoad() {
|
|
@@ -125,6 +128,78 @@ class KMHFTemplateController: NSViewController {
|
|
|
delegate?.templateControllerDidAddData?(self)
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ override func rightMouseUp(with event: NSEvent) {
|
|
|
+ super.rightMouseUp(with: event)
|
|
|
+
|
|
|
+ var items: [String] = []
|
|
|
+ var point = self.view.convert(event.locationInWindow, from: nil)
|
|
|
+ let collectionPoint = self.view.convert(point, to: collectionView)
|
|
|
+
|
|
|
+ self.editCell = nil
|
|
|
+
|
|
|
+ if let indexPath = self.collectionView.indexPathForItem(at: collectionPoint) {
|
|
|
+ let cellView = collectionView.item(at: indexPath) as? KMHeaderTemplateItem
|
|
|
+ self.editCell = cellView
|
|
|
+ items.append(KMLocalizedString("Rename"))
|
|
|
+ items.append(KMLocalizedString("Edit"))
|
|
|
+ items.append(KMLocalizedString("Delete"))
|
|
|
+ items.append(KMLocalizedString("Remove All"))
|
|
|
+
|
|
|
+ self.showGroupView(items, event.locationInWindow)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ func showRenameWindow() {
|
|
|
+ let saveWindow: KMWatermarkSaveWindow = KMWatermarkSaveWindow(windowNibName: "KMWatermarkSaveWindow")
|
|
|
+ if let item = self.editCell, let name = item.dataModel?.name {
|
|
|
+ saveWindow.nameValue = name
|
|
|
+ } else {
|
|
|
+ saveWindow.nameValue = ""
|
|
|
+ }
|
|
|
+ saveWindow.saveHandler = {[weak self] string in
|
|
|
+ guard let weakSelf = self else { return }
|
|
|
+ DispatchQueue.main.async {
|
|
|
+ weakSelf.editCell?.dataModel?.name = string ?? ""
|
|
|
+ if let model = weakSelf.editCell?.dataModel, KMHeaderFooterManager.defaultManager.updateHeaderFooter(theModel: model) {
|
|
|
+ weakSelf.reloadData()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ saveWindow.own_beginSheetModal(for: view.window) { string in
|
|
|
+
|
|
|
+ }
|
|
|
+ saveWindow.titleLabel.stringValue = KMLocalizedString("Rename")
|
|
|
+ }
|
|
|
+
|
|
|
+ func showGroupView(_ items: [String], _ point: CGPoint) {
|
|
|
+ var viewHeight: CGFloat = 8
|
|
|
+ var menuItemArr: [ComponentMenuitemProperty] = []
|
|
|
+ for i in items {
|
|
|
+ let properties_Menuitem: ComponentMenuitemProperty = ComponentMenuitemProperty(multipleSelect: false,
|
|
|
+ itemSelected: false,
|
|
|
+ isDisabled: false,
|
|
|
+ keyEquivalent: nil,
|
|
|
+ text: KMLocalizedString(i),
|
|
|
+ identifier: i)
|
|
|
+ menuItemArr.append(properties_Menuitem)
|
|
|
+ viewHeight += 36
|
|
|
+ }
|
|
|
+
|
|
|
+ if groupView == nil {
|
|
|
+ groupView = ComponentGroup.createFromNib(in: ComponentLibrary.shared.componentBundle())
|
|
|
+ }
|
|
|
+ groupView?.groupDelegate = self
|
|
|
+ var viewPoint = point
|
|
|
+ viewPoint.y -= viewHeight
|
|
|
+
|
|
|
+ groupView?.frame = CGRectMake(310, 0, 200, viewHeight)
|
|
|
+ groupView?.updateGroupInfo(menuItemArr)
|
|
|
+ groupView?.showWithPoint(viewPoint, relativeTo: nil)
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
//MARK: - NSCollectionViewDelegate, NSCollectionViewDataSource
|
|
@@ -214,7 +289,7 @@ extension KMHFTemplateController: KMHeaderTemplateItemDelegate {
|
|
|
if let data = view.dataModel {
|
|
|
let alert = NSAlert()
|
|
|
alert.alertStyle = .critical
|
|
|
- alert.messageText = String(format: KMLocalizedString("Are you sure you want to remove the background?"))
|
|
|
+ alert.messageText = String(format: KMLocalizedString("Are you sure you want to remove the Header&Footer?"))
|
|
|
alert.addButton(withTitle: KMLocalizedString("Delete"))
|
|
|
alert.addButton(withTitle: KMLocalizedString("Cancel"))
|
|
|
|
|
@@ -231,4 +306,45 @@ extension KMHFTemplateController: KMHeaderTemplateItemDelegate {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ func kmHeaderTemplateItemDidDeleteAll() {
|
|
|
+ let alert = NSAlert()
|
|
|
+ alert.alertStyle = .critical
|
|
|
+ alert.messageText = String(format: KMLocalizedString("Are you sure you want to remove all the Header&Footer?"))
|
|
|
+ alert.addButton(withTitle: KMLocalizedString("Delete"))
|
|
|
+ alert.addButton(withTitle: KMLocalizedString("Cancel"))
|
|
|
+
|
|
|
+ alert.beginSheetModal(for: NSApp.mainWindow!) { (response) in
|
|
|
+ if response == .alertFirstButtonReturn {
|
|
|
+ let _ = KMHeaderFooterManager.defaultManager.removeAllHeaderFooters()
|
|
|
+ if let _ = self.selectedModel {
|
|
|
+ self.selectedModel = nil
|
|
|
+
|
|
|
+ self.delegate?.templateControllerDidSelectedChanged?(self)
|
|
|
+ }
|
|
|
+ self.reloadData()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+//MARK: - ComponentGroupDelegate
|
|
|
+extension KMHFTemplateController: ComponentGroupDelegate {
|
|
|
+ func componentGroupDidSelect(group: ComponentGroup?, menuItemProperty: ComponentMenuitemProperty?) {
|
|
|
+ if menuItemProperty?.identifier == KMLocalizedString("Rename") {
|
|
|
+ self.showRenameWindow()
|
|
|
+ } else if menuItemProperty?.identifier == KMLocalizedString("Edit") {
|
|
|
+ if let cell = self.editCell {
|
|
|
+ self.kmHeaderTemplateItemDidEdit(cell)
|
|
|
+ }
|
|
|
+ } else if menuItemProperty?.identifier == KMLocalizedString("Delete") {
|
|
|
+ if let cell = self.editCell {
|
|
|
+ self.kmHeaderTemplateItemDidDelete(cell)
|
|
|
+ }
|
|
|
+ } else if menuItemProperty?.identifier == KMLocalizedString("Remove All") {
|
|
|
+ self.kmHeaderTemplateItemDidDeleteAll()
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|