@kieler/klighd-core
Version:
Core KLighD diagram visualization with Sprotty
233 lines • 9.05 kB
JavaScript
;
/*
* KIELER - Kiel Integrated Environment for Layout Eclipse RichClient
*
* http://rtsys.informatik.uni-kiel.de/kieler
*
* Copyright 2021 by
* + Kiel University
* + Department of Computer Science
* + Real-Time and Embedded Systems Group
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*/
// We follow Sprotty's way of redeclaring the interface and its create function, so disable this lint check for this file.
/* eslint-disable no-redeclare */
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.SetInitialBookmarkAction = exports.GoToBookmarkCommand = exports.GoToBookmarkAction = exports.RenameBookmarkAction = exports.DeleteBookmarkAction = exports.AddBookmarkAction = exports.CreateBookmarkCommand = exports.CreateBookmarkAction = exports.Bookmark = void 0;
const inversify_1 = require("inversify");
const sprotty_1 = require("sprotty");
const sprotty_protocol_1 = require("sprotty-protocol");
/**
* A Bookmark
*/
class Bookmark {
constructor(place, name) {
this.place = place;
this.name = name;
}
static isBookmark(value) {
if ('zoom' in value.place &&
'scroll' in value.place &&
'x' in value.place.scroll &&
'y' in value.place.scroll) {
return true;
}
return false;
}
clone() {
const place = {
zoom: this.place.zoom,
scroll: { x: this.place.scroll.x, y: this.place.scroll.y },
};
return new Bookmark(place, this.name);
}
get saveId() {
return `bookmark-save-${this.bookmarkIndex}`;
}
get editId() {
return `bookmark-edit-${this.bookmarkIndex}`;
}
}
exports.Bookmark = Bookmark;
var CreateBookmarkAction;
(function (CreateBookmarkAction) {
CreateBookmarkAction.KIND = 'create-bookmark';
function create() {
return {
kind: CreateBookmarkAction.KIND,
};
}
CreateBookmarkAction.create = create;
/** Type predicate to narrow an action to this action. */
function isThisAction(action) {
return action.kind === CreateBookmarkAction.KIND;
}
CreateBookmarkAction.isThisAction = isThisAction;
})(CreateBookmarkAction || (exports.CreateBookmarkAction = CreateBookmarkAction = {}));
/**
* The Command corresponding to the CreateBookmarkAction,
* this is what actually causes the Bookmark to be added to the {@link BookmarkRegistry}
*/
let CreateBookmarkCommand = class CreateBookmarkCommand extends sprotty_1.Command {
constructor(action) {
super();
this.action = action;
}
execute(context) {
const model = context.root;
if ((0, sprotty_1.isViewport)(model)) {
// copy the viewport as we do want the Bookmark to stay where we are now
this.bookmark = new Bookmark({ scroll: model.scroll, zoom: model.zoom });
this.actionDispatcher.dispatch(AddBookmarkAction.create(this.bookmark));
}
return model;
}
undo(context) {
var _a;
if ((_a = this.bookmark) === null || _a === void 0 ? void 0 : _a.bookmarkIndex) {
this.actionDispatcher.dispatch(DeleteBookmarkAction.create(this.bookmark.bookmarkIndex));
}
return context.root;
}
redo(context) {
if (this.bookmark) {
this.actionDispatcher.dispatch(AddBookmarkAction.create(this.bookmark));
}
return context.root;
}
};
exports.CreateBookmarkCommand = CreateBookmarkCommand;
CreateBookmarkCommand.KIND = CreateBookmarkAction.KIND;
__decorate([
(0, inversify_1.inject)(sprotty_1.TYPES.IActionDispatcher),
__metadata("design:type", sprotty_1.ActionDispatcher
// the created bookmark for us to be able to perform the undo/redo
// undo relies on the fact that this is the same object that is stored in the registry
// and we are able to observe the assigned id through this reference
)
], CreateBookmarkCommand.prototype, "actionDispatcher", void 0);
exports.CreateBookmarkCommand = CreateBookmarkCommand = __decorate([
(0, inversify_1.injectable)(),
__param(0, (0, inversify_1.inject)(sprotty_1.TYPES.Action)),
__metadata("design:paramtypes", [Object])
], CreateBookmarkCommand);
var AddBookmarkAction;
(function (AddBookmarkAction) {
AddBookmarkAction.KIND = 'add-bookmark';
function create(bookmark) {
return {
kind: AddBookmarkAction.KIND,
bookmark,
};
}
AddBookmarkAction.create = create;
/** Type predicate to narrow an action to this action. */
function isThisAction(action) {
return action.kind === AddBookmarkAction.KIND;
}
AddBookmarkAction.isThisAction = isThisAction;
})(AddBookmarkAction || (exports.AddBookmarkAction = AddBookmarkAction = {}));
var DeleteBookmarkAction;
(function (DeleteBookmarkAction) {
DeleteBookmarkAction.KIND = 'delete-bookmark';
function create(bookmarkIndex) {
return {
kind: DeleteBookmarkAction.KIND,
bookmarkIndex,
};
}
DeleteBookmarkAction.create = create;
/** Type predicate to narrow an action to this action. */
function isThisAction(action) {
return action.kind === DeleteBookmarkAction.KIND;
}
DeleteBookmarkAction.isThisAction = isThisAction;
})(DeleteBookmarkAction || (exports.DeleteBookmarkAction = DeleteBookmarkAction = {}));
var RenameBookmarkAction;
(function (RenameBookmarkAction) {
RenameBookmarkAction.KIND = 'rename-bookmark';
function create(bookmarkIndex, newName) {
return {
kind: RenameBookmarkAction.KIND,
bookmarkIndex,
newName,
};
}
RenameBookmarkAction.create = create;
/** Type predicate to narrow an action to this action. */
function isThisAction(action) {
return action.kind === RenameBookmarkAction.KIND;
}
RenameBookmarkAction.isThisAction = isThisAction;
})(RenameBookmarkAction || (exports.RenameBookmarkAction = RenameBookmarkAction = {}));
var GoToBookmarkAction;
(function (GoToBookmarkAction) {
GoToBookmarkAction.KIND = 'get-bookmark';
function create(bookmark) {
return {
kind: GoToBookmarkAction.KIND,
bookmark,
};
}
GoToBookmarkAction.create = create;
/** Type predicate to narrow an action to this action. */
function isThisAction(action) {
return action.kind === GoToBookmarkAction.KIND;
}
GoToBookmarkAction.isThisAction = isThisAction;
})(GoToBookmarkAction || (exports.GoToBookmarkAction = GoToBookmarkAction = {}));
class GoToBookmarkCommand {
constructor(action, animate) {
this.action = action;
this.animate = animate;
}
execute(context) {
const viewAction = sprotty_protocol_1.SetViewportAction.create(context.root.id, this.action.bookmark.place, {
animate: this.animate,
});
this.setCommand = new sprotty_1.SetViewportCommand(viewAction);
return this.setCommand.execute(context);
}
undo(context) {
return this.setCommand.undo(context);
}
redo(context) {
return this.setCommand.redo(context);
}
}
exports.GoToBookmarkCommand = GoToBookmarkCommand;
GoToBookmarkCommand.KIND = GoToBookmarkAction.KIND;
var SetInitialBookmarkAction;
(function (SetInitialBookmarkAction) {
SetInitialBookmarkAction.KIND = 'init-bookmark';
function create(bookmark) {
return {
kind: SetInitialBookmarkAction.KIND,
bookmark,
};
}
SetInitialBookmarkAction.create = create;
/** Type predicate to narrow an action to this action. */
function isThisAction(action) {
return action.kind === SetInitialBookmarkAction.KIND;
}
SetInitialBookmarkAction.isThisAction = isThisAction;
})(SetInitialBookmarkAction || (exports.SetInitialBookmarkAction = SetInitialBookmarkAction = {}));
//# sourceMappingURL=bookmark.js.map