Files
mixly3/common/modules/mixly-modules/common/statusbar.js
2024-07-19 10:16:00 +08:00

86 lines
2.1 KiB
JavaScript

goog.loadJs('common', () => {
goog.require('Mixly.XML');
goog.require('Mixly.Env');
goog.require('Mixly.Config');
goog.require('Mixly.EditorAce');
goog.require('Mixly.ContextMenu');
goog.require('Mixly.Menu');
goog.require('Mixly.Msg');
goog.require('Mixly.IdGenerator');
goog.provide('Mixly.StatusBar');
const {
XML,
Env,
Config,
EditorAce,
ContextMenu,
Menu,
Msg,
IdGenerator
} = Mixly;
const { USER } = Config;
class StatusBar extends EditorAce {
#contextMenu_ = null;
constructor() {
super();
this.#addContextMenu_();
}
init() {
super.init();
this.#toStatusBar_();
}
#addContextMenu_() {
this.#contextMenu_ = new ContextMenu(`div[page-id="${this.getId()}"]`);
let menu = new Menu();
menu.add({
weight: 0,
type: 'copy',
data: {
isHtmlName: true,
name: ContextMenu.getItem(Msg.Lang['editor.contextMenu.copy'], 'Ctrl+C'),
callback: (key, opt) => this.copy()
}
});
this.#contextMenu_.register('code', menu);
this.#contextMenu_.bind('getMenu', () => 'code');
}
#toStatusBar_() {
const editor = this.getEditor();
if (USER.theme === 'dark') {
editor.setOption('theme', 'ace/theme/tomorrow_night');
} else {
editor.setOption('theme', 'ace/theme/xcode');
}
editor.getSession().setMode("ace/mode/python");
editor.setReadOnly(true);
// editor.setScrollSpeed(0.3);
editor.setShowPrintMargin(false);
editor.renderer.setShowGutter(false);
editor.setOptions({
enableBasicAutocompletion: false,
enableSnippets: false,
enableLiveAutocompletion: false
});
editor.setHighlightActiveLine(false);
}
getContextMenu() {
return this.#contextMenu_;
}
dispose() {
this.#contextMenu_.dispose();
this.#contextMenu_ = null;
super.dispose();
}
}
Mixly.StatusBar = StatusBar;
});